毫米波SDK使用2

news2024/11/28 22:40:00

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轻松浏览。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

批量高效调整图片像素:自定义缩小bmp图片,画质优先,一键实现高效优化

图片已经成为我们生活中不可或缺的一部分。无论是社交媒体分享&#xff0c;还是工作文件传输&#xff0c;图片总是扮演着重要的角色。然而&#xff0c;有时候&#xff0c;我们可能会面临一个问题&#xff1a;图片像素过大&#xff0c;不仅占用过多的存储空间&#xff0c;还可能…

【网络教程】Iptables官方教程-学习笔记7-简单理解IPTABLES规则的作用流程

前面学习了IPTABLES的所有功能介绍后&#xff0c;一个Linux设备里的IPTABLES规则集是如何运行的&#xff0c;这里简单做个介绍。 在Linux设备里输入"iptables -nvl",得到该设备的所有防火墙规则&#xff0c;得到的结果中可以看到这个设备防火墙里所有的链以及链里的…

STM32F103C8移植uCOSIII并以不同周期点亮两个LED灯(HAL库方式)【uCOS】【STM32开发板】【STM32CubeMX】

STM32F103C8移植uC/OSIII并以不同周期点亮两个LED灯&#xff08;HAL库方式&#xff09;【uC/OS】【STM32开发板】【STM32CubeMX】 实验说明 将嵌入式操作系统uC/OSIII移植到STM32F103C8上&#xff0c;构建两个任务&#xff0c;两个任务分别以1s和3s周期对LED进行点亮—熄灭的…

力扣hot100:394. 字符串解码(递归)

LeetCode&#xff1a;394. 字符串解码 本题容易想到用递归处理&#xff0c;在写递归时主要是需要明确自己的递归函数的定义。 不过我们也可以利用括号匹配的方式使用栈进行处理。 1、递归 定义递归函数string GetString(string & s,int & i); 表示处理处理整个numbe…

高中数学:数列-基础概念

一、什么是数列&#xff1f; 一般地&#xff0c;我们把按照确定的顺序排列的一列数称为数列&#xff0c;数列中的每一个数叫做这个数列的项&#xff0c;数列的第一项称为首项。 项数有限个的数列叫做有穷数列&#xff0c;项数无限个的数列叫做无穷数列。 二、一般形式 数列和…

2024高考作文引发的人工智能争议

又是一年高考季&#xff0c;多少学子的修行成果也在这这一刻迎来了终极检验&#xff0c;多少学子的梦也在这一刻拉开了揭晓序幕&#xff0c;多少学习的命运也在这一刻迎来了人生中的第一次转变。每年的高考不仅是学子们的人生大事&#xff0c;也是多少父母的热切期望&#xff0…

Java Web学习笔记25——Vue组件库Element

什么是Element&#xff1f; Element: 是饿了么团队研发的&#xff0c;一套为开发者、设计师和产品经理准备的基于Vue2.0的桌面端组件库。 组件&#xff1a;组成网页的部件&#xff0c;例如&#xff1a;超链接、按钮、图片、表格、表单、分页条等等。 官网&#xff1a;https:…

详解C++中的ANSI、Unicode和UTF8三种字符编码及相互转换

目录 1、概述 2、Visual Studio中的字符编码 3、ANSI窄字节编码 4、Unicode宽字节编码 5、UTF8编码 6、如何使用字符编码 7、三种字符编码之间的相互转换&#xff08;附源码&#xff09; 8、Windows系统对使用ANSI窄字节字符编码的程序的兼容 9、字符编码导致程序启动…

1-8 C语言分支循环语句

C语言的语句分为 5 类 1&#xff1a;表达式语句2&#xff1a;函数调用语句3&#xff1a;控制语句4&#xff1a;复合语句5&#xff1a;空语句 控制语句&#xff1a;用于控制程序的执行流程&#xff0c;以实现程序的各种结构方式&#xff0c;它们由特定的语句定义符组成&#x…

【日记】遇到了一个 “不愿睁眼看世界也没受过社会毒打” 的逆天群友(464 字)

正文 今天坐在柜台玩了一天手机…… 手机都玩没电了快。下午在劝一个群友睁眼看世界&#xff0c;实在劝不动。他真的太逆天了&#xff0c;我不清楚这么高学历的人&#xff0c;怎么能说出这么天真的话。逆天又离谱。 晚上的时间几乎全在做家务。平时晚上都是跳舞来着&#xff0c…

云原生架构案例分析_1.某旅行公司云原生改造

随着云计算的普及与云原生的广泛应用&#xff0c;越来越多的从业者、决策者清晰地认识到“云原生化将成为企业技术创新的关键要素&#xff0c;也是完成企业数字化转型的最短路径”。因此&#xff0c;具有前瞻思维的互联网企业从应用诞生之初就扎根于云端&#xff0c;谨慎稳重的…

git推送代码到github拒绝推送的解决方案

这里描述一下本地推送的场景&#xff0c;首先我在码云上建立了一个前端项目&#xff0c;进行了自己的个性化开发&#xff0c;后期在github上创建了一个一样的项目仓库存放代码。使用webstorm进行代码开发。在下面这个位置可以选择推送的代码位置。 选择推送github仓库之后&…

图文详解Windows系统下搭建mysql开发环境——mysql Community 8 和 navicat Premium 17 的安装和使用

在正式开始学习使用MySQL之前&#xff0c;我们有必要先搭建一个良好的开发环境&#xff0c;让我们的学习和工作效率事半功倍。 本文涉及到的软件百度云盘&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1jj_YajEv8adeEjMrXLhOTQ?pwd1023 提取码&#xff1a;1023 目录 …

React的表单学习

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

Linux--标准IO库

一、标准IO简介 所谓标准 I/O 库则是标准 C 库中用于文件 I/O 操作&#xff08;譬如读文件、写文件等&#xff09;相关的一系列库函数的集合&#xff0c;通常标准 I/O 库函数相关的函数定义都在头文件 <stdio.h> 中&#xff0c;所以我们需要在程序源码中包含 <s…

[office] excel工作表数据分级显示 #其他#笔记

excel工作表数据分级显示 如下图1所示的工作表数据&#xff0c;我们按东区、西区、南区、北区来建立分级显示。 图1 这里先利用“创建组”命令建立分级显示。选取单元格区域A3:E5&#xff0c;单击功能区“数据”选项卡“分级显示”组中的“创建组——创建组…”命令&#xff…

使用Cython编译Python源码加密加速,有这一篇就够了!

0 前言 python是一门脚本语言&#xff0c;运行时由python虚拟机解释执行。当我们使用python设计好算法给第三方使用时只能提供源码&#xff0c;任何运行我们算法的人都可以看到源码以及对应的算法思路。因此&#xff0c;需要一定手动保护源码。 最简单的保护方式是使用代码混…

对待谷歌百度等搜索引擎的正确方式

对待百度、谷歌等搜索引擎的方式是&#xff0c;你要站在搜索引擎之上&#xff0c;保持自己的独立思想和意见。 当谷歌宣布他们将会根据一个名为“Alphabet”的新控股公司来进行业务调整时&#xff0c;在科技界引起了一片恐慌之声。 永远不要说这是一个公司一直在做的事情。不…

【Linux】深入解析动静态库:原理、制作、使用与动态链接机制

文章目录 前言&#xff1a;1. 什么是动静态库2. 动静态库的制作和使用3. 动态库的查找问题4. 理解动态库的加载4.1. 站在系统的角度理解4.2. 编址、可执行程序4.3. 动态库动态链接和加载问题 总结&#xff1a; 前言&#xff1a; 在软件开发中&#xff0c;动静态库是两种重要的…

【栈】1106. 解析布尔表达式

本文涉及知识点 栈 LeetCode 1106. 解析布尔表达式 布尔表达式 是计算结果不是 true 就是 false 的表达式。有效的表达式需遵循以下约定&#xff1a; ‘t’&#xff0c;运算结果为 true ‘f’&#xff0c;运算结果为 false ‘!(subExpr)’&#xff0c;运算过程为对内部表达式…