uboot学习之三《autoconf》

问题一:你上章不是说通过.config转为头文件autoconf.h,那么我请问我在autoconf.h里面也没有找到CONFIG_MMC, 但是系统使用了这个宏,编译了mmc.c这个文件啊,你能解释一下不? 答:CONFIG_M...

问题一:你上章不是说通过.config转为头文件autoconf.h,那么我请问我在autoconf.h里面也没有找到CONFIG_MMC,

但是系统使用了这个宏,编译了mmc.c这个文件啊,你能解释一下不?

答:CONFIG_MMC是在autoconf.mk里定义的

问题二:autoconf.mk怎么生成的?

答:通过script/makefile.autoconf生成的

include/autoconf.mk: FORCE

$(call cmd,autoconf)


quiet_cmd_autoconf = GEN     $@

      cmd_autoconf = \

$(CPP) $(c_flags) $2 -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && { \

sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp |\

while read line; do\

if [ -n "${KCONFIG_IGNORE_DUPLICATES}" ] ||\

   ! grep -q "$${line%=*}=" include/config/auto.conf; then\

echo "$$line";\

fi\

done > $@;\

rm $@.tmp;\

} || {\

rm $@.tmp; false;\

}


可以看出是给/include/common.h转为makefile可以的宏

我们再打开/include/common.h看看

#include <config.h>

#include <asm-offsets.h>

#include <linux/bitops.h>

#include <linux/types.h>

#include <linux/string.h>

#include <linux/stringify.h>

#include <asm/ptrace.h>

#include <stdarg.h>

#include <linux/kernel.h>

....

他包含了config.h文件,我们再去config.h看看

#include <config_defaults.h>

#include <config_uncmd_spl.h>

#include <configs/mx6ull_emmc.h>

#include <asm/config.h>

#include <config_fallbacks.h>

他里面包含了configs/mx6ull_emmc.h 板子的文件,这个文件里面包含了我们需要的定义

问题三 我没有在config.h里面添加configs/mx6ull_emmc.h,这个文件啊,他是怎么添加上去的?

答:在makefile.autoconf里面代码

# include/config.h

# Prior to Kconfig, it was generated by mkconfig. Now it is created here.

define filechk_config_h

(echo "/* Automatically generated - do not edit */";\

for i in $$(echo $(CONFIG_SYS_EXTRA_OPTIONS) | sed 's/,/ /g'); do \

echo \#define CONFIG_$$i\

| sed '/=/ {s/=//;q; } ; { s/$$/1/; }'; \

done;\

echo \#define CONFIG_BOARDDIR board/$(if $(VENDOR),$(VENDOR)/)$(BOARD);\

echo \#include \<config_defaults.h\>;\

echo \#include \<config_uncmd_spl.h\>;\

echo \#include \<configs/$(CONFIG_SYS_CONFIG_NAME).h\>;\

echo \#include \<asm/config.h\>;\

echo \#include \<config_fallbacks.h\>;)

endef


include/config.h: scripts/Makefile.autoconf create_symlink FORCE

$(call filechk,config_h)

也就是说需要给板子文件名放到CONFIG_SYS_CONFIG_NAME变量中

  1. 打开顶层的makefile

u-boot.cfg:include/config.h FORCE

$(call if_changed,cpp_cfg)

来自于u-boot.cfg

ALL-y += u-boot.srec u-boot.bin u-boot.sym System.map u-boot.cfg binary_size_check


你可能感兴趣的文章

相关问题

0 条评论&回复

请先 登录 后评论
DebugArm
DebugArm

5 篇文章

作家榜 »

  1. 百问网-周老师 18 文章
  2. st_ashang 14 文章
  3. 渐进 12 文章
  4. zxq 11 文章
  5. helloworld 8 文章
  6. 谢工 5 文章
  7. Litchi_Zheng 5 文章
  8. DebugArm 5 文章