异核通信 (1) : 框架
0.同构和异构
硬件角度:
所有CPU或者核心的架构都一样,同构。比如IMX6D,有两个架构相同的ARM Cortex-A9内核,即为同构。
所有CPU或者核心的架构有不一样的,异构。比如STM32MP157, 两个cortex-A7,一个cortex-M4,TI的TMS32DM8127, 一个DSP C674x核,一个ARM cortex-A8核。左图同构,右图异构。
软件角度:
SMP对称多处理:同一个操作系统,每个CPU平等的访问内存资源,负载均衡。
AMP非对称多处理:例如STM32MP157,每个核心有自己的操作系统,或者用裸机,这种结构一定有主核心,比如cortex-A7,运行Linux,M4运行rtos或者裸机, 每个核心都有自己专属的硬件资源,以及两个核心之间的共享的资源(可以通过用户之间分配,共享内存)。两个A7内核运行都运行Linux,相当于构成了一个SMP结构。
BMP边界多处理:和SMP区别是BMP是指定某个核心去做任务。左图SMP,右图AMP
1.多SOC和多核SOC
多soc: 多个处理器位于不同的设备, 电脑和开发板相连,这就是多soc, 利用串口进行通信
多核soc: 一个芯片有多个处理器,即位于一个设备,就是多核soc。 我们要讲的就是多核SOC
2.IPCC通信框架
IPC:两个进程之间数据交互
IPCC: 硬件,在两个CPU之间进行信号交换。有六个双向通道,以非阻塞的方式交换信息。起到数据交换的作用;数据存放于共享内存之间
IPCC的通道:以MP157为例子
Chanel 1:全双工,M4到A7的RPMsg传输(全双工是指,发送数据消息,该数据可用/返回数据可被处理)
Chanel 2: 全,A7到M4
Chanel 3: 单,主处理器A7到从处理器M4,主要用来生命生命周期管理, 打开/关闭电源,加载固件,监控/调试远程固件
456 未使用; 1 2所用的Linux框架,RPMsg, 3, Remoteproc。同样,高通这边也是通过remoteproc控制adsp, cdsp, gpdsp等协处理器的启动,关闭等功能。
3.数据发送/接收流程(了解)
单工发送:读取信号位确定通道有没有被占用,被占用就等待,未被占用就将数据写入共享内存,然后将通道被设置为占用
单工接收:确定被占用通道,屏蔽通道RX占用中断,读取共享内存数据,设置状态空闲,取消屏蔽通道RX占用中断
其他全双工等流程,类似。总体就是
主/协处理器向共享内存里面写入内容,然后通过中断提醒另一方,接收数据