(1)若定义了CONFIG_OF_EMBED选项,则在链接时会为dtb指定一个以__dtb_dt_begin开头的单独的段,dtb的内容将被直接链接到uboot.bin镜像中。官方建议这种方式只在开发和调试阶段使用,而不要用于生产阶段 (2)若定义了CONFIG_OF_SEPARATE选项,dtb将会被编译为u-boot.dtb文件,而uboot原始镜像被编译为u-boot-nodtb...
需要打开 CONFIG_OF_SEPARATE 宏来使能。 在这种方式下,u-boot 的编译和 dtb 的编译是分开的,先生成 u-boot 的 bin 文件,然后再另外生成dtb 文件。 dtb 最终会自动追加到 u-boot 的 bin 文件的最后面。因此,可以通过 u-boot 的结束地址符号,也就是 _end 符号来获取 dtb 的地址。 dtb 集成到 u-boot ...
(echo"/* Automatically generated - do not edit */"; \foriin$$(echo$(CONFIG_SYS_EXTRA_OPTIONS) |sed's/,/ /g');do\echo\#defineCONFIG_$$i \ |sed'/=/ {s/=/ /;q; } ; { s/$$/ 1/; }'; \done; \echo\#defineCONFIG_BOARDDIR board/$(if $(VENDOR),$(VENDOR)/)$(BOARD);...
LIBS-$(CONFIG_SPL_NAND_SUPPORT) += drivers/mtd/nand/libnand.o LIBS-$(CONFIG_SPL_ONENAND_SUPPORT) += drivers/mtd/onenand/libonenand.o LIBS-$(CONFIG_SPL_DMA_SUPPORT) += drivers/dma/libdma.o LIBS-$(CONFIG_SPL_POST_MEM_SUPPORT) += post/drivers/memory.o LIBS-$(CONFIG_SPL_NET_SUPPOR...
ALL-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl endif endif ALL-$(CONFIG_SPL) += spl/u-boot-spl.bin ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img ALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin ALL-$(CONFIG_OF_SEPARATE) += u-boot.dtb ...
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...
编译u-boot.bin是目标之一,它是最终生成的二进制可执行文件。由于未配置CONFIG_OF_SEPARATE,所以编译流程会使用$(call if_changed,copy)来处理。if_changed是scripts/Kbuild.include中定义的函数,顶层Makefile会包含这个文件。CONFIG_OF_SEPARATE的作用是将dtb与uboot分开打包,一种是将dtb直接嵌入uboot...
$(if$(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_TPL_OF_PLATDATA),dts/dt.dtb)$(Q)$(MAKE)obj=spl-f $(srctree)/scripts/Makefile.spl all 问题2:spl调用的board_init_r在哪里? 从Makefile.spl中可以看到。用的是common/spl.c里面的board_init_r。另外,其它共享文件中,其实是通过# ifdef CO...
1645spl/u-boot-spl.bin:spl/u-boot-spl1646@:1647spl/u-boot-spl:tools prepare \1648$(if$(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_SPL_OF_PLATDATA),dts/dt.dtb)\1649$(if$(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_TPL_OF_PLATDATA),dts/dt.dtb)1650$(Q)$(MAKE)obj=spl-f...
At present, SPL mostly uses a separate code path, but the function names and roles of each function are the same. Some boards or architectures may not conform to this. At least most ARM boards which use CONFIG_SPL_FRAMEWORK conform to this. Execution typically starts with an architecture-...