TI中文支持网
TI专业的中文技术问题搜集分享网站

Notify这么耗资源?

按照附件的方式生成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的效率怎么样呢,哪里能查到?

赞(0)
未经允许不得转载:TI中文支持网 » Notify这么耗资源?
分享到: 更多 (0)