大家好:
对于C6678现在的工程,八个核使用同一个.out文件,load的时候将.out load在了每个核的LL2 SRAM里面,这样每个核都可以在自己的L2 SRAM里面执行对应的工程。
现在我想将.out放在DDR里面,那么有个问题,由于DDR是八核共享的,如果所有核都执行这样同一个.out的话那肯定会造成访问冲突的问题,所以可以使用MPAX产生映射关系,例如core 0将0xB0000000映射到0x80000000,core 1将0xB00000000映射到0x81000000.。。。。。core7将0xB0000000映射到0x87000000,只需修改.cmd文件为0xB0000000,这样load的时候对于每个核的.out就放在了不同的物理空间开始执行,从而避免了访问冲突的问题。
但对于如何实现上面说的我想要的功能目前还不是太清楚,对于MPAX的使用也不是很熟悉,能不能大概介绍下我需要做哪些过程以及一些资料提供?
谢谢!
Adam Yao94020:
同一个out,说明代码段是共享的,可以不需要为每个核做不同的地址映射,而使用同一个地址映射。代码中的每个核私有的变量,可以分配到LL2中,这样也不需要映射了。
studying:
回复 Adam Yao94020:
Adam,
您好,由于LL2的空间比较小,只有512KB,所以如果以后代码量变大的话LL2可能会装不下,所以我打算放在DDR中。请问是否有MPAX映射DDR地址的相关代码例程?MPAX寄存器的配置是在.cfg中配置的吗?还是在GEL中?
Adam Yao94020:
回复 studying:
我明白你的意思,我上面回复的意思是:如果代码段都是相同的话,可以直接在DDR上开一份共享的空间保存代码,每个核对这段地址不做映射,也就是实地址等于虚地址,这个过程跟你把代码放在LL2上时相同的,不用做MPAX映射。前面回复中提到要做DDR地址映射,是适合每个核各自有一份代码段,各个核代码都不相同的情况。
studying:
回复 Adam Yao94020:
Adam,
您好,但如果这样做的话八个核是并行运行的,它们都在同一块DDR同时跑同样的代码,这样是否可行?会不会造成访问冲突的问题?