首页 > 技术文章 > bootloaderd的再解析

zzm1 2019-04-24 20:48 原文

boot的0脚和1脚可以选择启动方式,以前只知道可以选择的方式是nandflash启动,或者选择从norflash启动,当选择nandflash启动时,cpu看到的0地址是ram的0地址,根据是nandflash的特性是系统上电之后会自动将前4k的代码复制到ram中去,然后cpu从让ram中启动,当选择norflash启动时,系统是从norflash的0地址开始启动的,但是其实在存储器的分配图中可以看到实际的ram的物理地址是0x20000000,而实际的norflash的地址是0x08000000,很显然它们都不是0地址,那么问题来了,到底系统在启动阶段是怎样执行的呢?

其实是这样的,通过设置管脚,对应到各种启动模式的不同物理地址将被映射到第0块(启动存储区)。即使被映射到启动存储区,仍然可以在它原来的存储器空间内访问相关的存储器。

在经过启动延迟后,cpu从位于0x00000000开始的启动存储区执行代码

当然在st的厂商中也有在厂家中就已经写好的自举程序。

 

推荐阅读