前言
写在最前面, 如果博客内容与实际TI文档有任何出入,请以TI官方文档为准.
在前几个mmWave_Tutorial的博客中我们讲的关于TI out box demo, Ti 3D people counting demo 以及使用他们的数据进行的目标跟踪与航迹管理, 那读者们就很容易好奇在mmWave SoC 里面真正进行了怎样的处理,它的程序又是怎样编写的呢? 从本篇博客开始我们将一步一步的去了解 ti out of box demo 中的一些细节,我们将首先从整个软件的架构开始讲起同时也会结合相应的硬件结构进行讲述, 这个部分中如果读者有兴趣, 我强烈建议读者去自行阅读如下所示ti官方的文档
ti/mmwave_sdk_03_04_00_03/packages/ti/demo/xwr68xx/mmw/docs/doxygen/html/index.html
Hardware System Overview
TI out box demo运行在mmWave SoC上, 要去理解一个软件架构是如何工作的首先就需要去了解支持这个软件运行的硬件架构是怎样, 如下图
我们可以看到, 整个mmWave SoC系统由4个子系统构成
- RF/Analogy sub-system: 主要负责发射射频链路的信号合成, 移相以及功率放大, 接收射频链路的低噪声放大, 相干接收(混频,滤波)等等, 是TI MMIC的核心技术
- Radio processor sub-system: 主要负责后端的数字下变频(DDC), 相位矫正等等功能, 与射频前端的组合成一个由TI预programmed的blackbox, 也只对外部系统提供API
- Main sub-system: 由一个arm cortex R4F内核以及相应的数字系统构成(如总线, 硬件加速器(硬核), 数字外设等等), 主要负责系统的控制, 部分信号处理和与外部的交互等等
- DSP sub-system: 由一个C674x DSP大核和周边数字系统构成, 承担了系统大部分的信号处理工作, 同时也控制了由DFE来的数据通过LVDS向外传输的过程(DFE的数据会直接送入DSP的L3 Cache中).
mmWave雷达的控制和信号处理任务是分散在一个芯片上的各个不同子系统上的, 而我们在进行软件设计时往往需要设计一个统一的执行框架, 使得不同子系统的信息能够高效的交互, 那么ti的工程师在设计相关的软件时也始终贯彻这个理念. 对于我们这样的用户来说我们真正需要关心的是在ti进行芯片设计时预留出了哪些用户可以编程的部分, 答案当然是ARM和DSP, TI也提供了一套完整的系统执行框架-实时嵌入式操作系统SYSBIOS, 熟悉嵌入式操作系统的读者应该对于这个不会感到陌生, 而且ti官方也提供给我们了丰富的外设驱动程序, 只要在进行程序设计时, 能够正确的处理不同线程间的信号量, mmWave SoC系统开发人员就能够实现大部分的功能. 有了多个异构运算核心的统一的执行框架, 那么ARM和DSP之间信息如何交互呢, 在上图中我们可以看到Bus Matrix 和 Mailbox, 他们就是信息交互的硬件基础.
Software System Overview
下图显示了系统执行流程, 这幅图又大又长, 笔者在看到这幅图也是懵逼的但是我将在接下来的一篇博客中带着大家一起简单的过一遍这幅图. 在这里需要从这幅图中先粗略的get到一些上文中提到的概念的映射, 比如BSS代表RF/Analogy sub-system和Radio processor sub-system, MSS代表Main sub-system, BSS 代表 DSP sub-system. ARM和DSP即MSS 和 DSS 的线程间通信 IPC在图中的表示等等