## -f $(srctree)/scripts/Makefile.spl 说明执行的Makefile文件是scripts/Makefile.spl ## $(MAKE)all相当于make的目标是all 综上,由CONFIG_SPL来决定是否需要编译出spl文件,也就是BL1。 后续相当于执行了“make -f u-boot/scripts/Makefile.spl obj=spl all”命令。 在project-x/u-boot/scripts/Make...
通过uboot-spl编译脚本project-X/u-boot/arch/arm/cpu/u-boot-spl.lds ENTRY(_start) 所以uboot-spl的代码入口函数是_start 对应于路径project-X/u-boot/arch/arm/lib/vector.S的_start,后续就是从这个函数开始分析。 2、CONFIG_SPL_BUILD说明 前面说过,在编译SPL的时候,编译参数会有如下语句: project-X/...
在omap-common/spl.c中的omap_boot_device 以及omap_boot_mode函数也没有定义,其功能很简单,可以先使编译通过,后续再慢慢根据作用修改,直接定义如下: 至此,uboot spl编译完成: 看到这里,uboot-spl.bin文件也只有24KB(uboot-spl.bin的生成依赖于uboot-spl),需要注意的是这个文件不是最终要进行烧录的文件,还需要...
Pre 同大多数的Bootloader一样,uboot的启动过程也分为BL1、BL2两个阶段,分别对应着SPL和Uboot。 SPL(BL1阶段):负责开发板的基础配置和设备初始化,并且搬运Uboot到内存中,由汇编代码和少量的C语言实现 Uboot(BL2阶段):主要负责初始化外部设备,引导Kernel启动,由纯C语言实现。 我们这篇文章,主要介绍Uboot(BL2阶段...
spl中board_init_f是自己实现的 使用CONFIG_SPL_BUILD选择编译的 主要是做ddr pinmx之类的初始化 d:\tronlongfile\tl335x\tronlong-uboot-am335\arch\arm\cpu\armv7\am33xx\Board.c 然后调用的board_init_f也是使用的自己的 调用的board_init_r的路径是d:\tronlongfile\tl335x\tronlong-uboot-am335\common...
如果是编译SPL,那么CONFIG_SPL_BUILD生效: ldr pc, _undefined_instruction _undefined_instruction: .word _undefined_instruction 那么这里是生效的,但是ldr pc,_undefined_instruction并无实际的执行动作。 如果是编译U-Boot,那么CONFIG_SPL_BUILD不生效: ldr pc, _undefined_instruction .globl _undefined_instruction...
BL2 到内存。 U-boot 为此专门实现了 SPL 框架。SPL 的全称为 secondary program loader,即第 2 ...
NAND_SPL = nand_spl U_BOOT_NAND = $(obj)u-boot-nand.bin endif ifeq ($(CONFIG_ONENAND_U_BOOT),y) ONENAND_IPL = onenand_ipl U_BOOT_ONENAND = $(obj)u-boot-onenand.bin ONENAND_BIN ?=$(obj)onenand_ipl/onenand-ipl-2k.bin ...
正常编译uboot的流程 Makefile 分析 TPL VPL SPL 正如我们第一篇文章所说,uboot也需要一个boot和load的过程,一般情况下负责这样工作的是SOC内的一段代码,运行这个代码不需要初始化任何外设。系统上电后去这个地址去执行代码,这段代码一般是初始化系统总线上的RAM和外置的存储,然后去读一段代码到RAM后执行,最后...