当前位置:网站首页>小猫爪: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
边栏推荐
- 软件:给大家推荐一款国产非常好用的效率软件uTools
- 专题讲座7 计算几何 学习心得
- matlab科研绘图模板,直接奉上源代码!
- Faster - RCNN principle and repetition code
- 用matlab打造的摩斯电码加解码器音频版,支持包括中文在内的任意字符
- TypeScript基本类型、类、封装、继承、泛型、接口、命名空间
- 如何用matlab做高精度计算?【第三辑】(完)
- 2DCNN, 1DCNN, BP, SVM fault diagnosis and result visualization of matlab
- 基于EEMD+GRU+MLR的时间序列预测
- 西门子PLC1200与fanuc机器人进行profibus通讯
猜你喜欢

Database knowledge: SQLServer creates non-sa user notes

ResNet详解:ResNet到底在解决什么问题?

Faster - RCNN principle and repetition code

Network skills: teach you to install batteries on the router, you can still surf the Internet when the power is cut off!

【深度学习实践(二)】上手手写数字识别

电脑知识:台式电脑应该选择品牌和组装,值得收藏

舍不得花钱买1stOpt,不妨试试这款免费的拟合优化神器【openLU】

CSRF和SSRF漏洞

unicloud 腾讯云 上传文件 Have no access right to the storage uniapp

JVM工具之 JPS
随机推荐
TypeScript基本类型、类、封装、继承、泛型、接口、命名空间
nacos 返回 403 unknown user 太他么坑了 源码解析
C语言实现-华为太空人手表
核心价值观编码器【matlab版】
LeetCode(剑指 Offer)- 18. 删除链表的节点
专题讲座7 计算几何 学习心得
Network skills: teach you to install batteries on the router, you can still surf the Internet when the power is cut off!
西门子PLC1200与fanuc机器人进行profibus通讯
Jenkins pipeline 自动部署实践
ubuntu18.04安装redis教程
Base64编码原理
VMD combined with ISSA to optimize LSSVM power prediction
硬件知识:RTMP和RTSP传统流媒体协议介绍
系统流量预估、架构设计方案
Provide 和 Inject 的用法
力扣每日一题-第47天-15. 三数之和
【深度学习实践(二)】上手手写数字识别
网页中常用的两种绘图技术,用canvas绘图,绘制出一个三角形,矩形,柱状图,扇形图
MySQL内存淘汰策略
用matlab打造的摩斯电码加解码器音频版,支持包括中文在内的任意字符