配置命令:make 100ask24x0_config
1.打开Makefile:查找100ask24x0_config
100ask24x0_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t 100ask24x0 NULL s3c24x0
make时,相当于执行
@$(MKCONFIG) $(@:_config=) arm arm920t 100ask24x0 NULL s3c24x0
2.在Makefile中查找MKCONFIG
MKCONFIG := $(SRCTREE)/mkconfig
源码所在目录下应该有个mkconfig文件,打开目录发现确实有
book@book-desktop:/work/system/u-boot-1.1.6$ ls
arm_config.mk common doc include lib_m68k m68k_config.mk mkconfig ppc_config.mk u-boot
avr32_config.mk config.mk drivers lib_arm lib_microblaze MAINTAINERS nand_spl README u-boot.bin
blackfin_config.mk COPYING dtt lib_avr32 lib_mips MAKEALL net rtc u-boot.map
board cpu examples lib_blackfin lib_nios Makefile nios2_config.mk rules.mk u-boot.srec
CHANGELOG CREDITS fs lib_generic lib_nios2 microblaze_config.mk nios_config.mk System.map
CHANGELOG-before-U-Boot-1.1.5 disk i386_config.mk lib_i386 lib_ppc mips_config.mk post tools
@$(MKCONFIG) $(@:_config=) arm arm920t 100ask24x0 NULL s3c24x0
3.$(@就表示替换为100ask24x0所以这句话应该是:mkconfig 100ask24x0 arm arm920t 100ask24x0 NULL s3c24x0
$0 $1 $2 $3 $4 $5 $6
4.打开MKCONFIG脚本文件:
while [ $# -gt 0 ] ; do
case "$1" in
--) shift ; break ;;
-a) shift ; APPEND=yes ;;
-n) shift ; BOARD_NAME="${1%%_config}" ; shift ;;
*) break ;;
5.分析传过来的参数 有没有-- 有没有-a 有没有-n ,发现我们的命令里并没有,所以这段可以省略。
[ "${BOARD_NAME}" ] || BOARD_NAME="$1"
6.如果BOARD_NAME没定义,就让BOARD_NAME="$1",此时我们的$1是100ask24x0。
[ $# -lt 4 ] && exit 1
[ $# -gt 6 ] && exit 1
7.$#表示参数的个数,此时我们的参数个数为6,如果参数个数小于4将退出,如果大于6也将退出。
echo "Configuring for ${BOARD_NAME} board..."
8.打印这句话Configuring for ${BOARD_NAME} board ...
cd ./include
rm -f asm
ln -s asm-$2 asm
建立一个链接文件asm,它指向asm-arm,打开目录,发现确实如此:
book@book-desktop:/work/system/u-boot-1.1.6$ cd include
book@book-desktop:/work/system/u-boot-1.1.6/include$ ls -l asm
lrwxrwxrwx 1 book book 7 2018-04-18 17:56 asm -> asm-arm
这样做的原因是:include下有很多架构的,asm配置时临时生成指向要的架构。
if [ -z "$6" -o "$6" = "NULL" ] ; then
ln -s ${LNPREFIX}arch-$3 asm-$2/arch
else
ln -s ${LNPREFIX}arch-$6 asm-$2/arch
如果第六个参数为空或者不为空,执行下面的命令,相当于执行ln -s arch-s3c24x0 asm-arm/arch
if [ "$2" = "arm" ] ; then
rm -f asm-$2/proc
ln -s ${LNPREFIX}proc-armv asm-$2/proc
如果第二个参数是arm,ln-s proc -armv asm-arm/proc
echo "ARCH = $2" > config.mk
echo "CPU = $3" >> config.mk
echo "BOARD = $4" >> config.mk
>表示新建一个文件,>>表示内容追加过去
config.mk的内容:ARCH=arm
CPU=arm920t
BOARD=100ask24x0
SOC=s3c24x0
参考文献:嵌入式Linux应用开发完全手册,韦东山,人民邮电出版社