This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

基于Qmss的IPC通信cache问题

在pdk6678_1.1.2.5中有一个示例工程qmssIpcBenchmark_c6678(位置是c:\ti\pdk6678_1_1_2_5\packages\ti\transport\ipc\qmss\transports),实现功能是使用Qmss作为IPC的传输层进行核间通信。工程默认在MSMC中建立了8192个monolithic描述符用于传输。

在调试时发现,在cfg文件中将描述符数量减少(如变为64个),程序运行将出错。研究发现问题在于TransportQmss初始化过程中,有一个TransportQmss_Instance_Init()函数,其中调用Cppi_initDescriptor()将描述符初始化并放入freeQ中。这一过程由核0执行,执行后在CCS的Memory View中发现,描述符仅在L2D发生变化,在实际的MSMC中仍然部分为0。这导致其他核在这里将取到未经初始化的描述符,从而不能正常发送Message.

实际上即使描述符的个数仍然是8192,也有一定概率出现这个问题,减少描述符个数只是更明显暴露问题而已。

平台配置使用的是默认配置ti.platform.evm6678,L1D和L1P全部用作缓存,L2和MSMC全部用作SRAM,那么为什么还会出现数据未被写回的现象?如何解决这一问题?