过程说明:本端处理器作初始化,创建同步事件,打开消息通讯句柄, 同步事件用于读取数据时任务阻塞,然后创建通讯数据包并且发送,发送例程将数据存储在共享缓冲区内,最后触发对方中断。
对端处理器进入中断响应,首先中断例程分析共享数据区的通讯数据状态,发现某通道有新的未处理数据后,将其拷贝至自己的私有内存空间,并清理自己的共享数据区状态,然后释放在等待中的通讯任务的信号量,使读通讯数据包的任务解除阻塞状态,从私有数据区读取通讯数据包并作相应处理。
数据流通讯与数据包通讯类似,不过方法更简单,在创建共享缓存和同步事件后,一方写入数据后,出发同步事件,另一方等到同步事件解除后读取数据,效率很高而处理器开销节省至最低。
处理器之间的同步事件功能可以有效地对共享资源进行保护,防止多处理器同时对某一个共享资源访问,导致数据不完整。RPC(远程过程调用)功能能方便的用于系统调试和利用主处理器资源,能方便产品的调试和功能开发。
以上是简化的多处理器通讯模型,方法适用于大多数RISC+DSP的架构,另外为了实现该通讯机制,还必须先完成三个前提,下面将简单对此进行描述。
1. 位于HOST的共享内存必须是物理连续、非缓冲(none-cacheable)的一段内存,否则,两个处理器因为本身都带有数据高速缓存,会使数据的完整性无法保障,因此需要对两个处理器进行配置,对这段内存的访问关闭cache操作,具体操作过程不再赘述。
2. 在编译Trimedia1300程序的时候,将指向共享内存的指针设置为下载时解析,并且要将Trimedia1300的下载程序移植到vxWorks操作系统,再下载解析该指针时将其指向ARM已分配给好的物理连续内存,Trimedia1300程序开始运行后就可以立即对共享内存初始化并进行通讯。
3. 该通讯协议以vxWorks的BSP(板级支持包)的方式提供接口,并创建标准的vxWorks设备,便于安装、使用。
该通讯规范已经在实用化的商业多媒体机顶盒中运行,该产品的数据流量较大,对时延要求很高,控制命令非常密集,从总体评价来看,采用该通讯协议后,无论是其效率、延时、处理器占用时间、灵活性、稳定性、可拓展性均获得很好的表现,希望本文也能对正在开发类似产品的人员起一定的提示作用,能加快相关产品的研发。
2004-7-8
参考文献:
Tornado Online Manuals by Windriver
Trimedia SDE Documents by Philips Semiconductor
pSOS Manuals by Integrated Systems, Inc.
S3c2510A User’s manuals by Samsung Electronics
PCI Local Bus Specification by PCI Special Interest Group