按照附件的方式生成IPC的notify例程后。看了一下cfg文件的source。
/* To avoid wasting shared memory for MessageQ transports */
for (var i = 0; i < MultiProc.numProcessors; i++) {
Ipc.setEntryMeta({
remoteProcId: i,
setupMessageQ: false,
});
}
/* Shared Memory base address and length */
var SHAREDMEM = 0x0C000000;
var SHAREDMEMSIZE = 0x00200000;
/* * Need to define the shared region. The IPC modules use this
* to make portable pointers. All processors need to add this
* call with their base address of the shared memory region.
* If the processor cannot access the memory, do not add it.
*/var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');
SharedRegion.setEntryMeta(0,
{ base: SHAREDMEM, len: SHAREDMEMSIZE,
ownerProcId: 0,
isValid: true,
name: "DDR2_RAM",
});
仅仅一个notify功能就要占用2MB的MSMCSRAM?尝试把SHAREDMEMSIZE改为0x00000100,就不能正确运行。
notify使用这么多sharedregion干什么用?这样的话应用程序可用的资源就不足了。
另外,缺省BIOS.heapSize = 32768,尝试改小些也会使得运行出错。难道一个简单的notify就要占用这么多资源?
请专家解惑,能否优化些?
tmx tsrj:
我也有同感,不知道是什么原因,希望高手解释下
Keanu Reeves:
回复 tmx tsrj:
按我的理解,notify应该只用到IPC中断即可实现,用不着sharedregion啊。但实际上不但用了sharedregion,而且占用了大量存储器资源。
tmx tsrj:
回复 Keanu Reeves:
资料里说notify和 MessageQ 的建立需要sharedregion,但是需要的空间太大了,不知道notify封装的函数到底是什么样的。我现在准备用全局变量来代替notify
Andy Yin1:
您好,
我修改其为0x100000之后是可以运行的,所以可以给IPC预留多些共享memory看看,具体需要预留多少我还不是很确定。
对于简单的应用,可以不用RTSC IPC构件,选择合适的QMSS, share memory及EDMA等方式就可以实现核间的通信。
Keanu Reeves:
回复 Andy Yin1:
0x100000也太大了,就这么简单的功能要耗这么多资源,不知道封装些什么东西。
另外,IPC的效率怎么样呢,哪里能查到?
TI中文支持网

