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

关于C6678的SYS/BIOS 多核工程的理解,大家一起来谈谈

关于C6678的SYS/BIOS 多核工程,我相信大家都遇到不少问题,我也是,每个人学习时间、程度不一样所遇到的问题深度也不一样。大家不妨放下脚步,整理一下我们的思路。对于C6678这款DSP,我们都知道有8核,每个核有自己的L1D、L1P、L2;除此之外我们的C6678还给八个核提供了一块大小为4M的MSMC 和 一片大小为2G的DDR3。我们的目的很简单就是在这片C6678上编程,实际上就是在C6678的硬件上分配好各个内存资源。为了更好的利用资源和提供芯片的效率,TI给我们提供SYS/BIOS内核,同时我们需要配置自己的cfg文件。

关于我对C6678的SYS/BIOS 多核工程的理解:

1、TI提供SYS/BIOS的内核模式是对于每个核都需要加载SYS/BIOS内核:

             a、对于把所有核都放在同一工程中调试,所有核都公用一个cfg文件的这种情况,我们这时希望所有核执行的代码相似,每个核功能相似。这是因为我们可以将基本相似的代码放入MSMC或者DDR3中,实现八核共享;而差异较大的代码放入各个核的L2中。(目前我认为同一工程、同一cfg文件对于每个核要执行代码差异性较大的情况优势不大;不知道是否可以在同一个工程针对不同的核配置不同cfg文件或者在同一个cfg文件中通过某种标识(就像DNUM寄存器一样能分离出各个核需要运行的代码)来选择性配置各个核,以满足每个核自己的代码放入自己的L2中);

           b、为每个核建立一个工程,这样就可以有自己的cfg配置文件(这种方式我目前没有试过,只是在论坛中看到),通过将每个工程生成的.out文件加载到每个核中。但是我觉得通过这种方式如何进行多核之间的在线调试呢?

上述理解只是个人理解,肯定有很多出入,望大家多多补充、指点,希望大家一起讨论、交流一下。

Allen35065:

对于a方法,比较麻烦的问题是一般加载时都要使用全局地址而不能使用0x00800000开始的局部地址,这也是为什么很多同事JTAG运行没问题的代码改成其他方式就会有问题的原因所在,所以一般建议是从写代码一开始就使用全局地址,实在在某些共享函数里要用局部地址,可以自己写一个函数利用DNUM把全局地址转换成局部地址。

对于b方法,一开始建工程会比较麻烦,而且6678有8个核,你需要维护的工程至少有8个,多核调试倒是没有问题,直接通过CCS加载到每一个核上即可。

Gangping Li:

回复 Allen35065:

Allen Yin 你好!

首先谢谢你的专业的回答。

对于a方法使用全局地址,如何使用呢?能否几个例子呢?我的代码基本上都是默认放在Local L2 SRAM(也就是你说的0x00800000开始的局部地址),我觉得在加入sys/bios后使用cfg来分配DSP资源,使得内存分配变得模糊起来了;我之前尝试过同时使用CMD文件和CFG文件一起配置但是我没有成功。能否指导一下?

对于b方法我有个疑问,如果多核间有IPC触发,那么是否还像a方法那样配置IPC中断呢?(针对b方法,TI公司有没有提供相应的例程呢?)

赞(0)
未经允许不得转载:TI中文支持网 » 关于C6678的SYS/BIOS 多核工程的理解,大家一起来谈谈
分享到: 更多 (0)