SPL是uboot第一阶段执行的代码. 主要负责搬移uboot第二阶段的代码到内存中运行. SPL是由固化在芯片内部的ROM引导的. 我们知道很多芯片厂商固化的ROM支持从nandflash, SDCARD等外部介质启动. 所谓启动, 就是从这些外部介质中搬移一段固定大小(4K/8K/16K等)的代码到内部RAM中运行. 这里搬移的就是SPL. 在最新版本...
CONFIG_SPL_BUILD := y export CONFIG_SPL_BUILD export CONFIG_SPL_BUILD: 在接下来的编译中, 这个变量为y. 从后面的分析中可以看到, uboot的stage1, stage2阶段的代码用的是同一个Start.S, 只不过在Start.S中用#ifdef CONFIG_SPL_BUILD这种条件编译来区分. 类似的还有其他一些文件. [plain]view ...
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.spl ...
if(CONFIG_IS_ENABLED(SHOW_ERRORS)&& CONFIG_IS_ENABLED(LIBCOMMON_SUPPORT)) printf(SPL_TPL_PROMPT"failed to boot from all boot devices (err=%d)\n", ret); else puts(SPL_TPL_PROMPT"failed to boot from all boot devices\n"); hang(); } spl_perform_fixups(&spl_image); switch(spl_image....
int spl_board_boot_device(enum boot_device boot_dev_spl) { #ifdef CONFIG_SPL_BOOTROM_SUPPORT return BOOT_DEVICE_BOOTROM; #else switch (boot_dev_spl) { case SD1_BOOT: case MMC1_BOOT: case SD2_BOOT: case MMC2_BOOT: return BOOT_DEVICE_MMC1; case SD3_BOOT: case MMC3_BOOT: return...
82b2b86520..69e3053a42100644---a/arch/arm/cpu/armv7/lowlevel_init.S+++b/arch/arm/cpu/armv7/lowlevel_init.S@@-22,11+22,11@@ENTRY(lowlevel_init)ldr sp,=CONFIG_SYS_INIT_SP_ADDRbic sp,sp,#7/* 8-byte alignment for ABI compliance */#ifdefCONFIG_SPL_BUILD-ldr r8,=gdata+ldr r9...
#define CONFIG_SPL_MMC_SUPPORT #define CONFIG_GENERIC_MMC #define CONFIG_PARTITIONS 1 #define ...
162~168:如果定义了CONFIG_SPL_MMC_SUPPORT, 则执行spl_mmc_load_image(),其就是将image从mmc/sd里面读取到ram中。 169~173:如果定义了CONFIG_SPL_NAND_SUPPORT, 则执行spl_nand_load_image(), 其就是将image从nand flash中读取到ram中。 当要启动的image位于RAM中后,我们就可以启动之。
Device Drivers -> MMC Host controller Support -> Enable MMC controllers using Driver Model 最终反映在.config文件中的CONFIG_DM_MMC=y 在对应的驱动中,可以看到判断#if !CONFIG_IS_ENABLED(DM_MMC),来判断是否打开DM驱动模型。 在管理驱动的Makefile文件中,也能看到obj-$(CONFIG_$(SPL_)DM_MMC) += mm...
CONFIG_SYS_ARCH="arm"CONFIG_SYS_CPU="armv7"CONFIG_SYS_SOC="am33xx"CONFIG_SYS_VENDOR="ti"CONFIG_SYS_BOARD="am335x"CONFIG_SYS_CONFIG_NAME="am335x_evm"CONFIG_SPL_LDSCRIPT="arch/arm/mach-omap2/u-boot-spl.lds"===config.mk文件 BOARD:=$(CONFIG_SYS_BOARD:"%"=%)ifneq...