AM273X毫米波演示

news2024/12/23 17:21:42

介绍

      毫米波演示展示了 AM273X SOC 使用毫米波 SDK(软件开发工具包)中的驱动程序的一些功能。它允许用户指定chirp配置文件并实时显示检测到的对象和其他信息。

      以下是此演示功能的高级描述:

  • 能够通过 UART 端口上的命令行界面 (CLI) 或通过 TI Gallery 应用程序 - 毫米波演示展示台 - 指定所需的线性调频配置文件,该应用程序允许用户通过 UART 输入端口提供各种配置文件配置,并实时显示来自另一个 UART 端口的流式检测输出,如上图所示。
  • 演示目录中提供了一些示例配置文件配置,可以直接与CLI一起使用,也可以通过以下目录下的毫米波演示展示台使用:

            mmw/profiles

  • 进行1D、2D、CFAR、方位角和俯仰角处理,实时流出检测对象的速度和三个空间坐标(x,y,z)。该演示还可以配置为仅执行 2D 检测(速度和 x,y 坐标)。
  • 除了物体检测之外,还有各种显示选项,如多普勒距离热图。

局限性

  • 由于 UART 速度限制 (< 1 Mbps),帧时间受到更多限制。例如,对于 256 点FFT 距离和 16 点 FFT 多普勒的方位角和多普勒热图,传输大约需要 200 毫秒。
  • 对于大多数电路板,已经观察到几厘米的范围偏差。用户可以使用距离偏置(仅在TDM中支持)和Rx通道增益/相位测量和补偿中描述的校准程序来估计其电路板上的距离偏差并进行校正。

系统执行流程

      毫米波演示在 R5F MSS DSPDSS 上运行。下图显示了系统执行流程

软件任务

      该演示包含以下(FreeRTOS)任务:

MSS

  • MmwDemo_initTask。此任务由 main 创建/启动,是一次性活动任务,其主要功能是初始化驱动程序 (<driver>_init)、MMWave 模块 (MMWave_init)、DPM 模块 (DPM_init)、打开 UART 和其他驱动程序 (SPI) ,并创建/启动以下任务(CLI_task通过调用 CLI_open 间接启动)。
  • CLI_task。此命令行界面任务提供了一个简化的“shell”界面,允许通过毫米波接口 (MMWave_config) 配置 BSS。它解析输入 CLI 配置命令,如 chirp 配置文件和 GUI 配置。解析传感器启动 CLI 命令时,将执行与启动传感器和开始处理数据路径相关的所有操作。解析传感器停止 CLI 命令时,将执行与停止传感器和停止数据路径处理相关的所有操作
  • MmwDemo_mmWaveCtrlTask。此任务用于为毫米波控件提供执行上下文,它在无限循环中调用MMWave_execute API。
  • mmwDemo_mssDPMTask。此任务用于为 DPM(数据路径管理器)执行提供执行上下文,它在无限循环中调用。没有向 DPM 注册的 DPC。
  • mmwDemo_mssUartDataExportTask。此任务用于导出 UART 上的数据。此任务在无限循环中挂起 UartExportSemHandle,当当前帧处理和前一帧的 uart 传输完成时,将发布该任务。

DSS

  • MmwDemo_initTask。此任务由 main 创建/启动,是一次性活动任务,其主要功能是初始化驱动程序 (<driver>_init) 、DPM 模块 (DPM_init) 、数据路径相关驱动程序 (EDMA、HWA、CSI) 以及创建/启动以下任务。
  • MmwDemo_DPC_ObjectDetection_dpmTask。此任务用于为 DPM(数据路径管理器)执行提供执行上下文,它在无限循环中调用DPM_execute API。在此上下文中,将发生所有已注册的对象检测 DPC(数据路径链)API,如配置、控制和执行。在此任务中。当 DPC 的执行 API 生成检测到的对象和其他结果时,它们会报告给 MSS,在那里它们被传输出 UART 端口,以便使用可视化工具进行显示。
  • MmwDemo_DPC_ObjectDetection_csirxTask。此任务配置 CSI 并等待来自前端的数据。必须注意的是,在转到 DPM 配置和同步之前,必须执行 CSI 配置,这是使用阻塞信号量实现的。
  • MmwDemo_DPC_ObjectDetection_FrameTrigTask。此任务用于发送已收到帧启动触发器的消息,这是处理链启动的信号。这个任务基本上是一个无限循环,等待信号量。当进入 CSI 帧开始回调函数时,将发布信号量。因此,任务通过 DPM 发送帧启动触发器,从而导致处理链的启动。

数据路径

顶层数据路径处理链

顶层数据路径时序-TDM

顶层数据路径时序-DDM

      数据路径处理包括将ADC样本作为输入,并生成检测到的对象(点云和其他信息),以便从UART端口传送到PC。使用 DPM 注册的对象检测 DPC 实现算法处理。从以下基于要使用的处理链的 doxygen 文档中可以看出 DPC 中处理的详细信息:          ti/datapath/dpc/objectdetection/objdethwa/docs/doxygen/html/index.html

        或  

        ti/datapath/dpc/objectdetection/objdethwaDDMA/docs/doxygen/html/index.html

移相器(DDM

      可以检查 ti/datapath/dpc/objectdetection/objdethwaDDMA/docs/doxygen/html/index.html,了解为什么在DDMA处理链中需要相移以及它们的值是多少。demo/utils/rf_parserDDMA.c 中的MmwDemo_RFParserPhaseShiftOrder 按相移值的递增顺序排列天线(如果所有天线都已启用) 例如,值 {0,1,2} 表示特定chirp的相移按以下数量级排列 - tx0ChirpPhase > tx1ChirpPhase > tx2ChirpPhase 即使用户不打算使用所有 tx 天线, 应假设所有 Tx 都已启用,则应对序号进行编程。未启用的相移值将由代码配置为 0

      请注意,在DDMA情况下,仰角天线应始终位于该阵列的末尾。基本上,必须确保相移(方位角)<相移(仰角)。因此,{0 2 1} 配置为 MmwDemo_RFParserPhaseShiftOrder AM273X),因为 Tx0Tx2 是方位角天线,而 Tx1 是仰角天线。要了解 AM273X 的天线配置,请参阅 SDK 中的 ti/board 文件夹

DDMA优化

      为了减少DDMA链的处理时间,主要进行以下优化:

  • HWA/DMA/DSP 并行化
  • EDMA 轮询而不是中断。
  • 在 EDMA 中使用线性传输而不是转置传输。
  • 使用下一帧并行化 AoA 处理。
  • 并行化 UART 数据发送下一帧。
  • 方位角bin的数量从 48 个减少到 32 个。
  • 禁用距离 CFAR / Sum TX。
  • 在 DSP 中使用 IDMA 进行传输。
  • 优化 AoA 处理的 DSP 代码。
  • DDMA解调DSP代码优化。

在下一帧中并行化 AoA 处理和 UART 数据传输

      如图所示,AoA 使用 DSP,而 1D 处理完全在 HWA 上完成,因此两者都可以并行化。同样,UART TX 完全在 R5F 上运行,因此它可以与 HWA DSP 上的进程并行化。因此,在并行处理优化后,当前帧的 AoA 处理和 UART 传输可以与下一帧的 1D 2D 处理并行运行。

发送到主机的输出信息

输出数据包

      带有检测信息的输出数据包通过UART每帧发送出去。每个数据包由报头MmwDemo_output_message_header_t和包含各种数据信息的 TLV 项目数组成,这些数据信息的类型以 MmwDemo_output_message_type_e 枚举。类型的数值可以在 mmw_output.h 中找到。每个 TLV 项目都包含类型、长度 MmwDemo_output_message_tl_t和有效载荷信息。输出数据包的结构如下图所示。由于数据包的长度取决于检测到的对象的数量,因此它可能因帧而异。数据包的末尾是填充的,因此总数据包长度始终是 32 字节的倍数。

发送到 UART 的输出数据包结构

检测到的对象列表

      类型:(MMWDEMO_OUTPUT_MSG_DETECTED_POINTS)

      长度:(检测到的物体数)x(DPIF_PointCloudCartesian_t的大小)

      值:检测到的对象的数组。每个检测到的对象的信息都与结构体DPIF_PointCloudCartesian_t一致。当检测到的对象数为零时,不会发送此 TLV 项目。子帧/帧中可检测到的最大对象数为 DPC_OBJDET_MAX_NUM_OBJECTS。

      x、y 和 z 轴相对于传感器的方向如下图所示。

坐标几何图形

      整个检测到的物体TLV结构如下图所示。

检测到的对象 TLV

距离配置文件

      类型:(MMWDEMO_OUTPUT_MSG_RANGE_PROFILE)

      长度:(距离FFT尺寸)x(uint16_t尺寸)

      值:0th 多普勒处的剖面点数组(静止物体)。这些点表示以 Q9 格式表示的接收天线的 log2 幅度之和。

底噪配置文件(仅在 TDM 演示中发送)

      类型:(MMWDEMO_OUTPUT_MSG_NOISE_PROFILE)

      长度:(距离FFT尺寸)x(uint16_t尺寸)

      值:这与距离配置文件的格式相同,但配置文件位于最大多普勒bin(最大速度对象)处。一般来说,对于静止场景,在最大速度下不会有物体或杂波,因此在这种速度下的距离分布代表接收机的底噪

方位角静态热图(仅在 TDM 演示中发送)

      类型:(MMWDEMO_OUTPUT_MSG_AZIMUT_STATIC_HEAT_MAP)

      长度:(距离 FFT 尺寸)x(虚拟天线数量)(cmplx16ImRe_t_尺寸)

      值:数组 DPU_AoAProcHWA_HW_Resources::azimuthStaticHeatMap。天线数据是复数符号,虚数第一和实数第二按以下顺序排列:

      Imag(ant 0, range 0), Real(ant 0, range 0),...,Imag(ant N-1, range 0),Real(ant N-1, range 0)

      ...

      Imag(ant 0, range R-1), Real(ant 0, range R-1),...,Imag(ant N-1, range R-1),Real(ant N-1, range R-1)

      基于这些数据,静态方位角热图由主机上运行的 GUI 构建。

统计

      类型:(MMWDEMO_OUTPUT_MSG_STATS )

      长度:(MmwDemo_output_message_stats_t的尺寸)

      值:根据MmwDemo_output_message_stats_t计时信息。请参阅下面与统计数据相关的时间图。

处理时序

        注意:

      1.不计算 MmwDemo_output_message_stats_t::interChirpProcessingMargin(始终设置为 0)。这是因为 1D 处理中没有 CPU 参与(仅涉及 HWA 和 EDMA),并且在处理开始(chirp事件)和 HWA-EDMA 计算结束时,如果不在每次chirp时通知 CPU,就不可能知道chirp处理中有多少裕量。在一维处理过程中,CPU 有意保持空闲状态,因为实际应用程序可能会利用这段时间执行一些后处理算法。

      2.虽然报告的 MmwDemo_output_message_stats_t::interFrameProcessingTime 将属于当前子帧/帧,但 MmwDemo_output_message_stats_t::interFrameProcessingMargin 和 MmwDemo_output_message_stats_t::transmitOutputTime 将属于前一个子帧(与当前子帧的 MmwDemo_output_message_header_t::subFrameNumber 相同)或前一帧。

      3.MmwDemo_output_message_stats_t::interFrameProcessingMargin 不包括 UART 传输时间(以 MmwDemo_output_message_stats_t::transmitOutputTime 的形式提供)。这样做是有意为之的,以告知用户真正的帧间处理余量,而不受 UART 等慢速传输的影响,这种传输时间可能会明显更长,例如在流出热图等调试信息时。此外,在实际的产品部署中,可能会使用更高速的接口(例如LVDS)来代替UART。用户可以使用统计信息计算包含传输开销的余量(例如,确定特定演示配置允许的最大帧速率),因为它们还包含 UART 传输时间。

      CLI 命令“guMonitor”指定将在输出数据包中发送哪个 TLV 元素。CLI 命令的参数存储在结构MmwDemo_GuiMonSel_t中。

检测到的对象的侧面信息(仅在TDM演示中发送)

      类型:(MMWDEMO_OUTPUT_MSG_DETECTED_POINTS_SIDE_INFO)

      长度:(检测到的物体数量)x(DPIF_PointCloudSideInfo_t的大小)

      值:检测到的对象端信息的数组。每个检测到的对象的侧面信息与结构 DPIF_PointCloudSideInfo_t) 一致。当检测到的对象数为零时,不会发送此 TLV 项目。

温度统计

      类型:(MMWDEMO_OUTPUT_MSG_TEMPERATURE_STATS)

      长度:(MmwDemo_temperatureStats_t的尺寸)

      值:从雷达前端获取的详细温度报告的结构。MmwDemo_temperatureStats_t::tempReportValid 设置为返回 rlRfGetTemperatureReport 的值。如果 MmwDemo_temperatureStats_t::tempReportValid 为 0,则 MmwDemo_temperatureStats_t::temperatureReport 中的值有效,否则应忽略它们。此 TLV 与统计信息中描述的统计信息 TLV 一起发送。

距离偏置(仅在TDM中支持)和Rx通道增益/相位测量和补偿

      由于电路板上天线布局的缺陷,SOC中的RF延迟等,需要校准传感器以补偿距离估计中的偏差以及接收信道增益和相位缺陷。下图说明了校准程序。

校准程序梯形图

        校准过程包括以下步骤:

        1.在视轴处设置一个强目标,如角反射器,距离 X 米(不建议 X 小于 50 厘米)。

        2.在 .../profiles/profile_calibration.cfg 的配置文件中设置以下命令,以反映位置 X,如下所示: 其中 D(以米为单位)是 X 周围搜索峰值的窗口距离。搜索窗口的目的是让测试环境不受过度限制,例如,可能无法清除所有可能比用于校准的反射器更强的反射器。建议窗口大小至少相当于几个距离bin的距离。校准配置文件 (profile_calibration.cfg) 的一个量程bin约为 5 cm。第一个参数“1”用于启用测量。必须使用规定的配置文件 .cfg),否则校准可能无法按预期工作(此配置文件确保所有发射和接收天线都接合以及校准所需的其他功能)。

        measureRangeBiasAndRxChanPhase 1 X D

        3.使用配置文件启动传感器。

        4.在配置文件中,测量是启用的,因此DPC将配置为执行测量,并在其结果结构(DPC_ObjectDetection_ExecuteResult_t::compRxChanBiasMeasurement)中生成测量结果(TDM中的DPU_AoAProc_compRxChannelBiasCfg_t和DDM中的Measure_compRxChannelBiasCfg_t),测量结果在CLI端口(MmwDemo_measurementResultOutput)上以以下格式写出:

        TDM: compRangeBiasAndRxChanPhase <rangeBias> <Re(0,0)> <Im(0,0)> <Re(0,1)> <Im(0,1)> ... <Re(0,R-1)> <Im(0,R-1)> <Re(1,0)> <Im(1,0)> ... <Re(T-1,R-1)> <Im(T-1,R-1)>

        DDM: compRxChanPhase <Im(0,0)> <Re0,0)> <Im(0,1)> <Re(0,1)> ... <Im(0,R-1)> <Re(0,R-1)> <Im(1,0)> <Re(1,0)> ... <Im(T-1,R-1)> <Re(T-1,R-1)>

        其中TX天线的顺序是,方位角TX天线之后是仰角TX天线

        有关 DPC 如何执行测量的详细信息,请参阅 DPC 文档。

        现在可以将 CLI 上打印出来的命令复制并粘贴到任何配置文件中,以便进行更正。此配置将传递给 DPC,以便在角度计算期间应用补偿,详细信息可在 DPC 文档中查看。如果不需要补偿,则应给出以下命令: Above 将距离偏差设置为 0,将相位系数设置为单位,以便没有校正。请注意,这两个命令必须始终在任何配置文件中给出,通常,当校正命令为所需命令时,测量通信将被禁用。建议仅在基于帧的chirp (dfeDataOutput=1) 模式下使用 measureRangeBiasAndRxChanPhase 命令。

    TDM: compRangeBiasAndRxChanPhase 0.0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

    DDM: antennaCalibParams 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

通过LVDS流式传输数据

        LVDS流功能支持通过LVDS接口流传输硬件数据(ADC数据)和/或用户特定的软件数据。流式传输主要由 CBUFF EDMA 外设完成,CPU 干预最少。流是通过 MmwDemo_LvdsStreamCfg_t CLI 命令配置的,该命令允许控制 HSI 报头、启用/禁用硬件和软件数据以及硬件数据的数据格式选择。请注意,目前仅支持不带 HSI 标头的硬件数据。硬件数据的数据格式选项包括:

  • MMW_DEMO_LVDS_STREAM_CFG_DATAFMT_DISABLED
  • MMW_DEMO_LVDS_STREAM_CFG_DATAFMT_ADC

        当硬件数据LVDS流启用时,ADC数据将在每个线性调频事件中按chirp流传输。

        1.对于硬件数据,chirp间持续时间应足以流出所需的数据量。例如,如果硬件数据格式为 ADC,并且启用了 HSI 报头(注意:此演示中未启用 HSI 报头发送),则每个chirp生成的数据总量为:

        (numAdcSamples * numRxChannels * 4(复数样本大小)+ 52 [sizeof(HSIDataCardHeader_t) + sizeof(HSISDKHeader_t)] ) 四舍五入为 256 [=sizeof(HSIHeader_t)] 字节的倍数。

        在配置文件配置中,us为单位的chirp时间 Tc = 空闲时间 + 斜坡结束时间。对于每个通道最大为 B Mbps 的 n 通道 LVDS,每个chirp可以发送的最大字节数 = Tc * n * B / 8,应大于每个chirp生成的数据总量,即Tc * n * B / 8 >= round-up(numAdcSamples * numRxChannels * 4 + 52, 256)。
        例如,如果 n = 2,B = 600 Mbps,空闲时间 = 7 us,斜坡结束时间 = 44 us,numAdcSamples = 512,numRxChannels = 4,则违反了 7650 >= 8448,因此此配置将不起作用。如果在上面的例子中空闲时间加倍,那么我们有 8700 > 8448,所以这个配置将起作用。

        2.要在硬件或软件数据包中传输的数据总量必须大于 CBUFF 要求的最小值,即 64 字节或 32 个 CBUFF 单元(这是 CBUFF 驱动程序实现中的定义CBUFF_MIN_TRANSFER_SIZE_CBUFF_UNITS)。如果违反此阈值条件,CBUFF 驱动程序将在配置过程中返回错误,演示将生成致命异常。启用 HSI 报头时,确保总传输大小至少为 256 字节,满足最小值。如果禁用 HSI 标头,则对于硬件会话,这意味着 numAdcSamples * numRxChannels * 4 >= 64。尽管 mmwavelink 允许最小 ADC 样本数为 2,但 numAdcSamples >= 64 支持该演示。因此,仅硬件情况不需要启用 HSI 标头

实施说明

        1.LVDS 实现主要存在于 mmw_lvds_stream.h  mmw_lvds_stream.c ,调用在 mss_main.c 中。此外,HSI时钟初始化是在传感器首次启动时使用MmwDemo_mssSetHsiClk完成的。另请参阅@MmwDemo_BoardInit函数,了解与HSI时钟相关的寄存器配置。

        2.CBUFF/LVDS 的 EDMA 通道资源与其他 EDMA 资源分配一起位于全局资源文件(mmw_res.h,请参阅硬件资源分配)中。用户数据标头和两个用户有效负载在 CBUFF 驱动程序中配置为三个用户缓冲区。因此,EDMA 的 SW 分配提供了三组 EDMA 资源,如 MmwDemo_LVDSStream_EDMAInit 的 SW 部分 (swSessionEDMAChannelTable[.]) 所示。

        3.尽管 CBUFF 驱动程序配置为两个会话(HW和SW),但任何时候都只能有一个会话处于活动状态。因此,根据LVDS CLI配置以及是否高级帧,可以根据需要激活/停用硬件和软件会话。

        4.CBUFF 会话 (HW/SW) 配置-创建和删除取决于首次配置后是否需要重新配置。

        对于硬件会话,在子帧切换期间进行重新配置,以便为下一个子帧重新配置,但是当没有高级帧(子帧数 = 1)时,硬件配置不需要更改,因此不需要重新创建硬件会话。

        5.当前版本不支持基于 SW 触发器的流式处理

        下图显示了LVDS流的时序图(该图不按比例缩放,因为实际持续时间会因配置而异)。注意:当前版本的演示不支持软件流式处理。

LVDS时序图

通过以太网流式传输数据

        此演示支持使用 TCP 协议和 LwIP 堆栈通过以太网传输检测到的对象数据的简单用例。数据传输使用基于客户端-服务器的架构完成,EVM 充当客户端,PC 充当服务器。此实用程序是 TCPECHO 应用程序的修改示例,该应用程序作为 PDK 中 LwIP 的一部分提供包。有关连接和使用的详细信息,请参阅MMWAVE SDK用户指南。

实施说明

      1.enet 流式处理实用程序是文件 enet_cpswconfighandler.c、enet_stream.c enet_tcpclient.c 和 tcpserver.py 文件的一部分。

      2.enet_stream.c 中的 enetTask 是初始化所有组件和任务的主要任务,并通过 DHCP 为设备分配 IP 地址。

      3.将 IP 分配给设备后,用户可以运行服务器应用程序 tcpserver.py 并等待连接建立。

      4.命令 queryLocalIp 可以通过 CLI 返回本地 IP(EVM 获取的 IP 地址)。有关详细信息,请参阅用户指南。

      5.用户将使用 CLI 通过 enetStreamCfg 命令发送本地 IP。有关详细信息,请参阅用户指南。完成此配置后,将发布信号量 EnetCfgDoneSemHandle,并建立连接(请参阅 tcpclient.c)。

      6.用户将能够看到在 tcpserver.py 控制台上打印的对象数据。

      7.请注意,通信端口已预先配置为“7”。

      8.必须注意的是,LwIP 堆栈需要 650 kB 的额外内存 (L3 RAM),并且必须注意确保演示 L3 要求不会导致 L3 内存使用率高于可用内存。

如何绕过 CLI

      重新实现文件 mmw_cli.c,如下所示:

        1.MmwDemo_CLIInit应该只创建一个带有输入 taskPriority 的任务。假设该任务称为“MmwDemo_sensorConfig_task”。

        2.不需要所有其他功能

        3.按如下方式实现MmwDemo_sensorConfig_task:

  • 填写 gMmwMssMCB.cfg.openCfg
  • 填写 gMmwMssMCB.cfg.ctrlCfg
  • 使用 MMWave_addProfile 和 MMWave_addChirp 函数添加配置文件和chirp
  • 调用 MmwDemo_CfgUpdate 在 mmw_mss.h 中存储 CLI 配置 (MMWDEMO_xxx_OFFSET 的偏移量)
  • 填写 gMmwMssMCB.objDetCommonCfg.preStartCommonCfg
  • 调用MmwDemo_openSensor
  • 调用MmwDemo_configSensor
  • 调用MmwDemo_startSensor(可以使用辅助函数MmwDemo_isAllCfgInPendingState来了解是否提供了所有动态配置)

        4.用户还可以使用 CLI 库中的 CLI_BYPASS API 直接绕过通过 UART 发送的 CLI 命令。

硬件资源分配

      目标检测 DPC 需要配置 DPU 的硬件资源(HWAEDMA。尽管目前只需要为系统中的这一个且唯一的 DPC 分配硬件资源,但资源分区显示为演示的所有权。这是为了说明在多个 DPC 和/或演示自己的处理(即 DPC 后处理)之间分配资源的一般情况。此分区可以在 mmw_res.h 文件中看到。此文件作为编译器命令行定义传递

      "--define=APP_RESOURCE_FILE="<ti/demo/am273x/mmw/mmw_resDDM.h>"

      或

      "--define=APP_RESOURCE_FILE="<ti/demo/am273x/mmw/mmw_resTDM.h>"

      在构建演示应用程序时, mmw_mss.mak mmw_dss.mak 中构建 DPC ,并在需要时在目标检测 DPC 源中声明

      #include APP_RESOURCE_FILE

设计说明

      由于 DPM 本地队列大小的限制,对于某些 DPM 函数(如 DPM_start、DPM_stop 和某些通过 DPM_ioctl 的 DPC 控制),信号量用于在调用任务和函数MmwDemo_DPC_ObjectDetection_reportFxn之间同步。这样就不会因为 DPM 本地队列用完而导致 DPM 崩溃。下图演示了阻塞 DPM_ioctl() 函数调用的示例调用流。还显示了非阻塞DPM_ioctl以进行比较。

DPM_ioctl调用流

      对于同一DPM_Report,MSS 和 DSS 上都有 DPM 报告功能。但是,不能保证两个内核之间的顺序。

内存使用情况

      有关内存使用情况的信息,请参阅演示文件夹中的相应 .map 文件。

关于错误代码的说明

      当演示遇到错误情况时,将生成错误代码并打印出来。错误代码被定义为负 interger。它来自以下类别:

  • 驱动
  • 控制模块
  • 数据处理链
  • 数据处理单元
  • 演示

      错误代码定义为(模块错误代码库 - 特定于模块的错误代码)。上述模块的基本错误代码可以在 mmwave_error.h中找到,DPC DPU 的基本错误代码可以在 dp_error.h 中找到

      特定于模块的错误代码在模块的头文件中指定。例子:

  • UART 驱动程序错误代码在 uart.h 中定义
  • DPC 错误代码在演示中使用的 DPC 中定义

毫米波模块错误代码

      毫米波模块的错误代码按以下方式编码:

位(31::16

位(15::2

1::0

毫米波误差

子系统错误

错误级别

  • 毫米波误差在 mmwave.h 中定义
  • 子系统错误是从子系统返回的,例如mmwavelink和邮箱驱动程序。
  • 错误级别称为 WARNING level 和 ERROR 级别。
  • mmWave 公开了一个 API - MMWave_decodeError(),可在演示中用于解码错误代码

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

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

相关文章

leetcode刷题-二叉树03

代码随想录二叉树part03|104.二叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数 104.二叉树的最大深度111.二叉树的最小深度222.完全二叉树的节点个数 104.二叉树的最大深度 代码随想录文档讲解 LeetCode 斜体样式 本题在前一章节层序遍历时已完成。&#xff…

短视频矩阵筷子科技、抖去推、超级编导有那几家源头开发是自己底层框架做的-----

目前这几家都是自己技术团队搭建开发的&#xff0c;每家都有优势劣势产品上基本都已经成熟趋向于优化技术阶段。 云罗---抖去推&#xff1a;*** 将在CAP原则基础上使用分布式架构,对此网站的整体架构采用了基于B/S三层架构模式,将数据层、业务应用层、表现层分开。BS架构B/S&a…

第二届黄河流域团队赛个人wp

个人wp web 两个题都几乎是网上的原题&#xff0c;不想多说了&#xff0c;放个链接&#xff0c;重点记录一下自己第一次遇到的misc 冰蝎流量分析 web1 https://blog.csdn.net/qq_51768842/article/details/125153850 web2 https://blog.csdn.net/m0_73512445/article/detai…

北京医院共享轮椅小程序开发更贴心,更便捷

在大数据不断发展的今天&#xff0c;资源共享已随处可见&#xff0c;小到共享充电宝&#xff0c;共享雨伞&#xff0c;大到共享单车&#xff0c;汽车。这些常用资源的共享&#xff0c;充分实现了有限资源的最大化利用。 如今&#xff0c;众多北京医院&#xff0c;也结合自身实…

TQZC706开发板教程:10G光口arp测试

网盘分享&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1H-_hn1eAi-Byzn-4tcSFKA 提取码&#xff1a;q524 使用前需要设置时钟&#xff0c;调整右下角的拨码开关为↑↓↓↑↑ 从原理图中可以看出设置为156.25MHz&#xff0c;10Gige模式 启动模式设置为JTAG模式&#…

内地人真的被香港的工资震惊到了!香港身份真的很香

在我优才获批以前&#xff0c;我工资也就一两万&#xff0c;工作压力大又很焦虑&#xff0c;后来在一次和朋友吃饭上聊到了香港工资的话题&#xff0c;说这边的待遇水平比较高。&#x1f60e;&#x1f60e; . 那时候不相信&#xff0c;问了一些在香港工作的大学同学&#xff0c…

【机器学习基础】Python编程07:五个实用练习题的解析与总结

Python是一种广泛使用的高级编程语言,它在机器学习领域中的重要性主要体现在以下几个方面: 简洁易学:Python语法简洁清晰,易于学习,使得初学者能够快速上手机器学习项目。 丰富的库支持:Python拥有大量的机器学习库,如scikit-learn、TensorFlow、Keras和PyTorch等,这些…

颠覆与创新:探寻Facebook未来的发展路径

Facebook&#xff0c;这个曾经引领社交网络革命的巨头&#xff0c;在如今竞争激烈的科技市场中&#xff0c;正面临着前所未有的挑战和机遇。如何在不断变化的数字世界中保持竞争力&#xff0c;成为业界领先者&#xff0c;这是摆在Facebook面前的重要课题。本文将探寻Facebook未…

如何快速搭建自己的进销存系统?

什么是进销存系统&#xff1f; 进销存&#xff0c;是指企业管理过程中采购&#xff08;进&#xff09;—入库&#xff08;存&#xff09;—销售&#xff08;销&#xff09;的动态管理过程。进&#xff1a;指询价、采购到入库与付款的过程。进销存管理系统是对企业生产经营中物…

一分钟学习数据安全—自主管理身份SSI可验证凭证

在对SSI的概念、组成、架构以及用到的加密技术有了大概的了解之后&#xff0c;我们进入到SSI架构的核心&#xff1a;可验证凭证。 可验证凭证旨在实现以下两个目的&#xff1a; 提供数字钱包中的证书的数字版本。用一组关于标识符的声明“自上而下”证明身份&#xff0c;而非“…

Pycharm远程连接服务器配置

创建虚拟环境 conda create -n envName python指定python版本删除虚拟环境 conda remove -n envName --all查看所有虚拟环境 conda env list使用or激活虚拟环境 conda activate HINormer如何查看python编译器是在哪个虚拟环境中&#xff1a; 使用我们尊贵的2080Ti在安装配…

详解 Flink Table API 和 Flink SQL 之流处理中的表

一、关系型表和流处理表对比 关系型表/SQL流处理表处理的数据对象字段元组的有界集合字段元组的无限序列查询&#xff08;Query&#xff09;对数据的访问可以访问到完整的数据输入无法访问所有数据&#xff0c;必须持续“等待”流式输入查询终止条件生成固定大小的结果集后终止…

SyntaxError: Non-UTF-8 code starting with ‘\xbd‘ in file错误解决

在运用python的pandas和numpy的内容环境下&#xff0c;运行代码时发生以下错误&#xff1a; C:\ProgramData\Anaconda3\python.exe D:/zafile/py数据分析与应用/数据分析代码/14.2、紧急电话数据分析.pyFile "D:/zafile/py数据分析与应用/数据分析代码/14.2、紧急电话数据…

教你一招,告警恢复时如何拿到恢复时的值?

Prometheus 生态的原生做法&#xff0c;由于阈值是放在 promql 中的&#xff0c;恢复时的消息中难以拿到恢复时的值&#xff0c;夜莺 v7.0.0.beta10 版本开始&#xff0c;提供了一种较为简单的内置方式&#xff0c;解决这个问题。下面我们就来看一下如何实现这个能力。 升级方…

MATLAB画图时添加标注显示有效数字的位数,可以编辑此函数

本来系统有个函数&#xff0c;在图像窗口选择标注工具&#xff0c;再在图像窗口右击鼠标&#xff0c;选择"编辑文本更新函数..."&#xff0c;即打开系统的设置函数&#xff0c;可以修改最后一行&#xff1a; formattedValue [valueFormat num2str(value,4) removeV…

Python私教张大鹏 Vue3整合AntDesignVue之AutoComplete 自动完成

何时使用 需要一个输入框而不是选择器。需要输入建议/辅助提示。 和 Select 的区别 AutoComplete 是一个带提示的文本输入框&#xff0c;用户可以自由输入&#xff0c;关键词是辅助输入。Select 是在限定的可选项中进行选择&#xff0c;关键词是选择。 基本使用 基本使用。…

创新突破!科海思荣获高效含铊废水处理专利

随着科技进步和工业发展&#xff0c;环境保护和资源循环利用日益受到全球关注。面对严峻的环境挑战&#xff0c;科技创新成为推动可持续发展的关键动力。近日&#xff0c;科海思&#xff08;北京&#xff09;科技有限公司凭借其深厚的技术积累和持续的创新精神&#xff0c;成功…

RT-Thread系统使用STM32H7芯片串口5不工作

使用stm32h743芯片串口5不工作&#xff0c;其他串口都正常&#xff0c;TX5->PC12,RX5->PD2 drv_usart.c里面串口5的TX和RX反了&#xff0c;将TX和RX对调后解决。

SAP 生产订单工序创建BAPI外协加工字段增强CO_SE_PRODORD_OPR_CREATE

需求&#xff1a; 使用BAPI对工单进行新增工序时&#xff0c;需要同时维护外协加工页签上的部分字段&#xff0c;但是该BAPI不包含其中的一些字段&#xff0c;故对此BAPI进行增强以实现该效果。 实现方式&#xff1a; 1.老规矩&#xff0c;COPY标准BAPI出来&#xff0c;再对其…

微信小游戏开发流程及上架步骤:微信小游戏定制开发源码搭建

微信小游戏开发方案主要包括以下几个方面&#xff1a; 1.游戏设计&#xff1a;根据需求和目标用户群体&#xff0c;设计游戏玩法、关卡、角色、场景等元素&#xff0c;确保游戏具有吸引力和可玩性。 2.技术实现&#xff1a;根据游戏设计&#xff0c;选择合适的技术栈和开发工具…