关于uboot的CONFIG_SPL_BUILD宏的一个小知识点

2019-07-13 07:44发布

class="markdown_views prism-atom-one-light"> 我们知道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 这个才是真正的定义了这个宏。然后在源码中使用该宏。