关于基于ARM cortex-r5的Marvell1093r2主控的IPC通信心得

来源:互联网 发布:mac下制作u盘winpe 编辑:程序博客网 时间:2024/05/14 16:57

接触Marvell的ARM内核平台已有小半年。最近一个项目是三核的架构,需要用到较多的IPC知识,经过这两天的学习,稍有了解,记录也是分享如下。

就1093r2平台而言,IPC模块主要通过(interrupt_enable+interrupt_status+interrupt_clear)*3以及(desc_Ctrl+desc_content)*32这几个寄存器组成。

其中中断系列的寄存器就不用详细介绍了,负责中断状态以及相关处理的功能。至于desc是该平台IPC模块非常重要的处理手段,Ctrl寄存器主要负责记录次数desc_num和mode的选择。这里的mode一共有signal mode和call back mode两种。下面首先阐述一下这两种mode的区别和作用。

首先是signal模式,所谓signal模式就是相当于只要发送消息就可以产生一个IPC中断。

具体而言,每个DESC[0-31]有一个当前的owner cpu,这个owner cpu取决于开启该DESC中断的cpu。而此时当任意一个cpu向该DESC发送一条指令,则其owner cpu将收到一条中断。

其次,是callback模式,callback模式的DESC最后两位为target cpu的标志。callback模式具有signal模式的功能,并且当target cpu读取该DESC时也将收到一条中断。也就是说具有write和read两种中断。

目前比较常用的中断服务一般为计数++,还有设置一个flag变量来通知对应的cpu完成一定的动作。

此外,在具体的内存中,还在Share TCM中放置了callback的消息队列,共有6组,分别供0,1,2相互使用读取写入。

pause0----------------------------------------------20151223

0 0