自我总结关于stm32三种启动方式,和存储器重映射带来的好处

一:三种启动方式的概述:

分别是Flash启动,我们一般下载程序的内存区域,系统存储器启动就是通过isp下载启动,开始玩32一定用过这种下载方式,当然我也用过,最后一种是内嵌的SRAM启动,用到的比较少,我也没用过。

如图,我们可以看到我们可以通过BOOT0和BOOT1引脚来切换启动的方式和状态。对应我们开发板在哪呢?我来举了个例子,这是f103的最小系统开发板,图中就是选择启动的状态,每个开发板都会有这样的启动选择!

二:存储器重映射:

32为了支持多种启动的方式,我们介绍一下重映射技术,32是如何判断和进行以上三种启动方式呢?

通过BOOT0这个引脚,可以选择我们将哪部分映射到“Aliased区域”(地址0x00000000开始),就是图我圈出来的区域,比如:我们可以吧SRAM的16K区域映射到储存器的重映射区域,也可以吧Flash区域映射到储存器的重映射区域。

重映射技术这样的好处是什么呢?

答案:不同的启动方式,中断向量表的位置也是不同的,比如:Flash地址从0x0800 0000开始,SREM从0x2000 0000开始的,我们使用重映射技术,中断向量表就固定在首地址的位置上了,这样我们就可以固定在0x0000 0000获取SP指针了,后面位置+4,获取PC指针(程序计数器)了。

 哪些区域可以映射呢?

        如下图所示:我们可以映射我们的Flash,SRAM1,System memory(系统存储器),FSMC块区域映射到我们的首地址去!

强调一下:映射技术最重要的是映射我们的中断向量表,因为硬件上电以后根据我们BOOT的引脚选择,开始读取这个映射的中断向量表


1. Flash启动:

注意:
        Flash启动我们需要保证系统上电复位以后,可以从0x0000 0000读到我们的Flash的中断向量表,也就是我们BOOT引脚选择了Flash模式,映射了Flash的储存区域到首地址去了,启动后首地址直接读到我们的SP和PC指针。

 上图所示这里必须是Flash的首地址,否则无法启动,原因是首地址无法得到PC指针和SP指针。


2.内嵌SRAM启动

由于SRAM的掉电容易丢失的特性,我基本没有用过SRAM启动的方式,他的目的是用于调试,这里我就不详说了,怕说不清楚

 如图所示:和Flash一样这里是SRAM的首地址


3.系统存储器启动

stm32内部有自己的boot loader(启动程序代码),可以通过boot loader实现ISP的程序下载

大家也可以自己去写bootloader哦,这里就不详细介绍了!

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值