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作用:
- 确定开发板名称 BOARD_NAME
- 创建到平台/开发板相关的头文件的链接==增加可移植性、通用性
ln -s asm-$2 asm
ln -s arch-$6 asm-$2/arch
ln -s proc-armv asm-$2/proc # 如果$2不是 arm的话,此行没有
- 创建顶层 Makefile包含的文件 include/config.mk,例如内容为:
ARCH = arm
CPU = arm920t
BOARD = smdk2410
SOC = s3c24x0
- 创建开发板相关的头文件 include/config.h
结论:
从这 4 个结果可以知道,如果要在 board 目录下新建一个开发板[board_name]的目录,则在 include/config 目录下也要建立一个文件[board_name].h,里面存放的就是开发板 [board_name] 的配置信息。