毫米波SDK使用1

      本文档是AM273x等毫米波雷达处理器SDK的配置和使用,主要参考TI的官方文档《mmwave mcuplus sdk user guide》。这里仅摘取其中重要的部分,其余枝节可参考原文。

2 系统概览

        mmWave SDK分为两个主要组件:mmWave套件和mmWave演示。

2.1. mmWave套件

        mmWave套件是mmWave SDK的基础软件部分,将封装这些较小的组件:

  1. 驱动程序(MCU PLUS SDK的一部分)
  2. DPL (MCU PLUS SDK的一部分)
  3. mmWaveLink和固件(设备固件包的一部分- DFP)
  4. mmWave API
  5. 数据处理层(管理器、处理单元)
  6. 板设置和Flash实用程序

2.2 mmWave演示

        SDK提供了描述毫米波应用程序的各种控制和数据处理方面的演示。作为这些演示的一部分,在PC上提供了演示输出的数据可视化。这些演示是提供给客户的示例代码,用于了解毫米波设备和SDK的内部工作原理,并帮助他们开始开发自己的应用程序。

2.3 外部依赖关系

        构建mmWave SDK所需的所有工具/组件都包含在mmWave SDK安装程序中。但是CCS (用于调试)不包含在mmWave SDK中。

        请参阅mmWave SDK发布说明,了解这些外部依赖项的详细信息以及支持的平台列表。AM273x MCU+ SDK: Using SDK with CCS Projects (ti.com)

2.4 本文档中使用的术语

使用的术语

评论

xWR

这在整个文档中都被使用,其中的章节/组件/模块适用于AWR和IWR的变体

BSS

这在源代码中使用,在本文档中也有少量用于表示RADARSS。它也可以互换称为mmWave前端。注意,这个术语只在AWR294X和AWR2544 soc上下文中使用。

MSS

主子系统。它也可以互换地称为Cortex R5F。

DSS

DSP子系统。它也可以互换地称为DSS或C66x核心。

3 开始上手

        开始使用mmWave SDK的最佳方法是运行软件包中提供的各种演示程序中的一个。TI mmWave EVM与mmWave演示一起预先闪现。但是,预闪演示的版本可能比本文档中提到的SDK版本早。用户可以按照本节升级/运行闪过的演示版本。演示(源代码和预构建的二进制文件)放在mmwave_mcuplus_sdk_<ver>/ti/demo/<platform>/mmw/文件夹中。

毫米波demo

        这个演示位于mmwave_mcuplus_sdk_<ver>/ti/demo/<platform>/mmw文件夹。毫米波演示展示了使用毫米波SDK(软件开发工具包)中的驱动程序的SoC的一些雷达传感和目标检测功能。它允许用户指定chirp配置文件,并实时显示检测到的对象和其他信息。这个演示的详细说明可以在演示的docs文件夹中找到,可以通过mmwave_mcuplus_sdk_<ver>/docs/mmwave_sdk_module_document .html浏览。该演示提供检测到的对象和其他实时信息,可以使用TI Gallery应用程序- 'mmWave demo Visualizer'进行可视化,托管在-https://dev.ti.com/gallery/view /mmWave /mmWave_Demo_Visualizer。运行在TI mmWave EVM上的mmWave Demo版本可以通过Visualizer应用中的HelpAbout菜单获得。

        另外,提供的级联demo必须在级联的硬件板上运行,由于AM2732开发板是和AWR2243一起使用,只有单个射频芯片,无法运行cascade模式的demo,下图是TI论坛的解释,也可以参考4.6节的内容。

        下面的部分描述了用演示启动设备然后执行它的一般过程,这里只摘录一部分,更详细内容可参考原文档。

3.1 硬件设置(EVM详细信息)

        下面的EVM图显示了一些重要的电缆连接、端口和交换机。注意“BOOT MODE”开关的位置,这用于在不同的启动模式之间切换,如OSPI, UART, NOBOOT模式。

        请参阅EVM用户指南以了解EVM的启动模式(毫米波设备的EVM用户指南中的“感应电源(SOP)跳线”部分)。

3.1.1 AM273x

3.2 毫米波器件编程

        以下是对毫米波设备及其提供的可编程内核的一些了解。有关详细信息,请参阅相应毫米波设备的技术参考手册。在使用CCS加载二进制文件和/或理解“入门”一节中存在的各种术语时,需要这些详细信息

3.2.1 AM273x

        该器件具有一个cortex R5F内核和一个DSP C66x内核,可用于用户编程,分别称为MSS/R5F和DSS/ C66x。演示有两个可执行文件——一个用于MSS,一个用于DSS,它们应该并发加载,以便演示工作。有关详细信息,请参见运行演示部分。单元测试可能有MSS或DSS的可执行文件,或者两者都有。这些可执行文件意味着在独立操作中运行。这意味着可以在MSS R5F上加载并运行MSS单元测试可执行文件,而无需在DSS上下载任何代码。

        类似地,可以在DSS C66x上加载和运行DSS单元测试可执行文件,而无需在DSS上下载任何代码。这方面的例外是在完整单元测试和数据路径管理器(DPM)单元测试下的毫米波单元测试。

4.6 如何运行2片级联应用(仅适用于AM273X + 2xAWR2243 EVM)

        预构建的二进制文件(仅限R5F)可在mmwave_sdkmmwave_mcuplus_sdk_<ver>/ti/utils/test/cascade/am273x中获得。2片级联应用支持捕获原始ADC数据使用DCA1000 EVM。

        1.级联EVM上电。

        2.连接R5F核,下载“am273x_cascade_mss.xer5f“应用,不启动执行。

        3.从mmwave_sdkmmwave_mcuplus_sdk_/tools/data_capture拷贝AM273X_Capture.json文件。

        4.在应用启动执行前,打开C:/ti/mmwave_studio_03_00_00_14/mmWaveStudio/PostProc的命令提示符,然后发出以下命令。

           a. DCA1000EVM_CLI_Control.exe fpga AM273X_Capture.json

           b. DCA1000EVM_CLI_Control.exe start_record AM273X_Capture.json

           c. AM273X_Capture.json file configures to save the captured LVDS data at "C:\ti\data_capture\am273x__Raw_0"

      5.应用启动执行。

5 毫米波SDK深度解析

5.1 系统部署

      典型的毫米波应用程序将执行以下操作:

  1. 通过mmaveLink实现射频前端的控制和监控
  2. 通过标准外设传输外部通信
  3. 部分雷达数据处理采用DSP

        毫米波传感器的典型客户部署如下图所示:

        1.appimage (MSS + DSS代码)从连接到毫米波设备的串行闪存(通过QSPI)下载;

        2.远程实体的可选高级控制;

        3.发送低速数据输出(检测到的对象)到远程实体.

图5-4 自主毫米波传感器(独立模式)

        上述部署可以使用毫米波SDK及其分层结构中的组件来实现,如下所示:

图5-5 SDK分层框图

5.2 典型毫米波雷达处理链

        下图显示了一个典型的毫米波雷达处理链,它接收ADC数据作为毫米波前端的输入,然后执行距离和多普勒FFT,然后使用CFAR进行非相干检测。最后利用三维FFT估计角度,检测到的点代表点云数据。然后,点云数据可以使用更高层的算法(如聚类、跟踪、分类)进行后处理,以表示真实世界的目标。

图5-6 典型毫米波雷达处理链

        在以HWA为处理节点的设备上,使用mmWave SDK可以实现如下图所示的上述处理链。下图中,绿色箭头表示控制路径,红色箭头表示数据路径。蓝色块是毫米波SDK组件,黄色块是自定义应用程序代码。软件流/调用的层次结构用嵌入框表示。根据高级算法(如聚类、跟踪等)的复杂性及其内存/MIPS消耗,它们可以部分在毫米波设备内实现,也可以完全在外部处理器上运行。

图5-7 使用毫米波SDK组件的典型的毫米波雷达处理链

        每个毫米波器件提供不同的处理节点来实现毫米波处理。AM273X具有HWA+DSP(C66x)。对于具有多个处理节点的设备,毫米波检测处理链可以根据性能和可扩展性的需要利用它们。下图是一个检测处理链的示例,它使用各种数据处理单元(DPU)来执行典型的毫米波处理直至点云。毫米波设备存储器中的毫米波数据表示形成了各个DPU之间的接口层。每个DPU都可以使用HWA或DSP处理节点独立实现——选择取决于用例或给定毫米波设备上该处理节点的可用性。

图5-8 使用毫米波SDK的可扩展数据处理链

        请参阅mmwave_mcuplus_sdk_<ver>\ti\demo\<platform>\mmw文件夹中的代码和文档,了解有关如何使用mmWave SDK组件实现此链的更多详细信息和示例代码。

5.3 典型编程顺序

        上述处理链可以分为两个不同的块:射频控制路径和数据路径。

5.3.1 射频控制路径

        上述处理链中的控制路径由下列模块描述。

图5-9 典型毫米波雷达控制流

        下面的一组图显示了设置典型控制路径(init、config、start)的应用程序编程顺序。这是一个简化的高级图,以突出显示主要的软件API,可能不会显示所有的处理元素和调用流。有关此调用流的示例实现,请参阅mmwave_mcuplus_sdk_<ver>\ti\demo\<platform>\mmw文件夹中的代码和文档。

5.3.1.2 单射频控制(MSSRADARSS或DSSRADRSS)

        在这种情况下,射频控制路径运行在主子系统(Cortex-R5F)或DSP子系统(C66x)上,应用程序可以简单地以隔离模式调用SDK中的毫米波API来实现大部分功能。

图5-10 毫米波隔离模式:详细控制流(初始化顺序)

图5-11 毫米波隔离模式:详细控制流(配置顺序)

5.3.1.3 协同射频控制((MSS+DSS)<->RADARSS)

        在这种情况下,控制路径可以以“合作”模式运行,其中RF控制API可以被两个域互换调用(但需要维护API的顺序)。这样的部署可以让射频初始化和配置由MSS发起,并且在数据路径配置完成后由DSS发起启动。在下面的图中,控制路径完全运行在MSS上,MSS负责正确配置RADARSS (射频)和DSS(数据处理)。毫米波单元测试提供了这种合作模式的示例实现。

图5-13 毫米波协同模式:详细控制流(初始化顺序)

图5-14 毫米波协同模式:详细控制流(配置顺序)

图5-15 毫米波协同模式:详细控制流(启动顺序)

5.3.2 数据路径

        毫米波检测处理可以分为以下应用代码层,控制/管理层操作数据处理元素,处理链连接各个模块创建数据流和低层数据处理模块和接口。

图5-16 典型毫米波检测处理层

        毫米波设备提供了一些关于如何使用设备内的各种控制/处理节点来实现数据处理层的选项。为了便于跨这些部署类型编程,数据路径管理器(DPM)向应用程序提供了简化的API结构,同时隐藏了任务间和处理器间通信的复杂性。从下图中可以看出,应用程序只需要调用各种DPM API来控制处理链(在下面的梯形图中看到“蓝色”的函数调用),并在报告回调中对这些API的结果做出反应。数据处理链(DPC)也通过DPM向应用程序提供了一个标准化的API结构,并使用数据处理单元(DPU)封装了数据流的实现,同时提供了基于IOCTL的简单接口来配置和触发数据流。基于用例和毫米波设备硬件功能,应用程序可以选择以下部署之一:

  1. DPC与控制核心在同一核心上运行,应用程序可以通过DPM在本地模式下控制DPC。(见下面的本地域配置和处理图)
  2. DPC运行在与控制核心不同的另一个核心上,应用程序可以通过DPM远程控制DPC。(参见下面的远程域配置和处理图)
  3. DPC分为两个核心,应用程序可以在分布式模式下通过DPM控制DPC。(见下图分布式域配置及处理图)

        下面的梯形图显示了初始化、两种不同形式的配置(一种在本地核心上启动,另一种在远程核心上启动)、启动触发器、chirps/frame事件和停止触发器的流程。MSS和DSS职责的选择是一个可能的例子——它们的角色可以根据应用程序的需要互换。这些梯形图没有显示相应的毫米波/射频控制调用,以显示射频控制和数据路径控制之间的独立性。尽管如此,典型的应用程序将遵循以下两种形式的控制流程:

  1. mmWave初始化和DPM初始化(顺序不重要)
  2. 毫米波配置和DPM IOCTL的DPC配置(顺序不重要)
  3. DPM启动,然后毫米波启动(注意,建议这样做,因为DPC应该在毫米波启动导致的实时帧/chirp H/W事件发生之前处于启动状态)
  4. 毫米波停止,然后DPM停止(注意,建议这样做,因为DPC应该在实时帧/chirp H/W事件由于毫米波停止而停止后停止)
5.3.2.2 具有本地域控制的数据处理流程

        在此部署中,运行实际数据处理链(DPC)的核心(MSS或DSS)也控制它。应用程序调用DPM API进行初始化,数据处理IOCTL进行配置,启动和停止。DPM使用应用程序注册的报告回调函数从DPC报告状态。应用程序为DPM/DPC运行提供了一个执行上下文(任务)。DPC将处理结果(点云、跟踪对象等)提供给这个执行上下文中的应用程序。

图5-17 具有本地域控制的数据处理流程(初始化/配置)

图5-18 具有本地域控制的数据处理流程(启动/chirp/帧/停止)

5.3.2.3 具有远程域控制的数据处理流程

        在此部署中,数据处理链在选定的数据核心上运行,而它的控件存在于另一个核心上。控制核心和数据核心上的应用程序代码调用DPM API进行初始化和同步。控制核心调用数据处理IOCTL来配置、启动和停止API。H/W事件在数据核上接收。DPM使用应用程序在控制核和数据核上注册的报告回调函数从DPC报告状态。DPC将处理结果(点云、跟踪对象等)返回给数据核心应用程序代码,数据核心应用程序代码可以使用DPM发送结果API将结果发送给控制核心。

图5-19 具有远程域控制的数据处理流程(初始化/配置)

图5-20 具有远程域控制的数据处理流程(启动/chirp/帧/停止)

5.3.2.4 分布式数据处理流程和控制

        在此部署中,数据处理链与控件一起拆分为多个核心。两个核心上的应用程序代码调用DPM API进行初始化和相互同步。任何一个核心都可以调用数据处理IOCTL来配置、启动和停止API。DPM使用两个核心上的应用程序注册的报告回调函数从DPC报告状态。可以使用DPM中继结果API将运行在一个核心上的DPC的部分结果传递给运行在另一个核心上的DPC。DPC可以将最终的处理结果(点云,跟踪对象等)提供给同一核心的应用程序代码,然后该代码可以使用DPM发送结果API将结果发送给运行在其他核心上的应用程序。下面的梯形图显示了将DPC分成两个核心的众多方法之一。

图5-20 分布式数据处理流程和控制(初始化/配置)

图5-20 分布式数据处理流程和控制(启动/chirp/帧/停止)

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

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

相关文章

react 基础样式的控制(行内和className)

import ./index.cssconst style{color:red,font-size:150px }function App() {return (<div className"App"><h1>行内样式控制</h1><h1 style{{color:red,font-size:150px}} >asd </h1><span style{style} >asd </span>&l…

MATLAB算法实战应用案例精讲-【数模应用】数据孤岛(概念篇)

目录 前言 算法原理 什么是数据孤岛 数据孤岛产生的原因 数据孤岛的问题 什么时候数据孤岛不是坏事&#xff1f; 为什么很难摆脱数据孤岛 数据孤岛对企业造成的负面效应 数据孤岛的影响 数据孤岛的危害 如何解决数据孤岛问题 如何摆脱数据孤岛&#xff1f; 前言 数…

Java学习 - Maven - 常用命令(学习精选)

前言 在上一篇文章中&#xff0c;我们对 Maven 有了初步的了解&#xff0c;包括它的定义、安装步骤以及一些基本的配置方法。Maven 是一个强大的项目管理工具&#xff0c;它可以帮助开发者自动化构建过程&#xff0c;并且管理项目的依赖关系。 今天&#xff0c;我们将深入探讨…

高光谱图像聚类的像素-超像素对比学习与伪标签校正

Pixel-Superpixel Contrastive Learning and Pseudo-Label Correction for Hyperspectral Image Clustering 文章目录 Pixel-Superpixel Contrastive Learning and Pseudo-Label Correction for Hyperspectral Image Clustering摘要引言相关方法对比学习 方法超像素对比学习像素…

攻防世界---misc---Excaliflag

1、题目描述&#xff0c;下载附件是一张图片 2、用winhex分析&#xff0c;没有发现奇怪的地方 3、在kali中使用binwalk -e 命令&#xff0c;虽然分离出来了一些东西&#xff0c;但是不是有用的 4、最后用stegsolve分析&#xff0c;切换图片&#xff0c;发现有字符串&#xff0c…

番外篇 | 利用华为2023最新Gold-YOLO中的Gatherand-Distribute对特征融合模块进行改进

前言:Hello大家好,我是小哥谈。论文提出一种改进的信息融合机制Gather-and-Distribute (GD) ,通过全局融合多层特征并将全局信息注入高层,以提高YOLO系列模型的信息融合能力和检测性能。通过引入MAE-style预训练方法,进一步提高模型的准确性。🌈 目录 🚀1.论文解…

MyBatisPlus总结二

MybatisPlus总结一在这&#xff1a; MybatisPlus总结1/2-CSDN博客 六、分页查询&#xff1a; 6.1.介绍&#xff1a; MybatisPlus内置了分页插件&#xff0c;所以我们只需要配置一个分页拦截器就可以了&#xff0c;由于不同的数据库的分页的方式不一样&#xff0c;例如mysql和…

运维实用小脚本,登录即自动显示系统信息

今天给大家安利一个超级实用的Linux小技巧&#xff0c;让你每次登录终端时都能感受到满满的科技感和效率爆棚&#xff01; 你是否厌倦了每次手动检查系统状态&#xff0c;像内存使用、CPU负载这些繁琐操作&#xff1f;别担心&#xff0c;一个小调整&#xff0c;让这一切自动化…

HC-05蓝牙模块配置连接和使用

文章目录 1. 前期准备 2. 进入AT模式 3. 电脑串口配置 4. 配置过程 5. 主从机蓝牙连接 6. 蓝牙模块HC-05和电脑连接 1. 前期准备 首先需要准备一个USB转TTL连接器&#xff0c;电脑安装一个串口助手&#xff0c;然后按照下面的连接方式将其相连。 VCCVCCGNDGNDRXDTXDTXD…

LeetCode ---400周赛

题目列表 3168. 候诊室中的最少椅子数 3169. 无需开会的工作日 3170. 删除星号以后字典序最小的字符串 3171. 找到按位与最接近 K 的子数组 一、候诊室中的最少椅子数 简单的模拟题&#xff0c;我们可以这样来模拟&#xff1a;当有顾客来时&#xff0c;我们加一把椅子&…

如何使用GPT-4o函数调用构建一个实时应用程序?

本教程介绍了如何使用OpenAI最新的LLM GPT-4o通过函数调用将实时数据引入LLM。 我们在LLM函数调用指南(详见https://thenewstack.io/a-comprehensive-guide-to-function-calling-in-llms/)中讨论了如何将实时数据引入聊天机器人和代理。现在&#xff0c;我们将通过将来自Fligh…

React + SpringBoot实现图片预览和视频在线播放,其中视频实现切片保存和分段播放

图片预览和视频在线播放 需求描述 实现播放视频的需求时&#xff0c;往往是前端直接加载一个mp4文件&#xff0c;这样做法在遇到视频文件较大时&#xff0c;容易造成卡顿&#xff0c;不能及时加载出来。我们可以将视频进行切片&#xff0c;然后分段加载。播放一点加载一点&am…

【稳定检索/投稿优惠】2024年材料科学与能源工程国际会议(MSEE 2024)

2024 International Conference on Materials Science and Energy Engineering 2024年材料科学与能源工程国际会议 【会议信息】 会议简称&#xff1a;MSEE 2024大会地点&#xff1a;中国苏州会议官网&#xff1a;www.iacmsee.com会议邮箱&#xff1a;mseesub-paper.com审稿结…

【基于C++与OpenCV实现魔方图像识别和还原算法】施工总览图

文章目录 主要效果展示思维导图魔方还原算法 本系列博客长期更新&#xff0c;分为两大部分 OpenCV实现魔方六面识别 C编写科先巴二阶段还原算法实现三阶魔方的还原 主要效果展示 摄像头识别六面 3D图像构建&#xff0c;提供还原公式 动画演示还原过程 思维导图 魔方还原算法 参…

Java Web学习笔记26——Element常用组件

常见组件&#xff1a; 就是一个复制和粘贴的过程。 Table表格&#xff1a;用于展示多条结构类的数据&#xff0c;可对数据进行排序、筛选、对比或其他自定义操作。 常见组件-分页主键&#xff1a; Pagination&#xff1a;分页&#xff1a;当数据量比较多时&#xff0c;使用分…

sqlmap直接嗦 dnslog注入 sqllibs第8关

dnslog注入是解决注入的时候没有回显的情况&#xff0c;通过dns外带来进行得到我们想要的数据。 我们是用了dns解析的时候会留下记录&#xff0c;这时候就可以看见我们想要的内容。 这个时候我们还要了解unc路径以及一个函数load_file()以及concat来进行注入。看看我的笔记 unc…

atmel studio 无法通过printf打印浮点数到串口

择右侧的项目,右键,选择properties 系统把它优化了&#xff0c;所以删除&#xff0c;即可 然后&#xff0c;选择相应波特率&#xff0c;效验位&#xff0c;数据位是否正确&#xff0c;即可

Transformer 动画讲解:多层感知机

暑期实习基本结束了&#xff0c;校招即将开启。 不同以往的是&#xff0c;当前职场环境已不再是那个双向奔赴时代了。求职者在变多&#xff0c;HC 在变少&#xff0c;岗位要求还更高了。提前准备才是完全之策。 最近&#xff0c;我们又陆续整理了很多大厂的面试题&#xff0c…

Golang | Leetcode Golang题解之第138题随机链表的复制

题目&#xff1a; 题解&#xff1a; func copyRandomList(head *Node) *Node {if head nil {return nil}for node : head; node ! nil; node node.Next.Next {node.Next &Node{Val: node.Val, Next: node.Next}}for node : head; node ! nil; node node.Next.Next {if…

项目bug1

大项目测bug的时候让输入数字&#xff0c;如果不是则捕获异常&#xff0c;提示错误&#xff0c;几段很简单的代码&#xff1a; System.out.println("请输入要存入的金额"); Scanner sc new Scanner(System.in); while(true) {try {money sc.nextInt();break;} cat…