环境:DSP的EMIFB的CE1外接一个boot flash,CE2挂一个user flash。
boot flash存放我自己的boot代码,我的boot代码分为1级boot和2级boot,功能是将user代码固化到user flash中,或从user flash将代码加载到内存中,并跳转运行。
DSP配置的是EMIF BOOT MODE,在复位上电时将bootflash中前1KB自动加载到内存前1KB空间,并将指针跳转到0x0000 0000处运行,将我剩余的2级boot代码加载至内存的末尾位置,并跳转运行我的2级boot代码,我的boot代码再将user 代码从user flash加载到内存地址A处,并跳转到A处运行。这里地址A的选择似乎出现了问题。
如果我将地址A选择为0x0000 0000,内存的最前端,也就是覆盖了前1KB空间,然后跳转。发现ccs在线连接仿真器可以正常跳转,但固化后在离线模式下不能跳转。PC会吊死在boot代码的某个位置。尝试了0x0000 0200和0x0000 0400离线下均不能正常跳转。
如果我将地址A选择为0x0000 0600和0x0000 1000,在离线下就可以跳转。
请问是否C6416T的内存前1KB空间(0x0000~0x0400)在离线模式下仅能DSP复位上电后自己加载并执行?再将代码覆盖此区域是否是受保护不能再执行?可以看到代码确实搬移了过来,就是不能执行。
是否有命令可以解除前1KB空间的二次搬移且再执行?谢谢!!
Shine:
没怎么明白为什么要2级boot,1级boot不能直接去CE2flash里加载程序么?
yang zhao2:
回复 Shine:
这里是项目需要,构架必须这样的