SOC启动流程分析
以arm soc的启动为例进行分析:
- cpu上电后会读取boot rom中的代码到sram(例如cache)中并执行,boot rom中主要是uboot的前半段SPL(secondary program loader),SPL的主要作用是初始化dram(内存)和加载完整的uboot到内存中
- uboot的代码会从flash中读取操作系统内核kenel到内存中
- cpu执行操作系统的代码,操作系统会进行一些配置和初始化,然后从磁盘文件系统中加载用户程序到ram中进行执行
uboot
uboot是一个两阶段的bootloader,其放置在boot rom中,但是由于rom大小的限制,一般只放置uboot的前半阶段SPL在rom,用于初始化内存和加载完成的uboot
为什么要先将SPL加载到sram中,而不是直接加载到dram内存中执行?
- 因为dram需要初始化才能够使用,因此需要先将SPL加载到sram中,然后使用SPL对dram进行初始化,再将完整的uboot加载进内存中执行
uboot存在的意义是什么?为什么不直接从操作系统内核开始执行呢?
- 刚上电时,cpu只能从rom或者sram中读取数据
- kenel太大了,rom中放不下,因此将kenel放置在flash中,而访问flash需要驱动程序
- 因此rom中保存uboot,uboot负责从flash中加载操作系统到内存