ALL-$(CONFIG_SPL)+=spl/u-boot-spl.bin ## 当配置了CONFIG_SPL,make的时候就会执行spl/u-boot-spl.bin这个目标 spl/u-boot-spl.bin: spl/u-boot-spl @: spl/u-boot-spl: tools prepare $(if$(CONFIG_OF_SEPARATE),dts/dt.dtb) $(Q)$(MAKE) obj=spl -f $(srctree)/scripts/Makefile.spla...
spl需要初始化定时器、atf控制器、pmic、ddr。spl_dram_init会将ddr的timming信息写入ddr控制器。最后调用spl的board_init_r函数,加载BL31验证atf固件,从emmc/sd中加载BL32(uboot),最后移交控制权给uboot。 board_init_r common/spl/spl.c void board_init_r(gd_t *dummy1, ulong dummy2) { u32 spl_...
结合uboot源码中ELF文件u-boot的生成细节(二)和spl/u-boot.lds中的内容不包含 section “.u_boot_cmd”,可知这里与uboot自有名部分好的函数符号是存在的。 那么这里在链接部分就要去掉关于 section ".u_boot_cmd"部分,也就是删掉spl目录下Makefile中$UNDEF_SYM: 红色部分是未修改之前的,黄色部分是修改部分,...
2、CONFIG_SPL_BUILD说明 前面说过,在编译SPL的时候,编译参数会有如下语句: project-X/u-boot/scripts/Makefile.spl KBUILD_CPPFLAGS += -DCONFIG_SPL_BUILD 所以说在编译SPL的代码的过程中,CONFIG_SPL_BUILD这个宏是打开的。 uboot-spl和uboot的代码是通用的,其区别就是通过CONFIG_SPL_BUILD宏来进行区分的。
SPL(Secondary programloader)是uboot第一阶段执行的代码。主要负责搬移uboot第二阶段的代码到系统内存(System Ram,也叫片外内存)中运行。是uboot第一阶段执行的代码。 主要负责初始化芯片,搬移uboot第二阶段的代码到内存中运行。 SPL是由固化在芯片内部的ROM引导的。
1. SBL(Secondary Bootloader): SBL是一个小型的引导加载程序,位于芯片的内部ROM中。它负责初始化硬件和一些基本的系统设置,然后通过某种方式加载更大的SPL或U-Boot。2. SPL(Secondary Program Loader): SPL是一个更大的引导加载程序,一般被存储在闪存(如NAND或eMMC)或SD卡等外部存储...
SPL是uboot第一阶段执行的代码。 主要负责搬移uboot第二阶段的代码到内存中运行。 SPL是由固化在芯片内部的ROM引导的。 我们知道很多芯片厂商固化的ROM支持从nandflash, SDCARD等外部介质启动。
1、uboot-spl入口说明 通过uboot-spl编译脚本project-X/u-boot/arch/arm/cpu/u-boot-spl.lds AI检测代码解析 ENTRY(_start) 1. 所以uboot-spl的代码入口函数是_start 对应于路径project-X/u-boot/arch/arm/lib/vector.S的_start,后续就是从这个函数开始分析。
SPL是uboot第一阶段执行的代码。 主要负责初始化芯片,搬移uboot第二阶段的代码到内存中运行。 SPL是由固化在芯片内部的ROM引导的。 所谓启动, 就是从这些外部介质中搬移一段固定大小(4K/8K/16K等)的代码到内部RAM中运行。 这里搬移的就是SPL. 在最新版本的uboot中, 可以看到SPL也支持nandflash, SDCARD等多种...
SPL是uboot第一阶段执行的代码。 主要负责初始化芯片,搬移uboot第二阶段的代码到内存中运行。 SPL是由固化在芯片内部的ROM引导的。 所谓启动, 就是从这些外部介质中搬移一段固定大小(4K/8K/16K等)的代码到内部RAM中运行。 这里搬移的就是SPL. 在最新版本的uboot中, 可以看到SPL也支持nandflash, SDCARD等多种...