R7A2L1AB _Bootloader 如何从BOOT 跳 APP

大家好,有问题想咨询各位大佬。

使用的是R7A2L1AB板子,当前BOOT函数中,调用实例代码中 do_boot函数,其中 flash_base = 0x10000。我希望将APP程序的其实位置从0x0000改到0x10000,从而满足BOOT ---JUMP--->

APP 。

APP程序能够发送周期性CAN数据,BOOT本身不主动发数据,可通过这块确认是否跳转成功。但是当我改动script中 memory_regions.ld文件中 FLASH_START的赋值,整个APP工程就会报错

失效,必须从worksapce中删除才能重新使用。

我应当如何修改配置文件才能使APP程序生成出来的HEX文件,起始地址从0X10000开始?又应该怎样操作才能使BOOT+APP的HEX文件一起down进板子?

Parents
  • 目前已经能够更改APP去程序的ld文件了,是编译器内部链接的BUG,需要把script中fsp.ld文件里面的 !DEFINED增加空格 ! DEFINED,这样。

    现在刷写完后,会进入do_boot函数跳转,跳转0X20000时候出现

    break at address"0xeffffffe"with no debug information

    是否出了起始地址FLASH_START和FLASH_LENGTH以外还有别的需要修改?

  •  调试到JUMP的时候如下

  • 你好,在此状态下,请确认0x20000处有合理的代码,可以在memory窗口查看。

    另外,你所说的调试,是调试哪一个project呢?Boot Project吗?如果调试Boot Project的同时,需要加载App Project的内容,可参考下图的方法进行下载。

    如果调试的是App Project,则需要在调试前将Boot Project内容下载到MCU中(参考上图的操作)。

    特别需要注意的是,仔细确认烧写地址,以免产生无法恢复的锁死。

  • 你好,我在调试BOOT的时候,通过load file 加入了APP的HEX文件(文件地址是从0x2000开始),同时选择了Address为0x20000,稍后在BOOT调试时查看memory,显示如图。

    等到程序调试走到 

    ((void (*)()) vt->reset)();

    调试进入,project报出

    我不知道应该怎样才能从BOOT实现跳转,以及我在BOOT中刷写新程序(已经在代码中修改好起始地址的HEX文件偏移),直接跳转至APP区。

    谢谢

Reply
  • 你好,我在调试BOOT的时候,通过load file 加入了APP的HEX文件(文件地址是从0x2000开始),同时选择了Address为0x20000,稍后在BOOT调试时查看memory,显示如图。

    等到程序调试走到 

    ((void (*)()) vt->reset)();

    调试进入,project报出

    我不知道应该怎样才能从BOOT实现跳转,以及我在BOOT中刷写新程序(已经在代码中修改好起始地址的HEX文件偏移),直接跳转至APP区。

    谢谢

Children
No Data