stm32设置boot引脚能从0x08000000地址启动原因剖析

stm32设置boot引脚能从0x08000000地址启动原因剖析

我们知道stm32系统上电时会根据boot引脚选择而不同的存储器中启动,比如从Bootloader,SRAM或者FLASH中启动,但是我翻了好多片文章都找不到我想要的答案,为什么设置引脚就能选择存储器,这到底是什么原因呢?

外设地址都是连接到总线上的,cpu向总线发送地址信息和控制信息就能从相应的存储器地址或者外设中读写数据。

而cpu上电时,内部寄存器空空如也,不知道要什么地方读数据,所以就设定了从0地址开始读取指令和数据,所以我们的程序应该放在0地址处,但是flash在0x08000000处,没法直接读取,所以就设置了boot引脚,这就用到了存储器重映射,就是把0x08000000地址开始的flash内容映射到了0x00000000开始的地方,然后就如愿以偿了

这里有个关键词:存储器重映射
其实这个存储器重映射看着很高大上,其实原理很简单
在这里插入图片描述
就如上图所示,其实最关键的就是那个地址译码那个玩意,那个东西被称为地址解析器,是可编程的,boot引脚的选定就是给他编程,具体怎么解析我们就不考虑了,就是按需要设计门电路了
当cpu访问0x00000000时,内容是空的,啥也没有,然后经过地址解析器,就把0x00000000 转换成了 0x08000000,然后就访问了FLASH,所以访问0x00000000,就是相当于访问了0x08000000,当然如果直接访问0x08000000,地址解析器就不需要解析了,这两个地方的内容看着就有种复制粘贴的感觉了

在这里插入图片描述

如果发现我说得有不对的还请指出,我好改正,谢谢指导,要是看我能点个赞,我能开心一整天😀😊😍😘
请添加图片描述

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值