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

多核存储区分配的问题

大家好,

我的环境: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文件中

0c0100000c0100000007b8a000000000rw-0c0100000c0100000007b8a000000000rw- .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?有没有更简单的方法?

谢谢!!

Feng Jin:

回复 Andy Yin1:

你好, Andy!

1. 对于“多核同时操作同一块共享数据memory不会有问题”我还是有点疑问。

如果某个时刻Core0对这块Memory写数据0x01,Core0待会会读这块Memory。而在Core0读取之前,Core1把这块Memory写了0x02,那Core0岂不是读不到自己预想的结果?

2. 谢谢!我尝试按照您的方法修改一下。

Andy Yin1:

回复 Feng Jin:

问题1我的意思是多个核可以同时访问共享memory,但是如果多个核同时读写的共享memory address完全一致,则需要软件来保证顺序以确保数据读写的正确性。

Feng Jin:

回复 Andy Yin1:

谢谢回复!

赞(0)
未经允许不得转载:TI中文支持网 » 多核存储区分配的问题
分享到: 更多 (0)