【精通嵌入式Linux编程】引导加载程序详解bootloader


必须做两件事情:
引导加载程序必须传递一个指针,指向保护硬件配置信息的结构,
必须传递一个指向内核命令行的指针

SRAM:不需要内存控制器的静态随机存储器

阶段一:ROM代码
复位或上电后立即运行的代码必须存再soc的片上,ROM代码。制作时被加载到芯片中,ROM代码专用。
SRAM不足以加载完整的uboot,必须增加一个辅助程序加载器(Secondary program loader,SPL)的中间加载程序。
在ROM代码阶段结束时,SPL将出现在SRAM中,并且ROM代码会跳转到该代码的开头。

阶段二:SPL
SPL不行设置内存控制器和系统的其他重要部分,以准备将第三级程序加载器(tertiary program loader,TPL)加载到DRAM中,
SPL受限于SRAM的大小,他和ROM代码一样,
从ROM代码到SPL的跳转,当SPL在SRAM中执行时,它会将TPL加载到DRAM中。在第二阶段结束时,TPL出现在DRAM中,SPL可以跳转到该区域。

阶段三:TPL
从SRAM中的SPL到DRAM中的TPL的跳转。当TPL执行时,它会将内核加载到DRAM中。如可以将fdt和初始化RAM文件系统initramfs附加到DRAM中的镜像。
在引导加载程序退出之前,TPL需要将引导过程的控制权交给内核。

你可能感兴趣的:(精通嵌入式Linux编程笔记,linux,运维,服务器)