关于C6678多核启动的一些问题请大牛帮解答

guzl86   2014-4-29 10:33 楼主
我还没有拿到板子,现在想了解一些问题,希望大家不吝赐教。
1.关于c6678多核启动的顺序问题
我看了一些资料,上电后core0先开始执行内部的bootloader,进行初始化,然后会跳转到magic address的位置开始执行(core1~core7应该也要完成初始化,然后执行idle),而后core0对core1~core7的magic address进行配置,core0向core1~core7发送IPC,core1~core7接收IPC后充自己的magic address里面指定的地址开始执行。请问使用过c6678开发板的大牛,多核的启动是不是这个样子?这个内部的bootloader是在哪里的?dsp内部吗?还是外部?如果是外部,我如果自己做板子的话是不是自己还有弄bootloader?

2.关于多核启动代码的问题
我现在只是使用ccs5中带的软件模拟器进行了自带demo的调试。我怎么感觉每个core都有自己独立的代码段和数据段,demo的全局量在每个core中都是有一份的,是这样的吗?还是可以进行配置使多核可以共享代码段和数据段?
谢谢各位大牛。

回复评论 (19)

1、6678的多核启动流程你理解的没问题,内部的bootloader当然是在内部了,这个loader有个学名叫rbl,全称是rom bootloader
点赞  2014-4-29 11:30
这个rbl是固化在芯片内部的
点赞  2014-4-29 11:31
2、这个可以有多种使用方式,可以使用共享的代码段,也可以各自单独有自己的代码段,至于数据段共享,我想你应该也能发现会有问题的吧,除非你的全局变量只读
点赞  2014-4-29 11:34
至于实现方式,我简单说一下:6678的每个core都有自己的local L2 ram,这个在每个core内部自己看到的local地址都是一样的,这个空间可以存放数据段,这样各个core都可以正常运行,而且互不影响
点赞  2014-4-29 11:37
另外一种方式,可以通过emif的寄存器配置地址映射,将ddr的不同空间重新给各个core映射成相同的地址,私有数据段就可以丢在这些空间
点赞  2014-4-29 11:40
至于多核共享的代码段和共享数据段,SL2和ddr都可以,性能有差异,根据自己需求来选择
点赞  2014-4-29 11:42
引用: lelee007 发表于 2014-4-29 11:34
2、这个可以有多种使用方式,可以使用共享的代码段,也可以各自单独有自己的代码段,至于数据段共享,我想 ...

如果这样的话,我想某个core上Task并不会在中途因为某种因数被切换到另一个core上来运行。sys/bios实际上还是在一个core运行,整个C6678里面就有8个sys/bios操作系统,mcsdk只是提供了一些基本的多核和多DSP的通讯功能。是这样吗?
点赞  2014-4-29 11:50
我这里有个需求就是要进行简单的多核负载均衡。需求是这样的,fpga提供图片数据,core0先预读这些数据到图片缓存中,然后core0通过IPC通知空闲的coreN去计算指定编号的图片。那这个图片缓存对core0~core7应该是都可见的。这个是不是应该不用配置,我只需要做好内存空间的分配就好了?板子上给每个DSP分配了1G的空间,那这个1g的空间实际上对core0~core7也是可见的,是吧?
点赞  2014-4-29 12:01
这个帖子难道就这样结束了吗?
点赞  2014-5-4 21:24
哈哈,我想知道,您对多核编程有概念吗?还有,6678的芯片文档你看过哪几个?你问的这些问题都是一些最基本的概念性问题
点赞  2014-5-5 10:44
卤煮不会想不用了解这个芯片的文档,就跟论坛上让人把方案给您全部讲清楚吧
点赞  2014-5-5 10:45
参考这个链接吧:http://www.deyisupport.com/quest ... ore/f/53/t/955.aspx

我觉得这个整理是最全的。

点赞  2014-5-5 16:18
全面解析
点赞  2014-5-6 22:53
这么多有钱淫
zhouyuannian#126.com(#换成@)有问题交流
点赞  2014-5-7 10:44
引用: lelee007 发表于 2014-5-5 10:44
哈哈,我想知道,您对多核编程有概念吗?还有,6678的芯片文档你看过哪几个?你问的这些问题都是一些最基本 ...

我就是刚刚开始接触DSP,文档没有看过什么。关于多核的东西,我做过PPC8641d和x86多核操作系统。在这个平台上面,在整个CPU上只有一个操作系统的概念,所有的core都使用相同的代码段和数据段,代码段都是可以多core访问的,全局数据的修改要使用互斥机制来防止两个以上的core同时进行更改。任务依据控制逻辑在多个core上面进行动态的迁移,以此达到负载的均衡。

但是最近我用ccs自己带的例子和软件模拟器运行了一下,发现在C6678中和我以前的多核理解并不一样。
C6678给我的感觉就是把多个DSP封装到了一个片子上面,是一个非常简单的多核平台。在系统运行时每个core都有自己独立的数据段和代码段,任务不会在多个core之间进行动态的迁移,sys/bios指提供在一个DSP上运行,就是说在C6678上有8个sys/bios。mcsdk只是提供了一些多核通讯的机制,以及多核中断的派发方案。这就是我最近的心得。

还在看,大家多多交流。
点赞  2014-5-9 00:14
基于SMP的OS平台上的应用开发,和多核裸机开发却似差异比较大

具体的应用实现看需求啦,方案肯定有很多种,优劣根据自己的具体情况来定

本人之前一直做多核裸机驱动开发,间插些许linux驱动开发,6678目前研究的也还不透彻,后续相对时间多一些了,可以多投入些时间折腾,以后多多交流
点赞  2014-5-9 23:36
正式进入C66X,希望大家多多交流,
点赞  2015-4-24 10:53
多核编程尚在起步,希望多多交流
点赞  2015-5-27 08:32
“基于TMS320C6678、FPGA XC5VSX95T的6U CPCI 8路光纤信号处理卡”确实不错,参考这个链接吧http://www.orihard.com/product/6.htm
点赞  2015-12-18 15:27
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复