TI毫米波雷达(二)—— out of box示例解析(一)
从开箱演示开始
开箱演示示例向我们展示了毫米波雷达的一种工作模式,我们可以通过学习此示例开始我们的毫米波雷达开发之旅。
TI RADAR-TOOLBOX中包含了out of box示例,当中的用户手册包含使用和开发两部分,可以让工程在系统上跑起来,并用GUI直观的展示了Demo的效果。
手撕代码
“废话不多说,上代码!”
学习一个平台开发的比较直接的方式就是看代码,如果代码还带详细的注释那就再好不过了。根据我们前面的了解,TI毫米波雷达由3各子系统组成,其中雷达子系统部分(Radar Subsystem - BIST Subsystem - BSS)已经由TI进行了编程,我们只需要了解API接口。我们需要编程的就是Master Subsystem和DSP Subsystem,对应的工程后缀名分别为mss和dss。
需要注意的是,示例工程并非基于裸机系统,而是基于TI的实时操作系统SYSBIOS。注意区分执行一次的任务和循环执行的任务。
mss_main.c
main()
main函数中执行的操作很简单,进行了必要的系统检查和设置,然后创建了示例初始化任务,转而在系统中运行初始化任务。
- 错误信号模块初始化
- SOC初始化
- 等待BSS上电完成
- 检查是否为安全设备,如果是则禁用JTAG防火墙、LOGGER防火墙方便测试
- 创建MmwDemo_initTask()任务
- 启动BIOS

MmwDemo_initTask()
此任务仅执行一次。用于进行外设初始化驱动、毫米波模块(MMWave_init)、数据路径模块(DPM_init),并创建后续任务。
- 初始化UART、GPIO、Mailbox、emda、LVDSStream
- 创建用于发送DPM_start、DPM_stop、DPM_ioctl完成信号的信号量
- 初始化毫米波控制模块
- 同步域之间控制模块的执行(重要)
- 创建毫米波控制任务
- 初始化数据路径模块
- 同步域之间控制模块的执行(重要)
- 创建数据路径模块任务
- 校准初始化
- 初始化周期分析器
- 初始化命令行模块

MmwDemo_CLIInit()
配置了命令行中的指令以及指令对应的函数句柄,并启动命令行任务。
MmwDemo_mmWaveCtrlTask()
此任务在无限循环中调用MMWave_execute()。TI在注释中称是为毫米波雷达控制提供执行环境。
mmwDemo_mssDPMTask()
此任务在无限循环中调用DPM_execute()。TI在注释中称是为数据路径管理器执行提供执行环境。
CLI_task()
此任务提供了一个用于配置雷达子系统(BSS)的命令行接口。当我们向毫米波雷达发送配置文件时,此命令行解析命令和参数,并调用对应的函数进行处理。此处工作量比较大,需要单独分析。
dss_main
main()
mian函数初始化了SOC,并创建任务MmwDemo_dssInitTask,启动BIOS。
MmwDemo_dssInitTask()
此任务仅执行一次。用于初始化驱动、数据路径管理模块、数据路径依赖的驱动(EDMA, HWA),并创建目标检测任务。
- 初始化邮箱
- 数据路径初始化(Demo中用到了硬件加速器HWA、EDMA)
- 数据路径开启(Demo中用到了硬件加速器HWA、EDMA)
- 数据路径管理模块初始化
- 同步域之间控制模块的执行(重要)
- 创建任务MmwDemo_DPC_ObjectDetection_dpmTask

MmwDemo_DPC_ObjectDetection_dpmTask()
此任务执行数据路径管理模块,将检测到的目标和其他结果传递给MSS。

总结
至此,开箱演示程序的框架已经梳理完成,下一步就是解析命令行如何解析指令并配置毫米波雷达和数据路径,再深入研究数据路径是如何获得目标数据的(处理算法由数据路径注册的目标检测数据处理链决定)。
更多推荐
所有评论(0)