请教各位专家,我用仿真器启动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:
感谢各位专家的帮助!