1.地址的划分
我所用的芯片为STM32F103RCT6,内部FLASH大小为512K,BOOT区域需要根据BOOT大小以及所选MCU支持的FLASH最小擦除单位来划分,该区域从FLASH的起始地址开始划分。
1.BOOT分配区域:
列如STM32F103RCT6从0x8000000-0x800FFFF作为BOOT程序区,该区域大小为64kb。
2.应用程序分配区域:
APP_MEMORY= FLASH_MEMORY - BOOT_FLASH - PARAMETER_MEMORY
flash内存(512k) - BOOT内存(64k)-参数内存(64k) = 384k
BOOT区域:0x8000000 - 0x800FFFF
APP区域:0x8010000 - 0x806FFFF
参数区:0x8070000 - 0x8080000
2.BOOT 程序内需要注意的地方
1.KEIL中IROM1的更改
2.BOOT进入应用跳转函数中函数指针的应用
3.关闭 __disable_irq()
4.设置__set_MSP()
3.应用程序中需要注意的地方
1.升级完毕后需要打开 __able_irq()
2.scb->vtor向量表偏移寄存器需要设置为我们为APP程序所分配的FLASH起始地址
3.KEIL中IROM1的更改
4.应用进入Boot跳转函数中函数指针的应用
持续更新。。。
这里附一张ARM里的中断向量表