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

关于DSP6678基于SYS/BIOS多核烧写的boot问题

参考了论坛里的多核烧写工具链及led事例工程,我发现他led工程里cmd有一句

.myboot{

*.*<boot.obj>(.text)

}>BOOT_CORE

其中BOOT_CORE指定L2的0x00800000,长度为0xC0,看了map发现这个boot.obj来自于一个ccs自带的lib库里,但是在基于SYS/BIOS的工程里,虽然两个lib库是一样的,但是map文件里却没有这个boot.obj,导致cmd文件这句话就提示no matching section.

本来想忽视这个boot.obj,强制在maigic地址写入map上_intc00的偏移地址,但是尝试了led事例工程,发现烧写失败,想咨询一个关于SYS/BIOS的通过SPI烧入noflash的方式究竟应该怎么选择?

Nancy Wang:

将<boot.obj>(.text)替换成boot.ae66<boot.oe66>(.text),sys/bios下启动跟裸机下应该是类似的。

,

user6524571:

我按照你说的写成

.myboot

        *.*boot.ae66<boot.oe66>(.text)

    }>boot_core

他还是显示没用,这个还有什么设置吗?

,

Nancy Wang:

将 *.*去掉试一下。

,

user6524571:

我按照boot.ae66的地址直接强制写入后这个问题解决了,非常感谢!
但是,还是无法自启动。我排查发现,基于SYS/BIOS的工程,他L2的基地址就必须是默认的0x800000的局部地址,我如果强制把cmd改为对应核的全局地址0x1x800000,生成的.out文件连仿真都过不了,好像都是最后一个核的程序把前几个程序冲掉了。
然后我按照这个逻辑尝试,修改led例程的.cmd文件,(把所有核的.cmd内l2地址改为0x800000的起始地址),烧写后,只有核0是正常的,后面的核我连仿真器去对应的0x11800000~0x17800000内看,导入的程序内容明显不正常,请问这个问题怎么解决?

,

Nancy Wang:

请问是指cmd中定义的L2的地址吗?必须是全局地址。

,

user6524571:

我按照4个核的l2全局地址,建了个新的platform(包含l2_core0=0x10800000~l2_core3=0选13800000)默认把code,data,stacik都存入ddr。再在每个核下的工程内cfg内把text,cinit,switch,const都loadsegment到各自的l2_corex内,仿真失败,请问是什么原因,怎么解决呢

,

Nancy Wang:

仿真失败具体是有什么报错吗?

,

user6524571:

仿真单个跑都正常,4核group跑后,除了核0其他的程序直接飞了

,

Nancy Wang:

四个核用的cmd是同一个吗?请将cmd文件贴出来看一下。

或者map文件中看一下,各个核的入口地址分配是否正常。

,

user6524571:

4个自动生成的cmd,因为cfg我把text等指到各自的l2全局地址,我看了map文件地址是对的,仿真如果4核逐一开启能正常闪灯,烧写后boot失败

,

user6524571:

我刚刚定位到问题,我感觉不是多核的问题,我用sys做的一个单核out文件用这个工具链转换dat烧写,调到spi模式后程序直接飞了,是不是这个代sys的工程不能用工具链转换dat?

,

user6524571:

不好意思,我刚刚明确定位了,带sys操作系统的工程把程序指定到msm地址,不选用ddr,boot正常。我想问一下是不是ddr初始化失败了,这个问题是修改工具链里ddrtable数据,还是我工程里main添加初始化程序?

,

Nancy Wang:

不是在工程中添加初始化程序,附件中的文档可以参考看一下。C6657_directROM_Boot_example\C6657\SPIboot_ddr\docs\SPIboot_with_DDR_UserGuide

7762.C6657_directROM_Boot_example.zip

赞(0)
未经允许不得转载:TI中文支持网 » 关于DSP6678基于SYS/BIOS多核烧写的boot问题
分享到: 更多 (0)