GNU ARM汇编--(十七)u-boot的makefile和mkconfig解读
时间:11-26
来源:互联网
点击:
- ######
- #
- #CreateincludefileforMake
- #
- echo"ARCH=${arch}">config.mk
- echo"CPU=${cpu}">>config.mk
- echo"BOARD=${board}">>config.mk
- ["${vendor}"]&&echo"VENDOR=${vendor}">>config.mk
- ["${soc}"]&&echo"SOC=${soc}">>config.mk
- ######################################################################
- #上面几句的作用在注释中描述的很清楚
- #include/config.mk的文件如下:
- #ARCH=arm
- #CPU=arm920t
- #BOARD=smdk2410
- #VENDOR=samsung
- #SOC=s3c24x0
- ######################################################################
- #AssignboarddirectorytoBOARDIRvariable
- if[-z"${vendor}"];then
- BOARDDIR=${board}
- else
- BOARDDIR=${vendor}/${board}
- fi
- echo${BOARDDIR}
- #######################################################################
- #因为vendor变量不为空,所以执行else
- #BOARDDIR的值为samsung/s3c24x0
- ########################################################################
- #
- #Createboardspecificheaderfile
- #
- if["$APPEND"="yes"]#Appendtoexistingconfigfile
- then
- echo>>config.h
- else
- >config.h#Createnewconfigfile
- fi
- ########################################################################
- #在文件的最开头可以看到APPEND为no,所以这里我们在include文件夹下建立config.h文件
- #######################################################################
- echo"/*Automaticallygenerated-donotedit*/">>config.h
- echo${TARGETS}
- foriin${TARGETS};do
- i="`echo${i}|sed/=/{s/=//;q;};{s/$/1/;}`"
- echo"#defineCONFIG_${i}">>config.h;
- done
- ###################################################
- #这里我们TARGETS为空,上面不执行了
- ##################################################
- echo"#defineCONFIG_SYS_ARCH"${arch}"">>config.h
- echo"#defineCONFIG_SYS_CPU"${cpu}"">>config.h
- echo"#defineCONFIG_SYS_BOARD"${board}"">>config.h
- ["${vendor}"]&&echo"#defineCONFIG_SYS_VENDOR"${vendor}"">>config.h
- ["${soc}"]&&echo"#defineCONFIG_SYS_SOC"${soc}"">>config.h
- cat
>config.h - #defineCONFIG_BOARDDIRboard/$BOARDDIR
- #include
- #include
- #include
- #include
- #include
- EOF
- ######################################################
- #生成config.h文件如下:
- #/*Automaticallygenerated-donotedit*/
- ##defineCONFIG_SYS_ARCH"arm"
- ##defineCONFIG_SYS_CPU"arm920t"
- ##defineCONFIG_SYS_BOARD"smdk2410"
- ##defineCONFIG_SYS_VENDOR"samsung"
- ##defineCONFIG_SYS_SOC"s3c24x0"
- ##defineCONFIG_BOARDDIRboard/samsung/smdk2410
- ##include
- ##include
- ##include
- ##include
- ##include
- #####################################################
- exit0
make xxx_config后,主要的变化是多了几个文件:
1.include/asm --> arch/arm/include/arm
2.include/asm/arch --> arch-s3c24x0
3.include/asm/proc --> proc-armv
4.在include目录下新建了config.mk文件,文件内容是ARCH CPU BOARD VENDOR SOC的定义5.在include目录下新建了config.h文件
接着看make:
给出部分makefile中的注释,主要是一些变量的定义:
[cpp]view plaincopy
- VERSION=2012
- PATCHLEVEL=07
- SUBLEVEL=
- EXTRAVERSION=
- ifneq"$(SUBLEVEL)"""
- U_BOOT_VERSION=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
- else
- U_BOOT_VERSION=$(VERSION).$(PATCHLEVEL)$(EXTRAVERSION)
- endif
- ################################
- #定义U_BOOT_VERSION为2012.07
- #####################################
- TIMESTAMP_FILE=$(obj)include/generated/timestamp_autogenerated.h
- VERSION_FILE=$(obj)include/generated/version_autogenerated.h
- ###############################
- #因为obj为空,所以定义TIMESTAMP_FILE为include/generated/timestamp_autogenerated.h
- #定义VERSION_FILE为include/generated/version_autogenerated.h
- #****************
- HOSTARCH:=$(shelluname-m|
- sed-es/i.86/x86/
- -es/sun4u/sparc64/
- -es/arm.*/arm/
- -es/sa110/arm/
- -es/ppc64/powerpc/
- -es/ppc/powerpc/
- -es/macppc/powerpc/
- -es/sh.*/sh/)
- HOSTOS:=$(shelluname-s|tr[:upper:][:lower:]|
- sed-es/
.*/cygwin/) - #Setshelltobashifpossible,otherwisefallbacktosh
- SHELL:=$(shellif[-x"$$BASH"];thenecho$$BASH;
- elseif[-x/bin/bash];thenecho/bin/bash;
- elseechosh;fi;fi)
- exportHOSTARCHHOST
ARM汇编u-bootmakefilemkconfi 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)