运行流程:U-Boot SPL运行在片上SRAM中,负责初始化DDR,然后从第一个(裸)分区中加载U-Boot镜像到DDR。U-Boot会从boot分区中读取opensbi镜像、Linux镜像、Linux设备树镜像、(如果需要的话)initramfs,分别加载到DDR的特定位置,然后从openSBI开始运行。(强调“Linux”设备树是因为该设备树只是给openSBI和Linux使用,U-Boot及...
1、board_boot_order--读取支持的启动设备 2、boot_from_devices--读取uboot镜像 3、ATF跳转 4、optee跳转入口 5、最终跳转到uboot启动 6、总结 本账号总目录:求密勒:NXP i.MX8M系列文章总目录 求密勒:NXP i.MX8M secure boot流程 求密勒:Uboot启动分析--SPL跳转过程! 求密勒:Uboot链接脚本分析 求密勒:...
所以这个第一阶段的引导加载程序是U-Boot SPL ; 和第二阶段的引导加载程序是常规的U-Boot(或适当的U-Boot)。需要说明的是:SPL代表二级程序加载器。这意味着ROM代码是加载(和执行)其他程序的第一件事,而SPL是加载(和执行)其他程序的第二件事。所以通常启动顺序是下一个:ROM code - > SPL - > u-boot - ...
project-X/u-boot/scripts/Makefile.spl KBUILD_CPPFLAGS += -DCONFIG_SPL_BUILD 所以说在编译SPL的代码的过程中,CONFIG_SPL_BUILD这个宏是打开的。 uboot-spl和uboot的代码是通用的,其区别就是通过CONFIG_SPL_BUILD宏来进行区分的。 二、uboot-spl需要做的事情 CPU初始刚上电的状态。需要小心的设置好很多状...
1、uboot-spl入口说明 通过uboot-spl编译脚本project-X/u-boot/arch/arm/cpu/u-boot-spl.lds ENTRY(_start) 1. 所以uboot-spl的代码入口函数是_start 对应于路径project-X/u-boot/arch/arm/lib/vector.S的_start,后续就是从这个函数开始分析。
Uboot分析--SPL跳转过程分析 上电后,片上的ROM code会将启动的bin文件拷贝到sram中运行,sram通常只有4kb 甚至更小。所以将uboot中放到sram中运行是不现实的。SPL应运而生,SPL(Secondary Program Loader)是一个非常小的bin文件,足以加载到sram中运行。SPL在sram运行起来以后会将uboot加载到外部ram中运行。
SPL是uboot第一阶段执行的代码。 主要负责搬移uboot第二阶段的代码到内存中运行。 SPL是由固化在芯片内部的ROM引导的。 我们知道很多芯片厂商固化的ROM支持从nandflash, SDCARD等外部介质启动。
在部分.\arch\arm\mach-xxx目录下面也有u-boot-spl.lds,这个一般就是针对那些比较特殊的架构单独实现的连接脚本。在编译过程中,会通过CONFIG_SYS_LDSCRIPT=xxxx来执行这个特殊的脚本文件,如果不指定默认采用.\arch\arm\cpu\u-boot-spl.lds文件。 u-boot.lds文件也同上的说明可能有多个。
SPL是uboot第一阶段执行的代码。 主要负责初始化芯片,搬移uboot第二阶段的代码到内存中运行。 SPL是由固化在芯片内部的ROM引导的。 所谓启动, 就是从这些外部介质中搬移一段固定大小(4K/8K/16K等)的代码到内部RAM中运行。 这里搬移的就是SPL. 在最新版本的uboot中, 可以看到SPL也支持nandflash, SDCARD等多种...
如果使用第一种方案的话,u-boot 的前面 8K 被加载进入 SRAM 执行,u-boot 被截断,我们就需要保证在 u-boot 的前 8KB 代码,把板载的 DDR 初始化好,把整个 u-boot 拷贝到 DDR,然后跳转到 DDR 执行; 第二种方案的话,我们做一个小的 u-boot ,这个 u-boot 就叫做 spl,它很小很小(小于SRAM大小),它先...