第33行判断源代码目录和目标文件目录是否一样,可以选择在其他的目录下进行编译,这里我们是直接在源代码文件中进行编译,这里第33行的if语句不满足条件,直接执行else分支语句。第46~48行是通过cd命令进入include目录,删除上一次配置的链接文件asm文件,然后再次建立asm文件,并使其链接向asm-$2目录,也就是asm-arm。第51行是删除asm-arm/arch,53行检测输入的第六个参数是否为空,若为空则执行if分支语句,否则执行else分支,我们输入的第六个参数为“s3c24x0”,不为空,也不为“NULL”所以执行else分支,即创建asm-arm/arch,并令其链接向arch-s3c24x0目录。第60~61行重新建立asm-arm/pro文件,并让它链接向proc-armv目录。
64 #
65 # Create include file for Make
66 #
67 echo "ARCH = $2" > config.mk /* 新建文件config.mk,内容为"ARCH =arm" */
68 echo "CPU = $3" >> config.mk /* 追加内容"CPU =arm920t"到config.mk文件中 */
69 echo "BOARD = $4" >> config.mk /* 追加内容"BOARD =smdk2410"到config.mk文件中 */
70
71 [ "$5" ] && [ "$5" != "NULL" ] && echo "VENDOR = $5" >> config.mk /* $5参数为空,不执行追加内容 */
72
73 [ "$6" ] && [ "$6" != "NULL" ] && echo "SOC = $6" >> config.mk /* 追加内容"SOC =S3C24x0到config.mk文件中"
第64~73行执行完后,在include文件夹中创建config.mk内容为:
ARCH = arm
CPU = arm920t
BOARD = smdk2410
SOC = s3c24x0
如下图所示:
75 #
76 # Create board specific header file
77 #
78 if [ "$APPEND" = "yes" ] # Append to existing config file
79 then
80 echo >> config.h
81 else
82 > config.h # Create new config file
83 fi
84 echo "/* Automatically generated - do not edit */" >>config.h
85 echo "#include <configs/$1.h>" >>config.h
86
87 exit 0
APPEND维持原值为"no",执行分支语句,创建config.h文件,第84~85为在创建config.h文件内追加信息,config.h内容如下图所示:
现在来总结一下,执行配置命令“make smdk2410_config”产生结果:
1.开发板名称BOARD_NAME等于$1(此处为smdk2410)
2.创建到平台/开发板相关头文件的链接
3.创建根目录下Makefile文件包含的文件include/config.mk
4.创建开发板相关的头文件include/config.h(此文件会在start.S中包含,很重要)
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx