背景
在stm32上实现IAP编程(如通过BootLoader升级APP)功能时,比起常规直接通过j-link烧录的起始地址为默认(0x8000000)的APP,通过IAP烧录的APP的地址通常会有一个偏移。在以前的keil MDK中,修改很简单,只需照下图中修改即可。
现在stm32官方推出的图形化配置、生成代码的软件CubeIDE慢慢推广了起来(虽然生成的代码执行很繁琐,但操作确实挺省事的,推荐使用),那么在CubeIDE中如何实现app起始地址的修改呢?
如何在CubeIDE中修改起始地址?
很简单,仅需两步,以STM32L496VGTX为例: step1:修改链接文件的配置,具体操作 修改STM32L496VGTX_FLASH.ld中line40 --> FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 1024K 为 --> FLASH (rx) : ORIGIN = 0x8020000, LENGTH = 1024K
step2:修改中断向量表偏移地址,具体操作 修改system_stm32l4xx.c中line126 --> #define VECT_TAB_OFFSET 0x00 为 --> #define VECT_TAB_OFFSET 0x20000 说明:0x20000是相对基地址的偏移,因为在我的项目中新APP地址为0x8020000,前面的0x20000空间用作BootLoader代码存储,上电默认执行BootLoader。
其他型号芯片对应的文件的修改步骤相同。
小结
执行以上操作后,新编译生成的代码即可有效,上电后,控制代码跳转至目标地址后即可正常运行。
|