嵌入式学习笔记之四 (uboot启动流程)

1.boot ROM阶段

CPU 上电之后执行的第一段代码并不是 uboot 代码,因为 uboot 存储在启动介质(存储介质),如eMMC Flash、NAND Flash、SD 卡,CPU 想要执行启动介质中的 uboot 代码,就需要将 uboot 代码从启动介质取出,加载到内存中去执行。那么就需要某个程序来做这些工作。i.MX6ULL 内部有一块 ROM,存储着一段代码,这部分代码是 SOC 设计时实现的,上电后会首先运行,uboot 的引导就由这段代码实现,我们称这段代码为 boot ROM。boot ROM 会去读取设置好的硬件启动信息(硬件启动信息一般通过拨码开关进行配置,不同的引脚电平,对应不同的启动模式,不同的启动介质,关于启动这部分内容可以去参考硬件手册),判断启动介质,然后初始化内存以及启动介质,最后读取 uboot 代码程序到内存中开始运行,因此 boot ROM 需要做这么几个工作:CPU 初始化,时钟初始化,内存初始化,启动介质初始化,加载uboot 程序并执行。
将 uboot 程序从启动介质加载到内存中是 boot ROM 完成的,所以 boot ROM 就需要知道,从哪里拷贝程序,程序有多大,拷贝到哪里。这些信息都存储在启动介质起始的一片区域,boot ROM 从此区域获取到这些信息后,才进行后续的加载工作。因此,我们烧写到启动介质上的镜像文件,除了应用程序uboot.bin 本身,还需要包含一些额外的头信息,配合 boot ROM 的工作。这些额外的头信息,包括 IVT、Boot data、DCD(Device Configuration Data)。
所以一个完整的镜像主要由

你可能感兴趣的:(嵌入式之uboot学习,uboot,启动)