启动过程分析及FLASH操作

举报
内核笔记 发表于 2021/06/09 01:11:09 2021/06/09
【摘要】 FLASH操作 STM32启动程序分析内部FLASH 操作 1. STM32启动程序分析 ARM7/ARM9内核架构启动: ARM7/ARM9内核的控制器在复位后,CPU会从存储空间的绝对地址0x000000取出第一条指令执行复位中断服务程序的方式启动,即固定了复位后的起始地址为0x000000(PC = 0x000000)同时中断向量表的位置并不是固定的。...

FLASH操作

  1. STM32启动程序分析

  2. 内部FLASH 操作


1. STM32启动程序分析

ARM7/ARM9内核架构启动:

ARM7/ARM9内核的控制器在复位后,CPU会从存储空间的绝对地址0x000000取出第一条指令执行复位中断服务程序的方式启动,即固定了复位后的起始地址为0x000000(PC = 0x000000)同时中断向量表的位置并不是固定的。

而Cortex-M3&M4内核则正好相反,有3种情况:

  1. 通过boot引脚设置可以将中断向量表定位于SRAM区,即起始地址为0x2000000,同时复位后PC指针位于0x2000000处;
  2. 通过boot引脚设置可以将中断向量表定位于FLASH区,即起始地址为0x8000000,同时复位后PC指针位于0x8000000处;
  3. 通过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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。