uboot 配置编译流程,以及配置过程的本质分析

uboot使用流程:

make <BOARD_NAME>_config//配置
make all//编译

uboot配置指令的流程如下:

在顶层 Makefile 中可以看到如下代码:

SRCTREE   :=  $(CURDIR)
……
MKCONFIG := $(SRCTREE)/mkconfig
……
smdk2410_config :  unconfig 
          @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0 

假定在 U-Boot-1.1.6 的根目录下编译,则其中的 MKCONFIG 就是根目录下的 mkconfig
文件。 $(@:_config=)的结果就是将 “smdk2410_config” 中的 “_config” 去掉, 结果为 “smdk2410” 。
所以“make smdk2410_config”实际上就是执行如下命令:

./mkconfig smdk2410 arm arm920t smdk2410 NULL s3c24x0

那么,涉及的mkconfig文件,有何作用?

mkconfig作用:

  1. 确定开发板名称 BOARD_NAME
  2. 创建到平台/开发板相关的头文件的链接==增加可移植性、通用性
 ln -s asm-$2 asm 
 ln -s arch-$6 asm-$2/arch
 ln -s proc-armv asm-$2/proc    # 如果$2不是 arm的话,此行没有
  1. 创建顶层 Makefile包含的文件 include/config.mk,例如内容为:
ARCH   = arm
CPU    = arm920t
BOARD  = smdk2410
SOC    = s3c24x0
  1. 创建开发板相关的头文件 include/config.h

结论:

从这 4 个结果可以知道,如果要在 board 目录下新建一个开发板[board_name]的目录,则在 include/config 目录下也要建立一个文件[board_name].h,里面存放的就是开发板 [board_name] 的配置信息。

参考:make _config的作用分析

猜你喜欢

转载自blog.csdn.net/guozhongwei1/article/details/79642757