CMEM与DSPLINK简介
在双核(ARM+DSP)系统中(典型的为达芬奇系统),如何共享缓冲区并进行通信是一个值得学习和思考的问题。
CMEM是一个连续物理存储空间分配模块,使得ARM端Linux进程和DSP端算法之间能够共享缓冲区。DSPLINK即DSP/BIOS LINK是基于DaVinci架构处理器的ARM与DSP端进行通信。
1、CMEM
由于应用程序是运行在 MontaVista Linux 之上,在应用程序里进行的地址空间都是虚拟地址,实际上的物理地址空间不一定是连续的,当将这个指针传递给 DSP 端的算法时, DSP 不能够进行处理,因为 DSP 端的算法运行在 DSPBIOS 之上,而 DSP端只能访问实的物理地址,为了解决这个问题, TI 提供了一个 CMEM 模块,用于解决这个问题。
CMEM 是一个连续物理存储空间分配模块,使得 ARM 端 Linux 进程和 DSP 端算法之间能够共享缓冲区。当应用程序需要在共享缓存区动态申请一个连续的物理空间时,通过调用 CMEM 的 API 可以实现,申请得到的空间可以供 DSP 端访问,进行算法处理时数据的传递与处理。