大家好,
我的环境:C6670, SYS/BIOS v6.33.6.50, IPC v1.24.4.32, XDC v3.23.4.60。
我目前的工程是4个Core用一个同样的工程,一个同样的cfg文件,生成一个同样的.out文件,只是在代码中用DNUM区分了每个Core的处理任务。
遇到的问题:
1. 工程中,每个Core都需要512KB的空间作为SRIO对外的收发缓冲空间。这样,则L2SRAM肯定放不下。
于是我把这个512KB的收发缓冲去load到MSMCSRAM中去了,生成了一个.out加载到4个Core中。
CMD文件中
.Tran_Receive_buffer: load >> MSMCSRAM
源代码中
#pragma DATA_SECTION (g_l1BBTx, ".Tran_Receive_buffer"); #pragma DATA_SECTION (g_l1BBRcv, ".Tran_Receive_buffer"); #pragma DATA_SECTION (g_dlTxModBuf, ".Tran_Receive_buffer"); #pragma DATA_SECTION (g_ulRcvBuf, ".Tran_Receive_buffer");
生成的.map文件中
0c010000 0c010000 0007b8a0 00000000 rw- 0c010000 0c010000 0007b8a0 00000000 rw- .Tran_Receive_buffer
那么4个Core在运行时应该同时去操作这一个512KB的MSMCSRAM,可是运行时居然不冲突!感觉不合理,4个Core同时使用MSMCSRAM中的这一块512KB的缓冲区,每个Core的数据不应该会冲突吗?难道是因为目前我的代码并没有完全使用这512KB,只用了其中的10KB?
2. 而每个Core都要512KB,4个Core就要2MB,MSMCSRAM也放不下(MSMCSRAM放了代码段)。
那么,如下把 不同Core的这个512KB的缓冲区load到DDR3的不同区域中呢?是使用4个不同的CMD文件,生成4个不同的.out?有没有更简单的方法?
谢谢!!