我们知道uboot分为BL0, BL1, BL2。其中BL0就是我们常说的ROM Code。BL1就是我们常说的SPL1,BL2就是我们常说的狭义的uboot。其中SPL 和uboot共用一个源码体系。他们之间的产生是通过一个重要的宏CONFIG_SPL_BUILD来在源码中分开的。
有一个问题很重要问题,在uboot源码中,经常会看到这些片段
#if defined(CONFIG_SPL_BUILD)
.....
而这个宏在哪理被定义了呢?首先看spl文件夹下的Makefile
CONFIG_SPL_BUILD := y
export CONFIG_SPL_BUILD
这是定义了一个这样的变量,然后真正定义的地方在这理;在uboot源码树的根目录下config.mk中:
ifeq ($(CONFIG_SPL_BUILD),y)
CPPFLAGS += -DCONFIG_SPL_BUILD ## define the macro
endif
这个才是真正的定义了这个宏。然后在源码中使用该宏。