启动过程分析及FLASH操作
程序员文章站
2024-02-03 20:34:22
...
FLASH操作
STM32启动程序分析
内部FLASH 操作
1. STM32启动程序分析
ARM7/ARM9内核架构启动:
ARM7/ARM9内核的控制器在复位后,CPU会从存储空间的绝对地址0x000000取出第一条指令执行复位中断服务程序的方式启动,即固定了复位后的起始地址为0x000000(PC = 0x000000)同时中断向量表的位置并不是固定的。
而Cortex-M3&M4内核则正好相反,有3种情况:
- 通过boot引脚设置可以将中断向量表定位于SRAM区,即起始地址为0x2000000,同时复位后PC指针位于0x2000000处;
- 通过boot引脚设置可以将中断向量表定位于FLASH区,即起始地址为0x8000000,同时复位后PC指针位于0x8000000处;
- 通过boot引脚设置可以将中断向量表定位于内置Bootloader区,本文不对这种情况做论述;
这里我们选择主FLASH作为自举空间,也就是将flash映射到0x0000 0000 这个起始地址,通过(通过 ICode/DCode 总线访问)。
内部FLASH 操作
我们衔接这上一篇
最后关键是固件程序的升级调用的这个函数:
UpgradeFirmware(lFirmwareLen* UPDATE_PRO_FRMSZ);//页长度*0x200
STM32里有ROM和RAM,ROM就是flash,程序是下载到里面。
当STM32执行程序时,是把ROM中的数据,程序“搬运”到RAM中然后再执行的,一般的指令存储在ROM。
将升级程序内容放入到FLASH 中重启。