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

如何从core0启动其他核

            请教各位专家,我用仿真器启动core0后,想通过core0将另一个.out文件加载到其他核,然后启动执行,有没有参考的例子?

另外,ccs5生成的.out文件有两种格式,elf和coff格式,我看了处c6000 compiler(spru186)那个文档,如果是要将elf格式的.out文件加载到rom是不是还要用一个叫hex6x的工具将其转换为16进制文件,我想的是在core0中的程序去读取这个16进制文件,通过文件中section指示的地址和长度,将数据加载到其他核的内存,然后发指令让其他核运行,不知道我理解的过程对不对,另外在实现上有没有类似的例子。谢谢!

water sea:

忘了说了,我用的是c6678的EVM板

King Wang1:

回复 water sea:

你好:

你的理解是正确的,但是有几个问题需要考虑下:

1)out文件的加载实际上就是解析out文件然后根据地址写数据内容的过程;解析out文件可以通过hex6x完成,具体你可以参考下boot user guider里面的I2C boot时的方法,里面一章节对解析out文件的阐述;

2)启动其余核;当你代码加载完毕之后,你需要更改其他core的MAGIC ADDRESS。如果我没有记错的话应该是0x10873680+n*1000000,其中n是核号。你需要把_c_int00的函数地址写到MAGIC ADDRESS上,然后发送IPC中断给从核,这时从核就自动起来了。(关于如何发送IPC中断可以参考我们的置顶的贴)

谢谢!

water sea:

回复 King Wang1:

       感谢King Wang 的回复!

   我又看了下,照boot user guider里面的I2C boot时的方法用hex6x讲.out文件转化为hex文件时,entrypoint怎么指定,我将你说的_c_int00作为entrypoint,提示我语法错误,另外那个MAGIC ADDRESS是什么东西,在哪个文档里能查到你说的这些的相关知识吗?

   我看了一些IPC例子,有直接写寄存器发中断的,CCS5自带的IPC notify例程又是用的IPC_strat(),而这个函数我查不到具体的功能和说明,ccs5里好多BIOS函数,类似TskSleep()这些都这样,请问这些函数的说明在哪?我在TI目录下搜索文件最后定位都是调用底层driver的函数,不知道函数具体怎么实现的。

water sea:

回复 water sea:

另外,现在的elf格式的.out文件和原来的coff格式有什么区别,elf格式的不转化成hex格式的是不是不能加载到DSP内存?

water sea:

回复 water sea:

可能之前我问的不是很清楚,现在问两个具体的问题:

   1.读取一个coff格式的.out文件,加载到内存怎么选择第几号核?

   2.entrypoint的值是怎么确定的,之前说的_c_int00作为entrypoint,_c_int00是作为一个指针么?

Andy Yin1:

回复 water sea:

您好,

参考www.deyisupport.com/…/6546.aspx

water sea:

回复 Andy Yin1:

请问King Wang,MAGIC ADDRESS计算方式0x10873680+n*1000000是在哪个文档中的,谢谢!

water sea:

回复 Andy Yin1:

感谢各位专家的帮助!

赞(0)
未经允许不得转载:TI中文支持网 » 如何从core0启动其他核
分享到: 更多 (0)