uboot启动流程详解

uboot启动流程详解

前言

本文参考正点原子教程,参考正点原子阿尔法开发板

uboot启动流程

下图为从SD卡启动后,其uboot镜像加载到内存中的位置,这里有个疑问,这里将vectors段和start段等uboot第一阶段代码加载到SDRAM上,而这段代码执行后才会初始化SDRAM,那么在这段代码未执行之前,SDRAM是在何处初始化SDRAM的呢???
uboot启动流程详解
常说的uboot是一个两阶段bootloader,理论上从SD卡/emmc启动后,系统会把uboot的第一阶段代码加载到I.MX6U内部128 KB的OCRAM(SRAM),也就是类似下图中三星的exynos-4412 soc的BL1+BL2加载到iRAM
uboot启动流程详解
uboot的这段代码为下图中的第一阶段代码,初始化完SDRAM,并且将剩余的uboot代码加载到SDRAM中后,就会在SDRAM中完成uboot剩下的第二阶段的代码。最终完成引导加载Linux内核的任务。
uboot启动流程详解

bootz/bootm命令启动Linux内核过程

这里以bootz命令为例
uboot启动流程详解

总结

到这里 uboot 的启动流程我们就讲解完成了,但这也仅仅是 uboot 启动流程分析,当缕清了 uboot 的启动流程以后,后面移植 uboot 就会轻松很多。其实在工作中我们基本不需要这么详细的去了解 uboot,半导体厂商提供给我们的 uboot 一般是可以直接用的,只要能跑起来,可以使用就可以了。但是作为学习,我们是必须去详细的了解一下 uboot 的启动流程,否则如果在工作中遇到问题我们连解决的方法都没有,都不知道该从哪里看起。

上一篇:u-boot分析与使用


下一篇:浅析嵌入式系统之uboot详解(4.3)—异常和异常向量