毫米波SDK使用1

news2025/1/20 10:45:27

      本文档是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.coloradmin.cn/o/1801635.html

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

相关文章

在虚拟机上搭建 Docker Kafka 宿主机器程序无法访问解决方法

1、问题描述 在虚拟机CentOS-7上搭建的Docker Kafka ,docker内部可以创建Topic、可以生产者数据、可以消费数据&#xff0c;而在宿主机开发程序无法消费Docker Kafka的数据。 1.1、运行情况 [dockerlocalhost ~]$ docker ps -a CONTAINER ID IMAGE COMMAND…

YOLOv8 segment介绍

1.YOLOv8图像分割支持的数据格式&#xff1a; (1).用于训练YOLOv8分割模型的数据集标签格式如下: 1).每幅图像对应一个文本文件&#xff1a;数据集中的每幅图像都有一个与图像文件同名的对应文本文件&#xff0c;扩展名为".txt"; 2).文本文件中每个目标(object)占一行…

CF279A Point on Spiral 题解

解题思路 按照题目中的规律画出来的图片如下&#xff1a; 那么&#xff0c;我们直接根据规律判断当前查询的节点在那一条线段上就可以了。易得&#xff0c;当前的基础转向次数为 max ( ∣ x ∣ − 1 , ∣ y ∣ − 1 ) 4 (|x|-1,|y|-1)\times 4 (∣x∣−1,∣y∣−1)4&#x…

芯片软件复位的作用

在调试系统或现场使用时&#xff0c;常用软件复位而不是频繁地通过断电来实现复位操作有以下优劣势&#xff1a; 优势&#xff1a; 数据完整性&#xff1a;通过软件复位&#xff0c;系统可以在一个受控的环境中重新启动&#xff0c;确保数据的完整性和一致性&#xff0c;避免…

Spring Boot 使用自定义注解和自定义线程池实现异步日志记录

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

Diffusers代码学习: IP-Adapter Inpainting

IP-Adapter还可以通过Inpainting自动管道和蒙图方式生成目标图片。 # 以下代码为程序运行进行设置&#xff0c;使用Inpainting 的自动管道&#xff0c; import os os.environ["HF_ENDPOINT"] "https://hf-mirror.com"from diffusers import AutoPipelin…

0基础学习区块链技术——链之间数据同步样例

大纲 创建区块新增链区块链直接替换 我们可以在https://blockchaindemo.io/体验这个过程。 创建区块 默认第一个链叫Satoshi(中本聪)。链上第一个区块叫“创世区块”——Genesis Block。后面我们会看到创建的第二条链第一个区块也是如此。 新增链 新创建的链叫Debby。默认…

android中调用onnxruntime框架

创建空白项目 安装Android Studio及创建空白项目参考&#xff1a;【安卓Java原生开发学习记录】一、安卓开发环境的搭建与HelloWorld&#xff08;详细图文解释&#xff09;_安卓原生开发-CSDN博客 切记&#xff1a;build configuration language 一定选择Groovy&#xff01;官…

向量化:机器学习中的效率加速器与数据桥梁

在机器学习领域的广袤天地中&#xff0c;向量化技术以其独特的魅力&#xff0c;为数据处理和模型训练注入了强大的动力。本文将深入探讨向量化在机器学习领域中的体现&#xff0c;剖析其如何助力模型实现高效的数据处理和精确的结果预测&#xff0c;并通过丰富的案例和详尽的数…

【人工智能Ⅱ】实验8:生成对抗网络

实验8&#xff1a;生成对抗网络 一&#xff1a;实验目的 1&#xff1a;理解生成对抗网络的基本原理。 2&#xff1a;学会构建改进的生成对抗网络&#xff0c;如DCGAN、WGAN、WGAN-GP等。 3&#xff1a;学习在更为真实的数据集上应用生成对抗网络的方法。 二&#xff1a;实验…

Vue2学习(04)

目录 一、组件的三大组成部分 二、组件的样式冲突scoped 三、scoped原理 ​编辑 四、data是一个函数 五、组件通信 六、props详解 七、非父子通信 1.eventbus事件总线(可以一传多)--->作用是在非父子组件之间&#xff0c;进行简易的消息传递&#xff08;复杂场景---&…

深拷贝、浅拷贝、引用拷贝

深拷贝和浅拷贝的区别 1. 引用拷贝2. 对象拷贝 1. 引用拷贝 两个对象指向同一个地址值。 创建一个指向对象的引用变量的拷贝Teacher teacher new Teacher("Taylor",26); Teacher otherteacher teacher; System.out.println(teacher); System.out.println(otherte…

【面试干货】如何选择MySQL数据库存储引擎(MyISAM 或 InnoDB)

【面试干货】如何选择MySQL数据库存储引擎(MyISAM 或 InnoDB&#xff09; &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; MySQL数据库存储引擎是一个 关键 的考虑因素。MySQL提供了多种存储引擎&#xff0c;其中最常用的是 MyISAM 和 InnoD…

[word] word表格如何设置外框线和内框线 #媒体#笔记

word表格如何设置外框线和内框线 点击表格的左上角按钮从而选中表格 点击边框按钮边上的下拉箭头&#xff0c;选择边框和底纹 点击颜色边上的下拉箭头&#xff0c;选择红色 点击取消掉中间的边框&#xff0c;只保留外围边框 点击颜色边上的下拉箭头&#xff0c;选择另外一个颜…

2013.8.5-2024.5.10碳排放权交易明细数据

2013.8.5-2024.5.10碳排放权交易明细数据 1、时间&#xff1a;2013.8.5-2024.5.10 2、来源&#xff1a;各碳排放交易所 3、范围&#xff1a;各交易所城市 4、指标&#xff1a;行政区划代码、地区、所属省份、交易日期、交易品种、开盘价_元、最高价_元、最低价_元、成交均价…

【全部更新完毕】2024全国大学生数据统计与分析竞赛A题思路代码文章教学数学建模-抖音用户评论的文本情感分析

文章摘要部分&#xff1a; A 题&#xff1a; 抖音用户评论的文本情感分析 摘要 随着短视频平台的迅猛发展&#xff0c;抖音已成为全球最受欢迎的短视频分享平台之一。然而&#xff0c;随着用户数量和使用时长的增加&#xff0c;抖音团队需要不断优化平台功能、提升用户体验&…

生成纳秒级别的时间戳,高性能

问题 同步influxdb有些数据没有&#xff0c;不知道啥原因&#xff0c;后来百度发现时间需要唯一&#xff0c;毫秒还会重复&#xff0c;只能采用纳秒处理了 java实现 TimeStampUtils.java package com.wujialiang;/*** 获取纳秒值的工具类*/ public class TimeStampUtils {/…

面试题-Vue2和Vue3的区别

文章目录 1. 响应式系统2. 组合式 API (Composition API)3. Fragment (碎片)4. Teleport (传送门) 5. 性能改进6. 移除或改变的功能7. 构建工具8. TypeScript 支持 Vue 2 和 Vue 3 之间存在许多重要的区别&#xff0c;这些区别涵盖了性能、API 设计、组合式 API&#xff08;Com…

产品NPDP+项目PMP助你成长

前言 从管理的角度来讲,产品经理和项目经理的区别,我们应该吧项目经理和产品的区别分为一纵一横,那一纵就是我们的项目经理,项目经理在整个新产品研发过程中他扮演的是管理监督项目参与者的角色,其中包括研发部门、技术部门、市场部门或是销售部门等等。他所要做的事情就…

【Unity】Kafka、Mqtt、Wesocket通信

1 前言 最近研究了下kafka、mqtt、webocket插件在Unity网络通信中的应用&#xff0c;做下小总结吧。&#xff08;不想写笔记&#xff0c;但不写又会忘&#xff0c;痛苦&#xff09; 2 Kafka 先说结果&#xff1a;Kafka实现失败。 我会使用的方法是在VS里安装了Confluent.Kafka…