当前位置:网站首页>小猫爪:AWR294x学习笔记02-AWR294x之DPM&IPC
小猫爪:AWR294x学习笔记02-AWR294x之DPM&IPC
2022-08-04 05:58:00 【小猫爪】
小猫爪:AWR294x学习笔记02-AWR294x之DPM,IPC和Mailbox
1 前言
这一章稍来微介绍一下AWR294x的核间通信,即DPM,IPC以及Mailbox。
2 结构关系
首先得搞清楚DPM,IPC和Mailbox三者关系,如下图:
其中Mailbox很好理解,它其实就是一个专门实现核间通信的硬件外设;而IPC也很容易理解,它其实就是Mailbox的驱动软件;至于DPM它则是基于IPC搭建的一个可执行的软件架构,基于DPM则可以很轻松的实现核间通信管理。
3 MailBox简介
MailBox是AWR294x的一个硬件外设,它的原理也是非常的简单,其结构如下图:
通信原理为:每两个核之间都有两块专属RAM,其实一块用来核A读,核B写,而另外一块则是核A写,核B读,因为AWR294x里面有三个独立运行的核,所以这样的RAM共有6块。如果一个核需要给另外一个核发送信息的时候,那么发送核只需要在两个核的专属RAM中事先准备好需要传输的数据,然后再主动发送一个可以触发接收核RECEIVER中断的信号告知接收核有新数据需要读取,接收核读取完RAM中的数据后,则发送一个可以触发发送核Acknowledgment中断的信号告知发送核消息已读取,至此一次完整的核间通信完成。
4 IPC简介
IPC其实就是MailBox的底层驱动,,打开mmWave的SDK包,可以发现IPC分为了ipc_notify和ipc_rpmsg,其中ipc_notify实现了发送信号量,而ipc_rpmsg则是在ipc_notify的基础上实现了发送数据包。
在这里就不多说什么了,感兴趣的小伙伴可以去翻看一下源码了解一下。
5 DPM详解
DPM(Data Path Manager)是一个完整的软件架构,或者说是一个软件服务,只需要将其移植进软件中,就可以在这个软件架构上实现我们想要的功能,接下来看看它的架构是怎样的。
5.1 三种工作模式
首先DPM规定了其工作的三种模式,分别是Local Domian,Remote Domain,Distributed Domain,这三种的区别在于其在DPM架构中为控制端还是执行端。每个核可以给本身发送命令,也可以给其他核发送命令,当然也可以接收命令并执行,可以向另一个核发送命令的一端称为控制端,而接收另外一个核的命令并执行的一端被称为执行端。
5.1.1 Local Domain
这种模式下,只有一个核具有DPM服务,如下所示:
如上图,DPM工作在Local Domain模式下,MSS端本身不仅作为控制端,也作为执行端,MSS端只能给自己发送命令,并且自己解析命令并执行。在这个模式下,并没有第二个核来参与。
5.1.2 Remote Domain
这种模式下,需要两个核来运行DPM服务,举个例子如下:
如上图,DPM工作在Remote Domain模式下,MSS端作为控制端,而DSS端作为执行端,此时MSS端可以给DSS发送命令,而DSS作为执行端,接收MSS的命令并执行。
5.1.3 Distributed Domain
这种模式下,需要两个核来运行DPM服务,举个例子如下:
如上图,DPM工作在Distributed Domain模式下,MSS端作为控制端的同时也作为执行端,而DSS端也是同样如此,两者互相发送和接收MSS的命令并执行。
5.2 DPM流程的实现
那DPM建立了一个什么样的软件机制来实现核间通信的呢?
DPM服务本身具有一个操作解释器,不管是控制端还是执行端,为了完成一次行为都需要发起或者接收一个或者多个操作,然后去执行,比如说有初始化操作,开始服务操作以及停止服务操作等。为此DPM定义了一个操作队列,DPM在运行时会根据目的需求往这个操作队列里面插入操作元素从而来发起操作,然后DPM就会从队列中读取操作并执行。DPM中定义了如下操作类型:
操作类型 | 描述 | 操作端 |
---|---|---|
DPM_MessageId_START | 启动DPM服务 | 控制端和执行端分别发起和执行 |
DPM_MessageId_STOP | 停止DPM服务 | 控制端和执行端分别发起和执行 |
DPM_MessageId_DPC_CFG | DPC配置,可自定义子类型,通常用其从控制端向执行端传输信息 | 控制端发起,执行端执行 |
DPM_MessageId_BSS_FAULT | CPU/ESM错误报告 | 控制端发起,执行端执行 |
DPM_MessageId_DPC_ASSERT | ASSERT报告 | 控制端和执行端分别发起和执行 |
DPM_MessageId_RESULT | 结果反馈,执行端执行操作后向控制端反馈执行结果 | 执行端发起和控制端执行 |
DPM_MessageId_DPC_INFO | 输出DPC信息 | 控制端和执行端分别发起和执行 |
DPM_MessageId_RESPONSE | 操作响应,控制端和执行端执行操作后的响应 | 控制端和执行端分别发起和执行 |
如果想要实现一个行为的话就需要单个或者多个操作相互组合才能实现,这样说可能比较抽象,接下来举个非常通用的例子就是,如果想实现从MSS端给DSS端发送命令或者数据的功能,那么在DPM中是怎样的一个过程呢?首先需要使用DPC配置操作来传输数据或者命令,流程如下图:
5.3 DPM的函数
DPM可供外部调用的函数如下:
名称 | 描述 |
---|---|
DPM_execute | 操作解释器,从操作队列中获取操作并执行,需周期性调用,操作队列为空时,其内的信号量堵塞 |
DPM_ioctl | 发起操作,包括DPC_CFG,DPC_CFG,BSS_FAULT,DPC_INFO,按需调用 |
DPM_start | 启动DPM服务,start-up时调用一次 |
DPM_sendResult | 用于执行端向控制端发送执行结果 |
DPM_relayResult | 用于执行端向控制端发送执行结果,只能在Distributed Domain模式中使用 |
DPM_stop | 停止DPM服务 |
DPM_notifyExecute | post信号量,让DPM_execute执行一次 |
DPM_synch | 完成DPM同步,start-up时在DPM_init后调用一次 |
DPM_init | 初始化DPM,start-up时调用一次 |
DPM_deinit | 复位DPM相关配置 |
所以结合DPM的函数,以非Local Domain模式为例,DPM运行Flow如下:
END
边栏推荐
- 叔本华的《人生的智慧》感悟
- Activiti 工作流引擎 详解
- 事件链原理,事件代理,页面的渲染流程,防抖和节流,懒加载和预加载
- Gramm Angle field GAF time-series data into the image and applied to the fault diagnosis
- A priori box (Anchor) in target detection
- MMDeploy部署实战系列【第三章】:MMdeploy pytorch模型转换onnx,tensorrt
- DropBlock: 卷积层的正则化方法及复现代码
- 天鹰优化的半监督拉普拉斯深度核极限学习机用于分类
- MATLAB 的ICEEMDAN分解代码实现
- Different lower_case_table_names settings for server (‘1‘) and data dictionary (‘0‘) 解决方案
猜你喜欢
ubuntu18.04安装redis教程
基于时序模式注意力机制(TPA)的长短时记忆(LSTM)网络TPA-LSTM的多变量输入风电功率预测
MySQL(4)
Microsoft computer butler 2.0 beta experience
HbuilderX 启动微信小程序 无法打开项目
NelSon:一款新的适配matlab编程语法的编程工具
数据库:整理四个实用的SQLServer脚本函数
手把手教你Charles抓包工具使用
2DCNN, 1DCNN, BP, SVM fault diagnosis and result visualization of matlab
西门子PLC1200与fanuc机器人进行profibus通讯
随机推荐
基于爬行动物搜索RSA优化LSTM的时间序列预测
MMDeploy部署实战系列【第四章】:onnx,tensorrt模型推理
SQL去重的三种方法汇总
Unable to preventDefault inside passive event listener due to target being treated as passive. See
Faster RCNN原理及复现代码
核心价值观编码器【matlab版】
软件:给大家推荐一款国产非常好用的效率软件uTools
53个全球免费学术资源数据库整理,查资料写论文必备【开学必备】
Activiti 工作流引擎 详解
MySQL复制表结构、表数据的方法
GRNN、RBF、PNN、KELM之间究竟有什么联系?
MMDeploy部署实战系列【第三章】:MMdeploy pytorch模型转换onnx,tensorrt
【C# - 爬虫】使用Selenium实现爬虫,获取近七天天气信息(包含完整代码)
七夕送礼,心愿直抵!
Jenkins pipeline 自动部署实践
Based on the EEMD + + MLR GRU helped time series prediction
花了近70美元入手的学生版MATLAB体验到底如何?
网络技巧:教你给路由器装上电池,断电照样可以上网!
ResNet详解:ResNet到底在解决什么问题?
手把手教你Charles抓包工具使用