各位专家:
请教一个关于多核单镜像,内存分配的问题。对于这样的工程,程序段,数据段,堆栈段一般放置在哪里合适?(L2, MSMC, DDR), 还有没有其它特殊的要求?
Nancy Wang:
请参考多核编程手册single image部分。
www.ti.com/…/sprab27b.pdf
以下帖子也可参考看一下。
e2echina.ti.com/…/168267
user6307690:
回复 Nancy Wang:
您好!
在多核编程手册中 single image部分提到下面这三条内容
• The code must set up pointer tables for unique data sections that reside in shared
L2 or DDR SDRAM.
• The code must add DNUM to any data buffer addresses when programming
DMA channels.
• The linker command file should define the device memory map using aliased
addresses only.有几个问题:
1。 第1条内容是如果只有一个数据段共享在L2\DDR 时必须建立 这个指针表。如果这个数据段在msmcsram呢?
2。aliasedaddresses 指的是什么地址,是全局地址吗?
3。 对于多核单镜像的理解问题,是不是对于多核上加载相同的镜像,执行同一个程序,这种情况就是多核 单镜像?
Nancy Wang:
回复 user6307690:
1、是shared L2。在共享内存中都需这样操作。
2、指local address
3、是的
user6307690:
回复 Nancy Wang:
对于在共享内存中建立指针表(第一条)是否有相关的例程呢?
Nancy Wang:
回复 user6307690:
其实目的就是区分不同核所要访问的共享内存中的数据的地址
正如前面帖子中提到可以建立一个数组dp= bufBase+ BUF_SIZE*DNUM
或者通过#paragma把不同核用的数据放在不同的段里
user6307690:
回复 Nancy Wang:
如果在DDR上,是不是这样操作:
先定义DDR3_0, DDR3_1的起始地址和长度再定义
program.sectMap[".core0_ddr"] = "DDR3_0";
program.sectMap[".core1_ddr"] = "DDR3_1";对不同核用的数据使用
#paragma DATA_SECTION(a, ".core0_ddr");
float a;#paragma DATA_SECTION(b, ".core1_ddr");
float b;
Nancy Wang:
回复 user6307690:
可以的。