OMAPL138的arm端运行linux,dsp运行sys/bios,使用ipc,sys/link通信,dsp可以访问arm端的内存空间吗?Arm程序定义一个比较大的缓存(20MB以上)接收pc下传的数据,将此缓存的地址,通过ipc、syslink的消息传输给dsp,DSP可以使用什么方法来访问Arm端的地址空间。由于DSP需要实时40us间隔随机访问该缓存,通过MessageQ等方式无法保证,希望能直接访问Arm内存直接提取所需要的数据。
Shine:
20MB数据的话,可以放在片外DDR2里,ARM准备好数据,发个中断给DSP去处理DDR2里的数据。
Kevin Le82:
回复 Shine:
通知dsp处理方面没有问题,主要是arm和dsp都带系统,而且dsp端内存比较小,所以才使用arm端接收pc数据,目前问题是dsp端如何访问arm端的地址空间。直接将arm缓存的地址发送给dsp,dsp直接访问该地址应该不可以吧?操作系统都带内存管理的(可能存在物理、虚拟地址转换之类的)
Shine:
回复 Kevin Le82:
不能直接访问。通过SYSLINK, IPC的 sharedregion来访问。
http://processors.wiki.ti.com/index.php/SysLink_UserGuide#SharedRegion
Kevin Le82:
回复 Shine:
我也看到了这个shareRegion,觉得挺适合的,想使用动态的方式,将arm端的buffer添加上去,但是不知道具体怎样操作才能动态添加,使得arm端和dsp端都能访问。请问哪里有具体的例子呢?
Kevin Le82:
回复 Kevin Le82:
omapl138的arm端定义一个全局的变量char buf[20*1024*1024],怎样将buf的地址添加到shareRegion;同时怎样将这个地址(是否需要转换)在DSP端加到shareRegion的entry,然后dsp端怎样使用这个地址,希望有一个具体的例子。