other parts discussed in post: awr6843isk, uniflash, iwr6843
作者:chris meng
毫米波的软件包mmwave sdk里有很多驱动的测试代码,包括外设驱动,mmwave link驱动等。例如\packages\ti\control\mmwavelink\test\xwr68xx目录下的测试代码。这些测试代码都需要编译生成mss或者dss的可以执行文件,然后通过ccs下载到板子上运行。但如果ti的毫米波评估板或者客户的板子上没有jtag口/仿真器,那就不能方便的使用这些测试代码了。本文就是基于这个问题,尝试把mss的测试代码直接烧写到qspi flash上运行,并且通过gpio点灯的状态来反映测试情况,来解决没有jtag/仿真器情况下的测试问题。
本文运行环境,硬件:awr6843isk revc;软件:mmwave_sdk_03_04_00_03。
首先需要在命令行下编译出测试需要的mss可执行文件。
以xwr6843的link test为例,用户可以在测试代码里面添加gpio点灯的功能,来反映测试状态。例如可以根据自己的需求在某个测试通过后点亮led灯,从而获知测试的结果。下面是本文尝试修改点灯的相关代码。实现的功能是上电后关闭led,表示测试开始。最后mmwavelink测试全部结束后,灯会再次亮起。本文利用的是awr6843isk上的d7 led,使用gpio_2来控制灯的点亮和关闭,如图1所示。
图1 测试使用的awr6843isk revc上的led
1. 修改测试文件
c:\ti\mmwave_sdk_03_04_00_03\packages\ti\control\mmwavelink\test\xwr68xx\ main_mss.c
a. 在文件开始的位置添加包含gpio驱动的头文件相关代码:
#include
b. 在mmwavelink_inittask()函数开始位置添加gpio初始化和关闭led的代码。
gpio_init();
pinmux_set_overridectrl(soc_xwr68xx_pink13_padaz, pinmux_outen_retain_hw_ctrl, pinmux_inpen_retain_hw_ctrl);
pinmux_set_funcsel(soc_xwr68xx_pink13_padaz, soc_xwr68xx_pink13_padaz_gpio_2);
gpio_setconfig(soc_xwr68xx_gpio_2, gpio_cfg_output);
gpio_write(soc_xwr68xx_gpio_2, 0u);
c. 在mmwavelink_inittask()函数结尾位置添加gpio点亮led灯的代码。
gpio_write(soc_xwr68xx_gpio_2, 1u);
2. 修改msstest.mak,在编译器连接时添加gpio库和include路径(标黄相关代码)。
mmwave_mss_unit_test_std_libs = $(r4f_common_std_lib) \
-llibpinmux_$(mmwave_sdk_device_type).$(r4f_lib_ext) \
-llibcrc_$(mmwave_sdk_device_type).$(r4f_lib_ext) \
-llibmailbox_$(mmwave_sdk_device_type).$(r4f_lib_ext) \
-llibtestlogger_$(mmwave_sdk_device_type).$(r4f_lib_ext) \
-llibadcbuf_$(mmwave_sdk_device_type).$(r4f_lib_ext) \
-llibedma_$(mmwave_sdk_device_type).$(r4f_lib_ext) \
-llibmmwavelink_$(mmwave_sdk_device_type).$(r4f_lib_ext) \
-llibgpio_$(mmwave_sdk_device_type).$(r4f_lib_ext)
mmwave_mss_unit_test_loc_libs = $(r4f_common_loc_lib) \
-i$(mmwave_sdk_install_path)/ti/drivers/pinmux/lib \
-i$(mmwave_sdk_install_path)/ti/drivers/adcbuf/lib \
-i$(mmwave_sdk_install_path)/ti/drivers/crc/lib \
-i$(mmwave_sdk_install_path)/ti/drivers/mailbox/lib \
-i$(mmwave_sdk_install_path)/ti/utils/testlogger/lib \
-i$(mmwave_sdk_install_path)/ti/drivers/edma/lib \
-i$(mmwave_sdk_install_path)/ti/control/mmwavelink/lib \
-i$(mmwave_sdk_install_path)/ti/drivers/gpio/lib
3. 单独编译测试代码(不编译相关库)。
a. 首先需要设置好编译的环境变量,方法和编译mmw demo时候的环境变量设置方法一致。具体请参考c:\ti\mmwave_sdk_03_04_00_03\docs\ mmwave_sdk_user_guide.pdf的设置环境变量章节的内容(4. 5. 2. setting up build environment)。基本流程如下:
修改c:\ti\mmwave_sdk_03_04_00_03\packages\scripts\windows\setenv.bat,例如:set mmwave_sdk_device=awr68xx。 在dos命令行窗口切换到setenv.bat所在目录,并且运行setenv.bat。 b. 然后在同一个窗口下使用命令切换到link test目录,例如:
cd c:\ti\mmwave_sdk_03_04_00_03\packages\ti\control\mmwavelink 并执行下面的代码。
gmake msstestclean
gmake msstest
c. 编译结束后,会在c:\ti\mmwave_sdk_03_04_00_03\packages\ti\control\mmwavelink\test\xwr68xx目录下生成更新的可执行文件:xwr68xx_link_mss.xer4f。
接下来是生成可以烧写到qspi flash的bin文件。
1.首先复制mss可执行xwr68xx_link_mss.xer4f文件到c:\ti\mmwave_sdk_03_04_00_03\packages\scripts\imagecreator目录。
2.然后复制bss firmware c:\ti\mmwave_sdk_03_04_00_03\firmware\radarss\ xwr6xxx_radarss_rprc.bin到同一目录。
3.接下来将编译脚本image_create_mss_only.bat也复制到相同目录。image_create_mss_only.bat编译脚本的具体内容如下:
cd out2rprc
out2rprc.exe ..\%1 ..\mss_rprc.bin
cd ..\
cd multicore_image_generator
multicoreimagegen.exe le 37 0x02000006 ..\metaimage.bin 0x35510000 ..\mss_rprc.bin 0xb5510000 ..\xwr6xxx_radarss_rprc.bin
cd ..\
cd crc_multicore_image
crc_multicore_image.exe ..\metaimage.bin 0
cd ..\
cd append_bin_crc
gen_bincrc32.exe ..\metaimage.bin
cd ..\
4.接下来在dos命令行窗口切换到imagecreator这个目录
cd c:\ti\mmwave_sdk_03_04_00_03\packages\scripts\imagecreator
然后运行下面的命令:
image_create_mss_only.bat xwr68xx_link_mss.xer4f
5.运行结束后会在同一个目录下生成metaimage.bin,用于qspi flash烧写。
最后使用uniflash将metaimage.bin烧录到iwr6843板子上的qspi flash上,然后运行。
这个mmwavelink测试代码的运行时间较长,大概在20s以内会看到led灯点亮。
总结:
本方法也同样适用于其他测试例程以及其他毫米波芯片。如果更换毫米波芯片,请注意复制正确的bss firmware到imagecreator目录,并修改image_create_mss_only.bat里面bss firmware的文件名。
德邦启动无人机试运行,为最后一公里的配送提出前瞻性的解决方案
MC56F80xxx DSC:高性能、低成本的数字电源和电机控制开发,就选它!
2017年整体TLC-SSD出货比重将超过75%
pcb仿真软件
取消随机赠送的充电器将是手机行业新的潮流?
在 QSPI flash 上运行毫米波芯片的测试代码
CES 2021有哪些技术可缓解新冠疫情?
华为麒麟960为安卓最佳芯片? 网友说的一针见血
水质在线监测系统的简单介绍
大事件:华为要卖车了 中国建成全球规模最大的5G移动网络
攻克小型电池供电器件中低静态电流的设计挑战
三星打孔技术让瀑布屏和物理按键可兼得
java中几种常用数据结构
总结这赋予 UI 以个性的10个方式,帮助UI设计变得更加有趣
怎么在Excel中一列分成多列的办法
中国联通、GDERNET和华为荣获2023亚洲移动大奖
新能源汽车下乡:充电桩智能监控管理运维系统解决方案
天线设计:发射/接收开关的工作原理
Marvell 发布针对Chromecast电视棒的全新ARMADA 1500
关于DDS信号源在扫频测试的作用分析和介绍