一、u-boot的mkconfig文件分析(针对GEC210平台,其他平台以此类推)
1、u-boot源码包顶层目录下执行$make smdkv210single_config
MKCONFIG := $(SRCTREE)/mkconfig ==>./mkconfig
SRCTREE:= $(CURDIR)
所以,第2582命令实质:./mkconfig smdkv210single arm s5pc11x smdkc110 samsung s5pc110
$1= smdkv210single、$2= arm、$3= s5pc11x、$4= smdkc110、$5= samsung、$6= s5pc110
mkconfig是一个脚本文件,./mkconfig执行脚本文件,带有6个参数。
2、下面分析mkconfig脚本文件
#-eq(等于) -ne(不等于) -lt(小于) -le(小于等于) -gt(大于) -ge(大于等于)
因为:
mkconfig做的第一件事情:为指定的芯片架构创建文件链接(在include文件夹下建立相应的文件(夹)软连接)
……
……
mkconfig做的第二件事情:生成/include/config.mk/配置文件 , 为Make生成config.m配置文件
mkconfig做的第三件事情:生成include/config.h头文件
mkconfig 主要做了一下几个工作:
1)建立cpu、arch和开发板相关头文件的4个链接文件
创建软链接1:
cd./include
rm-f asm
ln-s asm-$2 asm
lrwxrwxrwx1 root root 7 05-13 09:59 asm -> asm-arm
创建软链接2:
rm-f asm-$2/arch
ln-s ${LNPREFIX}arch-$6 asm-$2/arch
这个其实会在下面被删除
创建软链接3:
rm-f regs.h
ln-s $6.h regs.h
lrwxrwxrwx1 root root 9 05-13 09:59 regs.h -> s5pc110.h
创建软链接4:
rm-f asm-$2/arch
ln-s arch-$3 asm-$2/arch
lrwxrwxrwx1 root root 12 05-13 09:59 arch -> arch-s5pc11x
创建软链接5:
rm-f asm-$2/proc
ln-s ${LNPREFIX}proc-armv asm-$2/proc
lrwxrwxrwx1 root root 9 05-13 09:59 proc -> proc-armv
2)创建include/config.mk
echo"ARCH = $2" > config.mk
echo"CPU = $3" >>config.mk
echo"BOARD = $4" >>config.mk
[ "$5" ] && ["$5" != "NULL" ] && echo "VENDOR = $5">> config.mk
[ "$6" ] && ["$6" != "NULL" ] && echo "SOC = $6" >> config.mk
config.mk的内容如下:
ARCH = arm
CPU = s5pc11x
BOARD = smdkc110
VENDOR= samsung
SOC = s5pc110
3)创建开发板相关头文件include/config.h
#include <configs/$1.h>
3、传入链接地址TEXT_BASE