传参
#! / bin/ sh - e
# Script to create header files and links to configure
# U- Boot for a specific board.
#
# Parameters: Target Architecture CPU Board [ VENDOR] [ SOC]
#
# ( C) 2002 - 2006 DENX Software Engineering, Wolfgang Denk < wd@denx. de>
#
##定义两个变量
APPEND= no # Default: Create new config file
BOARD_NAME= "" # Name to print in make output
while [ $# - gt 0 ] ; do ## $# 的意思就是传参的个数 6 x210_sd arm s5pc11x x210 samsung s5pc110 在主Makefile里边的2589 行; - gt 等于 >
case "$1" in ## $1 = 第一个参数也就是x210_sd; 不成立
-- ) shift ; break ; ;
- a) shift ; APPEND= yes ; ;
- n) shift ; BOARD_NAME= "${1%%_config}" ; shift ; ;
* ) break ; ; ##都不符合,直接跳出while 循环
esac
done
##if 语句 限制性[ "${BOARD_NAME}" ] 成立就不执行BOARD_NAME= "$1"
[ "${BOARD_NAME}" ] || BOARD_NAME= "$1" ##"${BOARD_NAME}" 等于空为假,执行后一句; 这语句的作用就是给BOARD_NAME变量赋值, 是空就赋值
##当前 BOARD_NAME = x210_sd
[ $# - lt 4 ] && exit 1 ## - lt 等于 <
[ $# - gt 6 ] && exit 1 ## 这两句的意思就是该脚本传参只能传4 ~ 6 个
## 配置的时候就会有这句话
echo "Configuring for ${BOARD_NAME} board..."
创建符号链接
#
# Create link to architecture specific headers
#
if [ "$SRCTREE" != "$OBJTREE" ] ; then ## 判断是否是- o编译( 也就是指定目录编译)
mkdir - p ${ OBJTREE} / include
mkdir - p ${ OBJTREE} / include2
cd ${ OBJTREE} / include2
rm - f asm
ln - s ${ SRCTREE} / include/ asm - $2 asm
LNPREFIX= "../../include2/asm/"
cd . . / include
rm - rf asm - $2
rm - f asm
mkdir asm - $2
ln - s asm - $2 asm
else
cd . / include
rm - f asm
ln - s asm - $2 asm ##建立符号链接 ; 创建asm ,指向asm - arm
fi
rm - f asm - $2 / arch ##删除arch文件(这个文件不一定有,为了防止有)
if [ - z "$6" - o "$6" = "NULL" ] ; then ## - o 和或一个意思; - z 判断字符是否为空( 很明显不为空, 不成立) ;
ln - s ${ LNPREFIX} arch- $3 asm - $2 / arch ##$3 s5pc11x; 在include/ asm - arm下创建arch, 指向include/ asm - arm/ arch- s5pc11x
else
ln - s ${ LNPREFIX} arch- $6 asm - $2 / arch ##同理:$3 s5pc110 ##&& 注意这段判断语句执行的是这句,如果现在找的话是找不到的,因为后边会把这个给删了; 在70 行
fi
# create link for s3c24xx SoC
if [ "$3" = "s3c24xx" ] ; then
rm - f regs. h
ln - s $6. h regs. h
rm - f asm - $2 / arch
ln - s arch- $3 asm - $2 / arch
fi
# create link for s3c64xx SoC
if [ "$3" = "s3c64xx" ] ; then
rm - f regs. h
ln - s $6. h regs. h
rm - f asm - $2 / arch
ln - s arch- $3 asm - $2 / arch
fi
# create link for s5pc1xx SoC
if [ "$3" = "s5pc1xx" ] ; then
rm - f regs. h
ln - s $6. h regs. h
rm - f asm - $2 / arch
ln - s arch- $3 asm - $2 / arch
fi
# create link for s5pc11x SoC
if [ "$3" = "s5pc11x" ] ; then ##成立
rm - f regs. h ##当前位置是include/ ; 删除这个目录下的regs. h ( 为了防止原本有)
ln - s $6. h regs. h ##再创建regs. h, 并指向s5oc110. h
rm - f asm - $2 / arch
ln - s arch- $3 asm - $2 / arch ##同理
fi
# create link for s5p64xx SoC
if [ "$3" = "s5p64xx" ] ; then
rm - f regs. h
ln - s $6. h regs. h
rm - f asm - $2 / arch
ln - s arch- $3 asm - $2 / arch
fi
# create link for s5p644x SoC
if [ "$3" = "s5p644x" ] ; then
rm - f regs. h
ln - s $6. h regs. h
rm - f asm - $2 / arch
ln - s arch- $3 asm - $2 / arch
fi
if [ "$2" = "arm" ] ; then
rm - f asm - $2 / proc
ln - s ${ LNPREFIX} proc- armv asm - $2 / proc ##${ LNPREFIX} = include/ asm - arm/
fi
# create link for s3c64xx- mp SoC
if [ "$3" = "s3c64xx-mp" ] ; then
rm - f regs. h
ln - s $6. h regs. h
rm - f asm - $2 / arch
ln - s arch- $3 asm - $2 / arch
fi
生成config.mk文件
#
# Create include file for Make
#
echo "ARCH = $2" > config. mk ## > 创建文件 把ARCH = arm 写到文件里
echo "CPU = $3" >> config. mk ## >> 在已有的文件里追加内容 CPU = s5pc11x
echo "BOARD = $4" >> config. mk BOARD = x210
[ "$5" ] && [ "$5" != "NULL" ] && echo "VENDOR = $5" >> config. mk
[ "$6" ] && [ "$6" != "NULL" ] && echo "SOC = $6" >> config. mk
生成一个头文件config.h
config.h 文件里包含了一个头文件
#include <configs/x210_sd.h>
#
# Create board specific header file
#
if [ "$APPEND" = "yes" ] # Append to existing config file
then
echo >> config. h
else
> config. h # Create new config file ##包含配置的头文件
fi
echo "/* Automatically generated - do not edit */" >> config. h
echo "#include <configs/$1.h>" >> config. h
exit 0
整体
#! / bin/ sh - e
# Script to create header files and links to configure
# U- Boot for a specific board.
#
# Parameters: Target Architecture CPU Board [ VENDOR] [ SOC]
#
# ( C) 2002 - 2006 DENX Software Engineering, Wolfgang Denk < wd@denx. de>
#
##定义两个变量
APPEND= no # Default: Create new config file
BOARD_NAME= "" # Name to print in make output
while [ $# - gt 0 ] ; do ## $# 的意思就是传参的个数 6 x210_sd arm s5pc11x x210 samsung s5pc110 在主Makefile里边的2589 行; - gt 等于 >
case "$1" in ## $1 = 第一个参数也就是x210_sd; 不成立
-- ) shift ; break ; ;
- a) shift ; APPEND= yes ; ;
- n) shift ; BOARD_NAME= "${1%%_config}" ; shift ; ;
* ) break ; ; ##都不符合,直接跳出while 循环
esac
done
##if 语句 限制性[ "${BOARD_NAME}" ] 成立就不执行BOARD_NAME= "$1"
[ "${BOARD_NAME}" ] || BOARD_NAME= "$1" ##"${BOARD_NAME}" 等于空为假,执行后一句; 这语句的作用就是给BOARD_NAME变量赋值, 是空就赋值
##当前 BOARD_NAME = x210_sd
[ $# - lt 4 ] && exit 1 ## - lt 等于 <
[ $# - gt 6 ] && exit 1 ## 这两句的意思就是该脚本传参只能传4 ~ 6 个
## 配置的时候就会有这句话
echo "Configuring for ${BOARD_NAME} board..."
#
# Create link to architecture specific headers
#
if [ "$SRCTREE" != "$OBJTREE" ] ; then ## 判断是否是- o编译( 也就是指定目录编译)
mkdir - p ${ OBJTREE} / include
mkdir - p ${ OBJTREE} / include2
cd ${ OBJTREE} / include2
rm - f asm
ln - s ${ SRCTREE} / include/ asm - $2 asm
LNPREFIX= "../../include2/asm/"
cd . . / include
rm - rf asm - $2
rm - f asm
mkdir asm - $2
ln - s asm - $2 asm
else
cd . / include
rm - f asm
ln - s asm - $2 asm ##建立符号链接 ; 创建asm ,指向asm - arm
fi
rm - f asm - $2 / arch ##删除arch文件(这个文件不一定有,为了防止有)
if [ - z "$6" - o "$6" = "NULL" ] ; then ## - o 和或一个意思; - z 判断字符是否为空( 很明显不为空, 不成立) ;
ln - s ${ LNPREFIX} arch- $3 asm - $2 / arch ##$3 s5pc11x; 在include/ asm - arm下创建arch, 指向include/ asm - arm/ arch- s5pc11x
else
ln - s ${ LNPREFIX} arch- $6 asm - $2 / arch ##同理:$3 s5pc110 ##&& 注意这段判断语句执行的是这句,如果现在找的话是找不到的,因为后边会把这个给删了; 在70 行
fi
# create link for s3c24xx SoC
if [ "$3" = "s3c24xx" ] ; then
rm - f regs. h
ln - s $6. h regs. h
rm - f asm - $2 / arch
ln - s arch- $3 asm - $2 / arch
fi
# create link for s3c64xx SoC
if [ "$3" = "s3c64xx" ] ; then
rm - f regs. h
ln - s $6. h regs. h
rm - f asm - $2 / arch
ln - s arch- $3 asm - $2 / arch
fi
# create link for s5pc1xx SoC
if [ "$3" = "s5pc1xx" ] ; then
rm - f regs. h
ln - s $6. h regs. h
rm - f asm - $2 / arch
ln - s arch- $3 asm - $2 / arch
fi
# create link for s5pc11x SoC
if [ "$3" = "s5pc11x" ] ; then ##成立
rm - f regs. h ##当前位置是include/ ; 删除这个目录下的regs. h ( 为了防止原本有)
ln - s $6. h regs. h ##再创建regs. h, 并指向s5oc110. h
rm - f asm - $2 / arch
ln - s arch- $3 asm - $2 / arch ##同理
fi
# create link for s5p64xx SoC
if [ "$3" = "s5p64xx" ] ; then
rm - f regs. h
ln - s $6. h regs. h
rm - f asm - $2 / arch
ln - s arch- $3 asm - $2 / arch
fi
# create link for s5p644x SoC
if [ "$3" = "s5p644x" ] ; then
rm - f regs. h
ln - s $6. h regs. h
rm - f asm - $2 / arch
ln - s arch- $3 asm - $2 / arch
fi
if [ "$2" = "arm" ] ; then
rm - f asm - $2 / proc
ln - s ${ LNPREFIX} proc- armv asm - $2 / proc ##${ LNPREFIX} = include/ asm - arm/
fi
# create link for s3c64xx- mp SoC
if [ "$3" = "s3c64xx-mp" ] ; then
rm - f regs. h
ln - s $6. h regs. h
rm - f asm - $2 / arch
ln - s arch- $3 asm - $2 / arch
fi
#
# Create include file for Make
#
echo "ARCH = $2" > config. mk ## > 创建文件 把ARCH = arm 写到文件里
echo "CPU = $3" >> config. mk ## >> 在已有的文件里追加内容 CPU = s5pc11x
echo "BOARD = $4" >> config. mk BOARD = x210
[ "$5" ] && [ "$5" != "NULL" ] && echo "VENDOR = $5" >> config. mk
[ "$6" ] && [ "$6" != "NULL" ] && echo "SOC = $6" >> config. mk
#
# Create board specific header file
#
if [ "$APPEND" = "yes" ] # Append to existing config file
then
echo >> config. h
else
> config. h # Create new config file ##包含配置的头文件
fi
echo "/* Automatically generated - do not edit */" >> config. h
echo "#include <configs/$1.h>" >> config. h
exit 0