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...
注意,红色区需要根据具体的芯片手册来配置,这里我是直接从am335x系列uboot SPL文件配置拿过来使用的,目前只是为了理解uboot spl的编译生成过程,此处假定此参数配置都正确。黄色标记部分是根据 README.SPL定义相关宏,进行编译生成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,后续就是从这个函数开始分析。 2、CONFIG_SPL_BUILD说明 前面说过,在编译SPL的时候,编译参数会有如下语句: project...
从前面分析的u-boot-spl.lds链接文件可知,启动代码就是arch/arm/cpu/armv7/start.S。start.S主要做的事情就是初始化系统的各个方面。 从大的方面分,可以分成这几个部分: 1)设置CPU模式。 2)关闭看门狗。 3)关闭中断。 4)设置堆栈sp指针。 5)清除bss段。 6)异常中断处理。 /* * armboot - Startup Cod...
ALL-$(CONFIG_SPL_FRAMEWORK) += $(obj)u-boot.img ALL-$(CONFIG_TPL) += $(obj)tpl/u-boot-tpl.bin ALL-$(CONFIG_OF_SEPARATE) += $(obj)u-boot.dtb $(obj)u-boot-dtb.bin ifneq ($(CONFIG_SPL_TARGET),) ALL-$(CONFIG_SPL) += $(obj)$(subst ”,,$(CONFIG_SPL_TARGET)) ...
注释中说,在SPL启动阶段,board_init_f函数必须保证用于DDR的时钟等配置完成,并且保证栈指针是有效的,而且清除了BSS。这里也将它标记为__weak属性,如果需要的话,就可以重写该函数。 4、board_init_f 在arch/arm/lib/spl.c中定义的board_init_f函数如下。 26 void __weak board_init_f(ulong dummy) 27 { ...
1.2 配置uboot uboot的编译分为两步:配置、编译。单板的默认配置在configs目录下,这里我们直接选择configs/evb-rk3399_defconfig,这是Rockchip评估板的配置: View Code CONFIG_ARM=y CONFIG_ARCH_ROCKCHIP=y CONFIG_SPL_LIBCOMMON_SUPPORT=y CONFIG_SPL_LIBGENERIC_SUPPORT=y ...
SPL,我们需要在单板配置文件 u-boot-2014.04/include/configs/smdkc100.h 定义宏 CONFIG_SPL。spl的...
6、SPL配置 代码语言:javascript 代码运行次数:0 运行 AI代码解释 SPL/TPL--->这个就是SPL相关的配置了[*]MMCraw mode:by sector按扇区(0x50)Address on theMMCto loadU-Boot from mmc加载uboot的地址[*]SupportGPIO支持GPIO[*]SupportI2C支持I2C[*...
由于根据不同的配置,spl或uboot可运行在el1 – el3异常等级下,因此需要根据当前实际的异常等级来选择异常向量表基地址寄存器。 若配置了COUNTER_FREQUENCY选项,则根据当前正在运行的异常等级,确定是否要设置cpu的system counter的频率。由于system counter的频率是所有异常等级共享的,为了确保该频率不被随意修改,因此约定...