启动过程分析及FLASH操作
【摘要】 FLASH操作
STM32启动程序分析内部FLASH 操作
1. STM32启动程序分析
ARM7/ARM9内核架构启动:
ARM7/ARM9内核的控制器在复位后,CPU会从存储空间的绝对地址0x000000取出第一条指令执行复位中断服务程序的方式启动,即固定了复位后的起始地址为0x000000(PC = 0x000000)同时中断向量表的位置并不是固定的。...
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
- 1
STM32里有ROM和RAM,ROM就是flash,程序是下载到里面。
当STM32执行程序时,是把ROM中的数据,程序“搬运”到RAM中然后再执行的,一般的指令存储在ROM。
将升级程序内容放入到FLASH 中重启。
文章来源: xuesong.blog.csdn.net,作者:内核笔记,版权归原作者所有,如需转载,请联系作者。
原文链接:xuesong.blog.csdn.net/article/details/78571178
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)