本文以SMDK2410开发板为例:
从顶层makefile说起:
92行:MKCONFIG := $(SRCTREE)/mkconfig
其中的mkconfig是一个shell脚本,SRCTREE默认值为U-Boot的顶层目录。
117行:include $(OBJTREE)/include/config.mk
include/config.mk由92行的脚本创建,下面会看到mkconfig的调用。
128行:CROSS_COMPILE = arm-linux-
交叉编译工具链的设置,后面有更具体的设置。
164行:include $(TOPDIR)/config.mk
顶层的config.mk设置编译选项、编译工具,包含开发板相关的配置文件,其中使用了117行include/config.mk中的变量,包括目标、架构、cpu、开发板、芯片供应商、SoC
包含以下文件:
arm_config.mk
cpu/arm920t/config.mk
cpu/arm920t/s3c24x0/config.mk(该文件不存在)
board/smdk2410/config.mk
board/smdk2410/u-boot.lds
1879行:smdk2410_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
其中MKCONFIG为92行的shell脚本,参数共6个:smdk2410 arm arm920t smdk2410 NULL s3c24x0,前4个是必需的,后两个视情况而定。
该脚本生成以下文件:
在include/下创建ln -s asm-arm asm
在include/asm-arm/创建ln -s arch-s3c24x0 arch
asm-arm/下ln -s proc-armv proc
创建include/config.mk
创建includd/config.h