TIwilliam hill官网
直播中

田硕

7年用户 207经验值
私信 关注
[问答]

多个内核共享DDR3外部存贮器,下面的理解正确吗?

在“BIOS MCSDK 2.0 User Guide.pdf”文档中,72页的Example 4 - Let's make it multi-core中,C6678中的四个核采用了相同的工程文件,同时也采用了相同的配置文件.cfg。在配置文件中有这样的section配置内容:
Program.sectMap[".const"] = "DDR3";
Program.sectMap[".text"] = "DDR3";
Program.sectMap[".code"] = "DDR3";
Program.sectMap[".data"] = "DDR3";
Program.sectMap[".sysmem"] = "DDR3";
Program.sectMap[".sharedVar"] = "DDR3";
Program.sectMap["platform_lib"] = "DDR3";
这也就是说明,这四个核在.const, .text, .code, .data, .system, .sharedvar, platform_lib是在同一物理内存上的同一个数据内容。看了一下程序,在整个程序中只有一个四核均需共享的全局变量next,在工程文件中再也没有其它全局变量与静态变量了,因而程序运行不存在问题。
如果每个core工程文件中有各自的非共享的全局变量,上述.cfg的设置就存在问题了。这个理解是否正确?
或者:该工程文件的.stack段也配置在DDR3中,则四个core中的程序运行将乱套了。这个理解是否正确?
谢谢了!

回帖(2)

李玉珍

2018-6-21 18:31:58
你的理解是对的,这里定义的段都是共享段,对所有核都是同一个地址。
对于非共享的变量和stack,如果要放到DDR上,就在DDR上对于每个核各自定义不同命名的section,然后把这些section再指到DDR3上,
同时不同核定义的变量不能重名。
举报

田硕

2018-6-21 18:39:06
引用: cmh9 发表于 2018-6-21 18:31
你的理解是对的,这里定义的段都是共享段,对所有核都是同一个地址。
对于非共享的变量和stack,如果要放到DDR上,就在DDR上对于每个核各自定义不同命名的section,然后把这些section再指到DDR3上,
同时不同核定义的变量不能重名。 ...

谢谢
举报

更多回帖

发帖
×
20
完善资料,
赚取积分