毫米波SDK使用2

5.5 毫米波SDK-TI组件

        毫米波SDK功能分解成组件将在接下来的几小节中解释。有关这些模块的详细文档,请参阅位于mmwave_mcuplus_sdk_<ver>/docs/mmwave_sdk_module_document .html的顶层文档。

5.5.1 演示

5.5.1.1 毫米波演示

      这个演示位于mmwave_mcuplus_sdk_<ver>/ti/demo/<platform>/mmw文件夹。毫米波演示展示了使用毫米波SDK(软件开发工具包)中的驱动程序的SoC的一些雷达传感和目标检测功能。它允许用户指定chirp配置文件,并实时显示检测到的对象和其他信息。这个演示的详细说明可以在演示的docs文件夹中找到,可以通过mmwave_mcuplus_sdk_<ver>/docs/mmwave_sdk_module_document .html浏览(演示的内容如下面的截图所示)。本节捕获在各种毫米波设备上支持的演示的高级布局。有关各个组件(控制层、数据路径层等)的详细信息,请参阅“毫米波SDK - TI组件”下的其余子节。

5.5.2 驱动

      驱动程序封装了系统中各种硬件IP的功能,并为更高层提供了定义良好的API。与以前版本的SDK不同,驱动程序是随SDK包一起安装的PDK的一部分。驱动程序被设计为通过使用OSAL层与操作系统无关。下图显示了SDK中使用的典型内部软件块。有关详细信息,请参阅PDK文档。

5.5.2.1 OSAL

      mmWave SDK中存在一个OSAL层,以提供基本组件(驱动程序、mmWaveLink、mmWaveAPI)的操作系统无关特性。这个协议为一些常见的操作系统服务提供了一个抽象层:信号量、互斥锁、调试、中断、时钟、内存、周期分析器。OSAL层的源代码和文档是PDK的一部分,它随SDK包(<pdk_path>\packages\ti\osal)一起安装。有关详细信息,请参阅PDK文档。

5.5.3 毫米波连接mmWaveLink

      mmWaveLink是一个控制层,主要实现用于雷达子系统(RADARSS)和控制实体之间通信的协议,控制实体可以是主子系统(MSS R5F)和/或DSP子系统(DSS C66x)。它提供了一套低级API,应用程序(或其上的软件层)可以调用这些API来启用/配置/控制RADARSS。它为应用程序提供了一个定义良好的接口,以便插入正确的通信驱动程序API以与RADARSS通信。它作为Radar SS的驱动程序,公开Radar SS的服务,包括配置Radar SS硬件块的API,并提供MSS/DSS与Radar SS之间的消息传输通信协议。

      毫米波链路是DFP包的一部分。请参考mmwave_dfp_<version>\docs文件夹获取更多信息AWR294X和AM273X+AWR2243的DFP版本不同

5.5.4 毫米波API

      mmWaveAPI是运行在mmWaveLink和LLD API(驱动程序API)之上的更高层的控件。它旨在以更简单和更少的API集的形式为应用程序提供抽象层,以执行毫米波雷达传感任务。在具有双核的毫米波设备中,它还在IPC上提供了一个抽象层,以在MSS和DSS域之间同步和传递配置。毫米波API层的源代码在mmwave_mcuplus_sdk_<ver>\ti\control\毫米波文件夹中。该API的文档可通过位于mmwave_mcuplus_sdk_<ver>\ti\control\mmwave\docs\doxygen\html\index.html的doxygen文件获取,并可通过mmwave_mcuplus_sdk_<ver>\docs\mmwave_sdk_module_document .html轻松浏览。组件的单元测试代码(运行在SYSBIOS之上)也作为包的一部分提供:mmwave_mcuplus_sdk_<ver>\ti\control\mmwave\test\。

图5-24 毫米波API-内部软件设计

      毫米波模块提供了两种配置模式。

5.5.4.2 完整配置

      “完整”配置模式实现毫米波前端的基本chirp/帧序列,是使用基本chirp/帧配置时应用程序的推荐模式。在此模式下,应用程序将使用毫米波控制模块提供的整套服务。这些功能包括:

  • mmWaveLink的初始化
  • MSS和DSS之间的同步服务
  • 异步事件管理
  • 启动和停止服务
  • 配置的RADARSS帧,先进的帧,先进的chirp与传统的帧,先进的chirp与先进的帧和连续模式
  • MSS和DSS同步配置

      在完整配置模式下,可以创建具有多个chirp的多个配置文件。为此添加了以下API:

Chirp管理:
  • MMWave_addChirp
  • MMWave_delChirp
配置文件管理:
  • MMWave_addProfile
  • MMWave_delProfile
高级Chirp管理:
  • MMWave_addAdvChirpParam
  • MMWave_addAdvChirpLUTData
  • MMWave_delAdvChirp
注意:毫米波前端校准

      默认情况下,mmWave API启用mmWave前端的所有init/boot time时间校准。用户可以在MMWave_open API中提供自定义校准掩码和/或提供预先存储校准数据的缓冲区。

      当应用程序在MMWave_start API调用中请求一次性和周期性校准时,毫米波API为毫米波前端启用所有可用的一次性和周期性校准。

      mmWave API不通过其任何API暴露mmWaveLink的LDO旁路API (rlRfSetLdoBypassConfig/rlRfLdoBypassCfg_t)。如果应用程序需要此功能(无论是由于TI EVM/自定义板上使用的射频电源电压还是从监控的角度),用户应该参考mmwave_doxygen(mmwave_mcuplus_sdk_<ver>\ TI \control\mmwave_doxygen\docs\ doxygen\html\index.html)关于此API的使用情况,并在调用MMWave_open()之前从其应用程序调用此API。

      mmWave_open

      虽然提供了mmWave_close API,但建议每个传感器的电源周期只执行一次mmWave_open。

5.5.5 数据路径接口(DPIF)

      DPIF定义了检测处理链中的标准接口点,这些接口点将对应于上图所示的可扩展链中的“蓝色”框。这一层定义的关键接口有:

  • 输入ADC数据
  • 雷达立方体
  • 检测矩阵
  • 点云和它的侧面信息

      DPIF的源代码位于mmwave_mcuplus_sdk_<ver>\ti\datapath\ DPIF文件夹中。

5.5.6 数据处理单元(dpu)

      从一个接口点到另一个接口点的数据转换功能称为“数据处理单元”。将数据处理链拆分为多个处理单元,可以促进跨多个链重用某些处理块。关于这些模块的详细文档可以通过mmwave_mcuplus_sdk_<ver>/ docs/mmwave_sdk_module_document .html轻松浏览。

  • 距离处理(ADC数据到雷达立方):该处理单元在活动帧时间内对chirp(RF)数据进行(1D FFT+可选直流距离校准)处理,并在雷达立方中产生处理后的数据。这个处理单元在毫米波SDK中是标准化的。它提供了基于HWA的实现。基于HWA的实现可以在R5F或C66x上实例化。Range DPU的源代码位于mmwave_mcuplus_sdk_<ver>\ti\datapath\ DPU \rangeproc文件夹中。API的文档可通过doxygen获得,并放置在mmwave_mcuplus_sdk_<ver>\ti\datapath\dpu\rangeproc\docs\doxygen\html\index.html。组件的单元测试代码(运行在SYSBIOS之上)也作为包的一部分提供:mmwave_mcuplus_sdk_<ver>\ti\datapath\dpu\rangeproc\ test\。
  • 多普勒处理(雷达立方体到检测矩阵):该处理单元在帧间和生成的检测矩阵中对雷达立方体进行(二维FFT +能量和)处理。除此之外,当启用静态杂波去除时,该处理单元从雷达立方体读取距离FFT数据并执行静态杂波去除,然后执行二维FFT +能量和处理。这个处理单元是作为参考实现提供的,SDK的用户可以在他们的应用程序/处理链中重用这些单元,也可以根据他们的特定需求创建这些单元的变体。基于HWA的实现可以在R5F或C66x上实例化。基于DSP的实现结合了静态杂波算法以获得最佳内存/MIPS利用率,用户可以跳过使用独立的静态杂波DPU。多普勒DPU的源代码在mmwave_mcuplus_sdk_<ver>\ti\datapath\dpc\ DPU \dopplerproc文件夹中。API的文档可通过doxygen获得,并放置在mmwave_mcuplus_sdk_<ver>\ti\datapath\dpc\dpu\dopplerproc\docs\doxygen\html\index.html。
  • CFAR + AoA (检测矩阵到点云):它们作为两个独立的DPU提供,在帧间对检测矩阵共同运行CFAR算法、峰值聚合、视场滤波、多普勒补偿、最大速度增强和角度(方位角+仰角)估计来产生点云。这些处理单元是作为参考实现提供的,SDK的用户可以在他们的应用程序/处理链中重用这些单元,也可以根据他们的特定需求创建这些单元的变体。基于HWA的实现可以在R5F或C66x上实例化。
    • CFAR DPU的源代码位于mmwave_mcuplus_sdk_<ver>\ti\datapath\dpc\DPU\cfarproc文件夹中。API的文档可通过doxygen获得,并放置在mmwave_mcuplus_sdk_<ver>\ti\datapath\dpc\dpu\cfar proc\docs\doxygen\html\index.html。组件的单元测试代码(运行在SYSBIOS之上)也作为包的一部分提供:mmwave_mcuplus_sdk_<ver>\ti\ datapath\dpc\dpu\cfarproc\ test\。
    • AoA DPU的源代码在mmwave_sdk_<ver>\ti\datapath\dpc\ DPU \aoaproc文件夹中。API的文档可通过doxygen获得,并放置在mmwave_mcuplus_sdk_<ver>\ti\datapath\dpc\dpu\aoaproc\docs\doxygen\html\index.html。组件的单元测试代码(运行在SYSBIOS之上)也作为包的一部分提供:mmwave_mcuplus_sdk_<ver>\ti\ datapath\dpc\dpu\aoaproc\ test\。 

      每个DPU呈现以下高层级设计:

图5-25 DPU-内部软件设计

  • 所有外部DPU API都以前缀DPU_开头。DPU唯一名称紧随其后。
  • 例:DPU_RangeProcHWA_init
  • 标准的外部API: init, config, process, ioctl, deinit由每个DPU提供。
    • Init:对DPU进行一次性初始化
    • 配置:DPU的完整配置:硬件资源,静态和动态(如果DPU支持)
      • 静态配置:在正在进行的帧中保持静态的配置
      • 动态配置:配置可以从一个帧到另一个帧改变,但只有在进程不进行时-理想情况下,在DPC为该帧导出结果后的帧间时间
    • Process: DPU的实际处理功能
    • Ioctl:控制接口,允许上层在帧间时间内切换动态配置
    • De-init: DPU去初始化
  • 所有I/O缓冲区和划痕缓冲区的内存分配都在DPU之外,因为毫米波应用程序依赖内存覆盖技术进行优化,最好在应用程序级别处理。
  • 所有的H/W资源必须由应用程序分配并传递给DPU。这有助于保持DPU平台无关性,并允许应用程序在DPU处理没有及时重叠时跨DPU共享资源。
  • DPU与操作系统无关,并为所需的操作系统服务使用OSAL API。

      DPU的典型调用流可以表示如下。关于chirp/frame的配置和进程API调用的时间将根据DPU功能、它在链中的使用、DPC实现和硬件资源的重叠而变化。

图5-26 DPU-典型调用流

5.5.7 数据路径管理器(DPM)

      DPM是支持体系结构“可伸缩性”方面的基础层。这一层吸收了所有的消息传递复杂性(跨核心和内部核心),并为应用程序级别的集成以及集成任何“数据处理链”提供了标准的API。应用层将能够从任何域(MSS或DSS)调用DPM API,并控制“数据处理链”的配置和执行。DPM提供的API可在MSS和DSS上使用。它可以满足(但不限于)的各种部署:

  • R5F上的数据路径控制和数据路径执行在R5F/HWA和DSP(分布式)之间分离
  • R5F上的数据路径控制和使用HWA (本地)在R5F上执行数据路径
  • R5F上的数据路径控制和数据路径执行在DSP上(带或不带HWA)(远程)
  • 数据路径控制在DSP上,数据路径执行在DSP+HWA (本地)上
  • 数据路径控制在DSP上,数据路径执行在DSP上(本地)

图5-27 数据路径管理(DPM)-内部软件设计

      DPM的源代码在mmwave_mcuplus_sdk_<ver>\ti\control\ DPM文件夹中。API的文档可通过doxygen获得,并放置在mmwave_mcuplus_sdk_<ver>\ti\ control\dpm\docs\doxygen\html\index.html。组件的单元测试代码(运行在SYSBIOS之上)也作为包的一部分提供:mmwave_mcuplus_sdk_<ver>\ti\ control\dpm\test\。

5.5.8 数据处理链(DPC)

      DPC是数据路径中的一个独立层,它封装了毫米波应用程序的所有数据处理需求,并为与应用程序集成提供了一个定义良好的接口。在SDK中,有一个参考实现对应于通用的“对象检测”链,它已经是过去版本中OOB演示的一部分。此链将符合标准DPM指定的API定义。在内部,这一层将使用数据处理单元(DPU)、数据路径接口和数据路径管理器(DPM)公开的功能来实现“目标检测”链所需的数据流。目标检测DPC的源代码位于mmwave_mcuplus_sdk_<ver>\ti\datapath\ DPC \objectedetection文件夹中。该API的文档可通过位于mmwave_mcuplus_sdk_<ver>\ti\datapath\dpc\objectedetection\deployment_type>\docs\doxygen\html\index.html的doxygen文件获取,并可通过mmwave_mcuplus_sdk_<ver>/ docs/mmwave_sdk_module_document .html轻松浏览。在SYSBIOS之上运行的组件的单元测试代码也作为包mmwave_mcuplus_sdk_<ver>\ti\datapath\dpc\objectedetection\objdethwa \test\的一部分提供。有关此测试的详细信息,请参阅使用测试矢量方法进行数据路径测试一节。

5.5.9 Board/EVM配置

      有关Board /EVM特定信息,请参阅PDK文档和<pdk_path>\packages\ti\ Board目录了解更多详细信息。关于Board /EVM的天线配置,请参考<sdk_path>\ti\ Board文件夹。

5.5.10 mmWaveLib

      mmWaveLib是一个算法集合,提供了FMCW雷达立方体处理所需的基本功能。它包含仅针对C66x DSP架构的优化库例程。该组件不适用于cortex R5F (MSS)。这些例程不封装任何数据移动/数据放置功能,而是应用程序代码负责将输入和输出缓冲区放置在正确的内存中(例如:L2),并根据需要使用EDMA进行数据移动。mmwave_mcuplus_sdk_<ver>\packages\ti\alg\mmwavelib文件夹中有mmwave_mcuplus_sdk的源代码。该API的文档可通过位于mmwave_mcuplus_sdk_<ver>\packages\ti\alg\mmwave_lib\docs\doxygen\html\index.html的doxygen文件获取,并可通过mmwave_mcuplus_sdk_<ver>/docs/mmwave_sdk_module_document .html轻松浏览。在SYSBIOS之上运行的组件的单元测试代码也作为包的一部分提供:mmwave_mcuplus_sdk_<ver>\packages\ti\alg\ mmwave_mcuplus_sdk_<ver>\packages\ti\alg\ mmwavelib \test\。

      库支持的功能:

  • 提供FMCW雷达立方体处理所需的基本功能的算法集合。
    • 加窗(16位复数输入,16位复数输出,16位加窗实数数组)
    • 加窗(16位复数输入,32位复数输出,32位加窗实数数组)
    • 32位复数的绝对值Log2
    • 矢量运算(累加)
    • CFAR-CA, CFAR-CASO, CFAR-CAGO(对数输入样本)
    • 长度为8的输入向量的16点FFT(其他FFT例程作为DSPLib的一部分提供)
    • 输入序列在一个特定索引处的单个DFT值
    • 32 × 32和16 × 16 FFT的摇摆表生成:优化了dsplib的等效函数,用于生成摇摆因子
    • FFT加窗系数生成
    • 生成DFT正弦/余弦表用于DFT单个bin计算
    • 带窗的单个bin的DFT
    • 由于DSPLib中的大多数定点FFT函数只支持一种复杂类型的格式,因此使用I/Q交换来改变窗函数。
  • CFAR算法
    • 浮点CFAR-CA:
      • mmwavelib_cfarfloat_call支持CFAR单元平均、单元累积、SO、GO算法,输入信号为浮点格式;
      • mmwavelib_cfarfloat_caall_opt实现了与mmwavelib_cfarfloat_call相同的功能,只是周期更少,但检测到的对象不会按升序排列。
      • mmwavelib_cfarfloat_wrap实现了与mmwavelib_cfarfloat_call相同的功能,除了边缘样本的噪声样本是另一边缘的圆形样本。
      • mmwavelib_cfarfloat_wrap_opt实现了与mmwavelib_cfarfloat_wrap相同的功能,只是周期更少,但检测到的对象不会按升序排列。
    • CFAR-OS:有序统计CFAR算法
      • mmwavelib_cfarOS接收定点输入数据(天线上累积的16位对数幅度)。搜索窗口大小在编译时定义。
    • CFAR后处理的峰值修剪
      • mmwavelib_cfarPeakPruning:接收检测矩阵并将相邻的峰分组为一个。
      • mmwavelib_cfarPeakQualifiedInOrderPruning:接收CFAR检测到的对象列表,并将相邻的峰值分组为一个。
      • mmwavelib_cfarPeakQualifiedPruning:与mmwavelib_cfarPeakQualifiedOrderPruning相同,但没有假设cfar检测到的峰值的顺序
  • 浮点AOA估计:
    • mmwavelib_aoaEstBFSinglePeak实现了Bartlett波束形成算法,用于检测单个目标的AOA估计,并输出检测角度的方差。
    • mmwavelib_aoaEstBFSinglePeakDet实现了mmwavelib_aoaEstBFSinglePeak的保存功能,没有检测角度计算的方差。
    • mmwaveib_aoaEstBFMultiPeak也实现了Bartlett波束形成算法,但具有多个检测角度,它还输出每个检测角度的方差。
    • mmwavelib_aoaEstBFMultiPeakDet实现了与mmwavelib_aoaEstBFMultiPeak相同的功能,但没有每个检测角度的方差输出。
  • DBSCAN聚类:
    • mmwavelib_dbscan实现了基于密度的应用空间聚类与噪声(DBSCAN)数据聚类算法。
    • mmwavlib_dbscan_skipFoundNeiB也实现了DBSCAN聚类算法,但是在扩展集群时,它会跳过已经找到的邻居。
  • 杂波清除:
    • mmwavelib_vecsum:对16位复向量中的元素求和。
    • mmwavelib_vecsubc:从16位复向量的每个元素中减去const值。
  • 加窗
    • mmwavelib_windowing16xl6_evenlen:支持2倍长度(输入复杂元素的数量),mmwavelib_windowing16x16支持8倍长度。
    • mmwavelib_windowing16x32:更新后支持4的倍数长度(输入复杂元素的数量)。之前是8的倍数。
  • 浮点加窗:
    • mmwavelib_windowing1DFltp:支持定点信号入窗,和浮点信号出窗,为1D FFT准备浮点数据。
    • mmwavelib_chirpProcWin2DFxdpinFltOut, mmwavelib_dopplerProcWin2dFxdpinFltout:为2D FFT准备浮点数据,定点输入。不同之处是mmwavelib_chirpProcWin2DFxdpinFltout是每个chirp bin完成的,而mmwavelib_dopplerProcWin2DFxdpinFltout是每个多普勒bin完成的。
    • mmwavelib_windowing2DFltp:浮点信号输入,浮点信号输出窗口,为2D FFT准备浮点数据。
  • 向量运算
    • 浮点和定点功率积累:积累信号功率。还提供了用于右移输出矢量以及累加的备用API。
    • 直方图:mmwavelib_histogram右移无符号16位矢量并计算直方图。
    • 对有符号16位矢量或有符号32位矢量进行右移操作
      • mmwavelib_shiftright16将输入向量中的每个有符号16位元素右移k位
      • mmwavelib_shiftright32将输入向量中的每个带符号32位元素右移k位
      • mmwavelib_shiftright32to16右移32位向量到16位向量
    • 复向量元素明智的乘法。
      • mmwavelib_vecmul16x16:将两个16位复向量逐个元素相乘。16位复数输出写入第一个输入向量。
      • mmwavelib_vecmul16x32, mmwavelib_vecmul16x32_anylen:将16位复向量与32位复向量逐元素相乘,输出为32位复输出向量。
      • mmwavelib_vecmul32x16c:将32位复向量与16位复常数相乘。
    • 16位向量元素的绝对值之和
      • mmwavelib_vecsumabs返回32位之和
    • 最大功率搜索32位复数数据
      • mmwavelib_maxpow输出找到的最大功率并返回复样本的相应索引
      • mmwavelib_powerAndMax:结合最大功率搜索的功率计算
    • 对32位浮点向量的方位角估计的峰值搜索
      • mmwavelib_multiPeakSearch:在方位角FFT输出中进行多峰搜索
      • mmwavelib_secondPeakSearch:方位角FFT输出中的第二个峰值搜索
    • 32位浮点复向量上的直流(天线耦合特征)去除
    • 16位向量的向量减法
  • 矩阵的实用程序
    • 32位矩阵的矩阵转置:类似于DSPLib函数,但针对行大于列的矩阵进行了优化

5.5.11 组跟踪

      该算法旨在跟踪多个目标,其中每个目标由一组测量点(CFAR检测层的点云输出)表示。每个测量点都携带探测信息,如距离、角度、径向速度等。该算法不是跟踪单个反射,而是预测和更新群体的位置和色散属性。组被定义为一组测量值(通常是几十个;有时有几百个)与现实生活中的目标有关。R5F和C66x都支持该算法。gtrack的源代码在mmwave_mcuplus_sdk_<ver>\packages\ti\alg\gtrack文件夹中。该API的文档可通过位于mmwave_mcuplus_sdk_<ver>\packages\ti\alg\gtrack \docs\doxygen<2d|3D>\html\index.html的doxygen文件获取,并可通过mmwave_mcuplus_sdk_<ver>\docs\mmwave_sdk_module_document .html轻松浏览。在SYSBIOS之上运行的组件的单元测试代码也作为包的一部分提供:mmwave_mcuplus_sdk_<ver>\packages\ti\alg\gtrack\test\。

5.5.12 CCS调试实用工具

      这是一个简单的二进制文件,可以刷写到电路板上,以促进使用TI Code Composer Studio (CCS)开发毫米波应用程序的阶段。详见CCS开发模式。R5F (MSS)和C6 (DSS)都有一个可执行文件,并组合成一个元图像,用于与RADARSS固件一起刷写。当用于CCS调试的appimage刷写到EVM上时,可以在Code Composer Studio上连接、重置内核,并将程序加载到内核上

5.5.13 HIS Header工具

      为用户提供了一个可选的实用程序库,用于创建可以附加到通过LVDS传送的数据的头文件。该库接受CBUFF会话配置,并创建一个填充了适当信息的头,并将其传递回调用应用程序。然后,调用应用程序可以将这个创建的头提供给CBUFF API。头中的这个配置旨在帮助用户解析接收端的LVDS。此实用程序的源代码位于mmwave_mcuplus_sdk_<ver>\packages\ti\utils\hsiheader文件夹中。该API的文档可通过位于mmwave_mcuplus_sdk_<ver>\packages\ti\utils\hsiheader\docs\doxygen\html\index.html的doxygen文件获取,并可通过mmwave_mcuplus_sdk_<ver>\docs\mmwave_sdk_module_document .html轻松浏览。请注意,HSI Header实用程序目前可用于CBUFF流测试用例,但不能用于AWR294X的OOB演示。

5.5.14 PMIC读写工具(AWR2544)

      这是一个通用的应用程序,可用于配置PMIC。它可以根据用户输入执行以下功能:

      1.读取所有寄存器:读取并打印UART接口上的所有99个PMIC寄存器内容

      2.向寄存器写入:向用户提供的寄存器地址写入,并回读寄存器内容以验证写入的值。

      3.读取寄存器:在UART接口上读取并打印用户提供的寄存器地址。此实用程序的源代码位于mmwave_mcuplus_sdk_<ver>\ti\utils\test\pmic_read_write文件夹中。文档可通过位于mmwave_mcuplus_sdk_<ver>\ti\utils\test\pmic\docs\doxygen\html\index.html的doxygen文件获取,并可通过mmwave_mcuplus_sdk_<ver>\docs\mmwave_sdk_module_document .html进行浏览。

5.5.15 二级引导装载程序

      在SDK中提供了一个简单的元图像创建实用程序(mmwave_mcuplus_sdk_<ver>\scripts\unix\generateMetaImage.sh用于unix和mmwave_mcuplus_sdk_<ver>\scripts\windows\generateMetaImage.bat用于windows)。SBL的源代码是PDK的一部分,可以在<pdk_path>\packages\ti\boot\ SBL文件夹中找到。有关详细信息,请参阅PDK文档。

5.5.16 毫米波SDK-系统初始化

      应用程序应该调用Board_init API来启用设备的正确操作。有关更多信息,请参阅PDK文档。

      Pinmux模块的源代码由sysconfig生成。请参考MCU PLUS SDK文档和用户指南了解更多详细信息。

5.5.17 用例

      在毫米波器件上进行一维、二维和三维处理的数据路径处理由MSS、HWA/DSS和EDMA之间的协调执行组成。这是演示作为目标检测处理链和毫米波演示的一部分。该演示是实时运行的,并具有RADARSS控制等所有相关框架。

      位于mmwave_mcuplus_sdk_<ver>\ti\datapath\dpc \objectdetection\<chain_type>\test)的单元测试是允许非实时执行数据路径处理链的独立测试。这允许开发人员将其用作调试/开发辅助工具,最终使数据路径处理具有真实的chirp。开发人员可以很容易地进入代码并根据已知的输入信号进行测试。目标检测链和处理模块(DPU)的核心数据路径处理源代码在本次测试和毫米波演示之间共享。因此,大多数文档也是共享的,可以在目标检测DPC和mmw演示文档中查找。

      测试还提供了一个测试发生器,它允许用户在所需的距离、多普勒和方位角箱和噪声水平上人为地设置目标,以便可以根据这些设置检查输出。它可以生成一帧数据。测试生成和验证被集成到测试中,允许开发人员运行包含输入向量的单个可执行文件,并验证输出(在数据路径处理链之后),从而在测试结束时声明通过或失败。测试生成器的详细信息可以在这些测试的doxygen文档中看到,位于mmwave_mcuplus_sdk_<ver>\ti\datapath\dpc \objectdetection\chain_type>\test\docs\doxygen\html\index.html,并且可以通过mmwave_mcuplus_sdk_<ver>/docs/mmwave_sdk_module_document .html轻松浏览。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/690580.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

React的表单学习

react的表单的双向绑定 // userState实现计数实例 import {useState} from react// 1.声明一个react的状态 -useState// 2.核心绑定流程//1.通过value属性绑定react状态//2.绑定onChange事件&#xff0c;通过事件参数e拿到输入框最新的值&#xff0c;反向修改到react状态 func…

最佳实践的实践 - API 不应将 HTTP 重定向到 HTTPS

原文&#xff1a;jviide - 2024.05.23 TL;DR: 与其将 API 调用从 HTTP 重定向到 HTTPS&#xff0c;不如让失败显而易见。要么完全禁用 HTTP 接口&#xff0c;要么返回明确的 HTTP 错误响应&#xff0c;并撤销通过未加密连接发送的 API 密钥。遗憾的是&#xff0c;许多知名的 A…

GSS7000卫星导航模拟器结合RTKLIB 接收NTRIP网络RTCM数据以输出RS232

本文聚焦&#xff0c;使用GSS7000仿真GNSS NTRIP&#xff0c;利用开源工具RTKLIB 作为NTRIP Client 接受GSS7000仿真的RTCM数据&#xff0c; 并通过STRSVR将收到的RTCM数据通过USB-RS232数据线吐出&#xff0c;并转给DUT&#xff0c;让其获得RTK -FIXED 固定解。 废话不多说&a…

vue3中的ref与reactive的区别

目录 1、两者的区别底层实现响应式引用与响应式对象 2、用法3、vue3中声明的数组/对象3.1 通过reactive 声明的Array/Object&#xff0c;给它重新分配一个全新的对象时&#xff0c;会出错、或失去响应式效果 3.2 解决方案 4、cosnt 说明5、Proxy 与 definePropertyref 浅层响应…

数据结构--二叉树(二)

链式二叉树 链式二叉树是链式树集合中的一种&#xff0c;该树的每个根节点最多只有两个孩子节点&#xff0c;我们一般用左右孩子来称呼&#xff0c;在初学链式二叉树时&#xff0c;由于大家对链式二叉树的结构掌握还不够深入&#xff0c;为了降低本章的学习难度及成本&#xff…

pytorch构建模型训练数据集

pytorch构建模型训练数据集 pytorch构建模型训练数据集1.AlexNet:1.1.导入必要的库&#xff1a;1.2.数据预处理和增强&#xff1a;1.3.加载数据集&#xff1a;1.4.划分测试集和训练集&#xff1a;1.5.创建数据加载器&#xff1a;1.6.加载AlexNet模型&#xff1a;1.7.修改模型以…

Oracle EBS AP发票创建会计科目错误:子分类帐日记帐分录未按输入币种进行平衡

系统版本 RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.6 问题症状: 提交“创建会计科目”请求提示错误信息如下: 中文报错: 该子分类帐日记帐分录未按输入币种进行平衡。请检查日记帐分录行中输入的金额。 英文报错:The subledger journal entry does not balance i…

电机专用32位MCU PY32MD310,Arm® Cortex-M0+内核

PY32MD310是一颗专为电机控制设计的MCU&#xff0c;非常适合用做三相/单相 BLDC/PMSM 的主控芯片。芯片采用了高性能的 32 位 ARM Cortex-M0 内核&#xff0c;QFN32封装。内置最大 64 Kbytes flash 和 8 Kbytes SRAM 存储器&#xff0c;最高48 MHz工作频率&#xff0c;多达 16 …

Suryxin’s ACM退役记

序 我的记忆力很差&#xff0c;经历过的很多事情都已经记不太清了&#xff0c;其中有很多美好回忆也已经消散&#xff0c;我很惋惜没能留存一些照片和声音或是文字供我怀念&#xff0c;这就像《泰坦尼克号》一样&#xff0c;露丝和杰克感人肺腑的爱情故事&#xff0c;最后也仅…

2024年最新的软件测试面试总结(答案+文档)

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 测试技术面试题 1、什么是兼容性测试&#xff1f;兼容性测试侧重哪些方面&#xff1f; 参考答案&#xff1a; 兼容测试主要是检查软件在不同的硬件平台、软件平…

[word] 在Word中插入分页符 #经验分享#经验分享#笔记

在Word中插入分页符 在 Word中插入分页符&#xff1f;教大家如何在正文中快速的插入分页符。 ? ? ?1、在正文中选择我们要分页的位置。 ? ? ?2、点击插入&#xff0c;选择分页功能里面的“分页符”功能&#xff0c;即可成功在我们选择的位置进行分页。 ? ? ? ?以上…

PICRUSt2在微生物功能预测分析中的应用解读

谷禾健康 微生物组学研究现已超越微生物群落组成分析得到更广泛的使用。大量的人类微生物组研究证据表明&#xff0c;肠道微生物组的功能变化对炎症和免疫反应的影响起到关键的影响作用。 16S rRNA分析是微生物组研究作为最常用便捷且具有成本效益的测量技术&#xff0c;用于分…

从技术到产品:以客户为中心的产品研发之路

一、引言 在快速发展的商业环境中&#xff0c;产品作为连接企业与市场的桥梁&#xff0c;其重要性不言而喻。从摸着石头过河搞产品&#xff0c;到广泛传播NPDP&#xff08;新产品开发流程&#xff09;理念&#xff0c;产品研发的道路经历了从直觉驱动到系统思维的转变。本文将…

【SpringBoot】SpringBoot整合RabbitMQ消息中间件,实现延迟队列和死信队列

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 目录 一、&#x1f525;死信队列 RabbitMQ的工作模式 死信队列的工作模式 二、&#x1f349;RabbitMQ相关的安装 三、&#x1f34e;SpringBoot引入RabbitMQ 1.引入依赖 2.创建队列和交换器 2.1 变量声明 2.2 创建…

[经验] 昆山教育网(昆山教育网中小学报名) #媒体#职场发展#微信

昆山教育网&#xff08;昆山教育网中小学报名&#xff09; 昆山教育局网站 网站&#xff1a;昆山市教育局 昆山市教育局全面贯彻执行党和国家的教育方针、政策&#xff0c;落实有关教育工作的法律、法规&#xff1b;负责制定本市教育工作的实施意见和措施&#xff0c;并监督…

WEB漏洞服务能提供哪些帮助

在数字化浪潮的推动下&#xff0c;Web应用程序已成为企业展示形象、提供服务、与用户进行交互的重要平台。然而&#xff0c;随着技术的飞速发展&#xff0c;Web应用程序中的安全漏洞也日益显现&#xff0c;成为网络安全的重大隐患。这些漏洞一旦被恶意攻击者利用&#xff0c;可…

C++笔记之一个函数多个返回值的方法、std::pair、std::tuple、std::tie的用法

C++笔记之一个函数多个返回值的方法、std::pair、std::tuple、std::tie的用法 —— 2024-06-08 杭州 code review! 文章目录 C++笔记之一个函数多个返回值的方法、std::pair、std::tuple、std::tie的用法一.从一个函数中获取多个返回值的方法1. 使用结构体或类2. 使用`std::t…

C# MES通信从入门到精通(11)——C#如何使用Json字符串

前言 我们在开发上位机软件的过程中,经常需要和Mes系统进行数据交互,并且最常用的数据格式是Json,本文就是详细介绍Json格式的类型,以及我们在与mes系统进行交互时如何组织Json数据。 1、在C#中如何调用Json 在C#中调用Json相关的对象的话,需要引用Newtonsoft.Json的dl…

三十六篇:未来架构师之道:掌握现代信息系统典型架构

未来架构师之道&#xff1a;掌握现代信息系统典型架构 1. 引言 在企业的数字化转型浪潮中&#xff0c;信息系统架构的角色变得日益重要。它不仅承载了企业的IT战略&#xff0c;更是确保企业在复杂、动态的市场环境中稳定运行的关键。作为信息系统的骨架&#xff0c;一个精心设…

贪心算法学习二

例题一 解法&#xff08;贪⼼&#xff09;&#xff1a; 贪⼼策略&#xff1a; 由于只能交易⼀次&#xff0c;所以对于某⼀个位置 i &#xff0c;要想获得最⼤利润&#xff0c;仅需知道前⾯所有元素的最⼩ 值。然后在最⼩值的位置「买⼊」股票&#xff0c;在当前位置「卖出」…