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.

6713升级程序向用户程序跳转失败

各位好:

       目前我们的平台是6713做的,升级功能和正常功能在一个程序里,在上电前2S,查询有无升级指令,如果有,则将FALSH里的程序擦出,然后将新程序烧写到FLASH里,重启即可;如果无,则执行正常功能。

      因为需求变更,要求将两个功能分开变为两个工程分别烧写到FLASH不同的区域,即为升级程序和用户程序(原正常功能)。升级程序和用户程序都是利用原工程进行裁剪的,升级程序位于FLASH前64K(足够)中,6713上电后搬运FLASH前1K(升级程序的boot)到RAM的0地址处运行,然后由boot做二次引导将升级程序搬运到RAM的0x400地址处运行,升级程序查询有无升级指令,若无则搬运用户程序(位于FLASH的第2个64K地址空间中,也是足够的)的bootloader到RAM的0x00020000处,长度也是0x400,升级程序末尾跳转至0x00020000处开始运行,用户程序的bootloader则搬运用户程序到0x00020400处开始运行。

    目前问题是上电后程序没有正常运行,通过挂在仿真器查看memory,起始地址为0x00020000、长度为0x400的数据内容是用户程序的前0x400数据内容,说明升级程序搬运用户程序的bootloader是对的。然后单步执行时,升级程序的末尾也能跳转至0x00020000处开始运行,但是执行了几条指令后,跳转到升级程序的boot里去运行了,请问是怎么回事呢?