AM273X毫米波演示

介绍

      毫米波演示展示了 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.rhkb.cn/news/347961.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文字悬停效果

文字悬停效果 效果展示 CSS 知识点 CSS 变量使用回顾-webkit-text-stroke 属性的运用与回顾 页面整体结构实现 <ul><li style"--clr: #e6444f"><a href"#" class"text">First</a></li><li style"--cl…

苹果WWDC重磅发布的IOS 18、Apple Intelligence背后的技术分析!

2024年6月10日&#xff0c;在2024年WWDC全球开发者大会上&#xff0c;苹果推出了Apple Intelligence&#xff0c;这是深度集成到iOS 18、iPadOS 18和macOS Sequoia中的个人智能系统。 为了让大模型能在 iPhone 端侧跑&#xff0c;苹果还是做了很多事情的。接下来就跟大家介绍一…

Spring学习笔记

1 spring介绍 1)为什么学习spring ​ 1. Spring技术是JavaEE开发必备技能&#xff0c;企业开发技术选型命中率>90% ​ 2. 简化开发&#xff0c;降低企业级开发的复杂性 ​ 3. 框架整合&#xff0c;高效整合其他技术&#xff0c;提高企业级应用开发与运行效率 ​ 作为一…

IDEA创建Mybatis项目

IDEA创建Mybatis项目 第一步&#xff1a;创建库表 -- 创建数据库 create database mybatis_db;-- 使用数据库 use mybatis_db;-- 创建user表 CREATE TABLE user (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL,password VARCHAR(50) NOT NULL,email VARC…

Django API开发实战:前后端分离、Restful风格与DRF序列化器详解

系列文章目录 Django入门全攻略&#xff1a;从零搭建你的第一个Web项目Django ORM入门指南&#xff1a;从概念到实践&#xff0c;掌握模型创建、迁移与视图操作Django ORM实战&#xff1a;模型字段与元选项配置&#xff0c;以及链式过滤与QF查询详解Django ORM深度游&#xff…

第十五届蓝桥杯大赛 国赛 pb组F题【括号与字母】(15分) 栈的应用

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 试题F:括号与字母 【问题描述】 给定一个仅包含小写字母和括号的字符串 S …

【CentOS 7】挑战探索:在CentOS 7上实现Python 3.9的完美部署指南

【CentOS 7】挑战探索&#xff1a;在CentOS 7上实现Python 3.9的完美部署指南 大家好 我是寸铁&#x1f44a; 总结了一篇【CentOS 7】挑战探索&#xff1a;在CentOS 7上实现Python 3.9的完美部署指南详细步骤✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 此篇教程只适用于p…

LeetCode 算法: 旋转图像c++

原题链接&#x1f517;&#xff1a; 旋转图像 难度&#xff1a;中等⭐️⭐️ 题目 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图…

OrangePi AIpro小试牛刀-目标检测(YoloV5s)

非常高兴参加本次香橙派AI Pro&#xff0c;香橙派联合华为昇腾打造的一款AI推理开发板评测活动&#xff0c;以前使用树莓派Raspberry Pi4B 8G版本&#xff0c;这次有幸使用国产嵌入式开发板。 一窥芳容 这款开发板搭载的芯片是和华为昇腾的Atlas 200I DK A2同款的处理器&#…

服务器通的远程桌面连接不上,服务器通的远程桌面连接不上解决方法

当面临服务器远程桌面连接不上的问题时&#xff0c;专业的处理方式需要遵循一系列步骤来确保问题得到准确且高效的解决。以下是一些建议的解决方法&#xff1a; 一、初步排查与诊断 1. 检查网络连接&#xff1a; - 确保本地计算机与服务器之间的网络连接是稳定的。 - 尝…

【万方数据库爬虫简单开发(自用)】

万方数据库爬虫简单开发&#xff08;自用&#xff09;&#xff08;一&#xff09; 使用Python爬虫实现万方数据库论文的搜索并获取信息1.获取url2.输入关键词3.使用BeautifulSoup解析4.获取文章标题信息 使用Python爬虫实现万方数据库论文的搜索并获取信息 后续会逐步探索更新…

【Mac】Downie 4 for Mac(视频download工具)兼容14系统软件介绍及安装教程

前言 Downie 每周都会更新一个版本适配视频网站&#xff0c;如果遇到视频download不了的情况&#xff0c;请搜索最新版本https://mac.shuiche.cc/search/downie。 注意&#xff1a;Downie Mac特别版不能升级&#xff0c;在设置中找到更新一列&#xff0c;把自动更新和自动downl…

【数据结构】二叉树:一场关于节点与遍历的艺术之旅

专栏引入 哈喽大家好&#xff0c;我是野生的编程萌新&#xff0c;首先感谢大家的观看。数据结构的学习者大多有这样的想法&#xff1a;数据结构很重要&#xff0c;一定要学好&#xff0c;但数据结构比较抽象&#xff0c;有些算法理解起来很困难&#xff0c;学的很累。我想让大家…

QT中为程序加入超级管理员权限

QT中为程序加入超级管理员权限 Chapter1 QT中为程序加入超级管理员权限1. mingw编译器2. MSVC编译器3. CMAKE Chapter2 如何给QT程序添加管理员权限(UAC)的几种方法1、Qt Creator中方案一&#xff1a;&#xff08;仅适用于使用msvc编译器&#xff09;方案二&#xff1a;&#x…

uniapp地图自定义文字和图标

这是我的结构&#xff1a; <map classmap id"map" :latitude"latitude" :longitude"longitude" markertap"handleMarkerClick" :show-location"true" :markers"covers" /> 记住别忘了在data中定义变量…

【目标检测】基于深度学习的车牌识别管理系统(含UI界面)【python源码+Pyqt5界面 MX_002期】

系统简介&#xff1a; 车牌识别技术作为经典的机器视觉任务&#xff0c;具有广泛的应用前景。通过图像处理方法&#xff0c;车牌识别技术能够对车牌上的字符进行检测、定位和识别&#xff0c;从而实现计算机对车牌的智能化管理。在现实生活中&#xff0c;车牌识别系统已在小区停…

springboot宠物领养管理系统计算机毕业设计源码46534

摘 要 网络发布信息有其突出的优点&#xff0c;即信息量大&#xff0c;资源丰富&#xff0c;更新速度快等&#xff0c;很符合人们希望以捷、便利的方式获得最多最有效信息的要求。本系统就是一个网上宠物领用的系统&#xff0c;为宠物爱好者提供一个信息发布的平台&#xff0c…

webshell获取总结(cms获取方法、非cms获取方法、中间件拿Webshell方法)

目录 前期准备&#xff1a; 1、cookices靶场网站搭建&#xff1a; 2、dedecms靶场环境搭建&#xff1a; 获取Webshell方法总结&#xff1a; 一、CMS获取Webshell方法 二、非CMS获取Webshell方法 1、数据库备份获取Webshell 例如&#xff1a; 2、抓包上传获取Webshell 3、…

推荐这两款AI工具,真的很好用

巨日禄 巨日禄是一款由杭州巨日禄科技有限公司开发的AI工具&#xff0c;主要功能是将文本内容转换为视频。该工具通过分析大量的剧本数据和影视作品&#xff0c;为用户提供各种类型的故事情节和角色设置&#xff0c;帮助用户快速找到灵感&#xff0c;减少构思剧本的困难和犹豫。…

黑苹果睡眠总是自动唤醒(RTC)

黑苹果睡眠总是自动唤醒【RTC】 1. 问题2. 解决方案2.1. 查看重启日志2.2. 配置Disable RTC wake scheduling补丁 3. 后续4. 参考 1. 问题 黑苹果EFI 更换后&#xff0c;总是在手动 睡眠后&#xff0c;间歇性重启&#xff0c;然后再次睡眠&#xff0c;然后再重启。原因归结为&…