从开箱演示开始

        开箱演示示例向我们展示了毫米波雷达的一种工作模式,我们可以通过学习此示例开始我们的毫米波雷达开发之旅。

        Out Of Box Demo User Guide

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函数中执行的操作很简单,进行了必要的系统检查和设置,然后创建了示例初始化任务,转而在系统中运行初始化任务。

  1. 错误信号模块初始化
  2. SOC初始化
  3. 等待BSS上电完成
  4. 检查是否为安全设备,如果是则禁用JTAG防火墙、LOGGER防火墙方便测试
  5. 创建MmwDemo_initTask()任务
  6. 启动BIOS

MmwDemo_initTask()

        此任务仅执行一次。用于进行外设初始化驱动、毫米波模块(MMWave_init)、数据路径模块(DPM_init),并创建后续任务。

  1. 初始化UART、GPIO、Mailbox、emda、LVDSStream
  2. 创建用于发送DPM_start、DPM_stop、DPM_ioctl完成信号的信号量
  3. 初始化毫米波控制模块
  4. 同步域之间控制模块的执行(重要)
  5. 创建毫米波控制任务
  6. 初始化数据路径模块
  7. 同步域之间控制模块的执行(重要)
  8. 创建数据路径模块任务
  9. 校准初始化
  10. 初始化周期分析器
  11. 初始化命令行模块

        

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),并创建目标检测任务。

  1. 初始化邮箱
  2. 数据路径初始化(Demo中用到了硬件加速器HWA、EDMA)
  3. 数据路径开启(Demo中用到了硬件加速器HWA、EDMA)
  4. 数据路径管理模块初始化
  5. 同步域之间控制模块的执行(重要)
  6. 创建任务MmwDemo_DPC_ObjectDetection_dpmTask

MmwDemo_DPC_ObjectDetection_dpmTask()

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

总结

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

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐