bootrom是什么?

bootrom是什么?其实像 arm32 的单片机是不需要 bootrom 通过拨码开关 去找到该在那种介质上启动 不同的启动模式对应的不同的启动 pc 地址 比如 stm32 会在 0x00000000 处取出栈指针 MSP 的初始值 存储的是栈顶地址 initial sp

大家好,我是讯享网,很高兴认识大家。

        其实像arm32的单片机是不需要bootrom,通过拨码开关,去找到该在那种介质上启动;不同的启动模式对应的不同的启动pc地址,比如stm32:会在0x00000000处取出栈指针MSP的初始值(存储的是栈顶地址__initial_sp);会在0x00000004处取出程序指针PC的初始值(存储的是首条指令Reset_Handler的地址);如下图对应不同启动模式的不同sp,pc值,这个是由硬件决定的,上电后,cpu就会通过总线,去到对应地址去取指令,译码,并执行


讯享网

1.从内部flash启动:使用jtag和swd模式下载程序,不需要用到bootloader.

2.从系统存储器启动(ISP):使用串口下载程序,由于串口不能直接将程序下载到flash,需要使用bootloader来引导程序下载至flash,再配置成1启动方式。

3.内存(SRAM)启动:一般用于程序调试

         但是对于一般的arm64处理器来说,要运行大型系统,就需要bootrom来引导系统启动了:简单来说,处理器上电后,就会根据程序计数器(pc)去取第一条指令,译码,然后执行;当然这个包含第一条指令的程序,我们一般叫做bootcode;这个bootcode被放在通常叫做bootRom的地方,那么bootRom肯定得是nor flash;因为至少要满足两个条件:掉电不丢失,也就是rom属性;还有就是能直接执行(除非处理器能够在上电后:直接将代码复制到不需要初始化的sram中去执行);下面就是一幅启动过程的流程图,很简单易懂

        bootrom就会去启动bootloader来启动系统了,那么这个bootloader在rockchip系统中使用uboot,或者像高通会有自己的aboot;uboot的话可以通过宏来编成更小的spl作为二级boot来启动功能更齐全的完整uboot;下面看一张rk3399的启动流程图;可以看出厂商提供了两套启动方案,一套是不开源的二级boot,也即提供的miniloader固件;一套是开源的spl,这个肯定就需要自己拉厂商bsp的uboot来修改编译

        所以总结下,bootrom就是处理器上电后,最先启动的一段代码,可根据不同的启动模式(硬件拨码)去不同的存储设备取bootlaoder,并执行bootloader来做后续的启动系统的工作

小讯
上一篇 2025-02-17 18:00
下一篇 2025-02-05 15:44

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/121370.html