This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

请教C6416的三次boot后指针跳转问题



环境: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空间的二次搬移且再执行?谢谢!!