u-boot移植之二&&----u-boot2012.10&mkconfig文件解读
&&&其实如果要移植u-boot根本不用看太多的这些文件,因为网友们给出的例子已经很多,只要依葫芦画瓢基本都能移植成功,但还是希望搞清楚细节问题,可能本文的理解不全正确,但是如有空我会对我自己发布的内容进行更新,只要我发现其中是有错误的.同时也希望看到博文的网友们能互相交流。
#本文黑色为原文件,灰色为注释
#u-boot移植时,第一步总是要先执行一条make xxx_config
命令(xxx是开发板的名称),这#条命令是调用u-boot根目录下的mkconfig文件,同时给它传递了几个参数:
#Target,ARCH,CPU,Board name,Vendor,SoC,Options
# Script to create header
files and links to configure
# U-Boot for a specific board.
# Parameters:& Target&
Architecture& CPU& Board [VENDOR]
DENX Software Engineering, Wolfgang Denk
#定义了三个变量
APPEND=no Default: Create new
config file
BOARD_NAME="" Name to print in make output
TARGETS=""
options=""
#这句话的意思是:如果输入参数的个数等于2 且第一个参数等于A,
#注意arch是第0个参数则执行下面的命令
if [ \( $# -eq 2 \) -a \(
"$1" = "-A" \) ] ; then
# Automatic mode
#egrep命令搜索board.cfg文件中板子名称为xxx(就是你make
xxx_config时的开发板名称
#-i表示忽略大小写,找不到报错,这句话就是搜索包含参数2的行且参数2前后必须是空格,
#也就是纯参数2,这种用法太经典,以至于我有点昏昏欲睡,但是还得坚持,革命尚未成
#功,同志仍需努力呀
&line=`egrep -i
"^[[:space:]]*${2}[[:space:]]" boards.cfg` || {
&&echo "make: *** No rule to make
target \`$2_config'.& Stop."
&set ${line} #这是什么意思? add default
board name if needed
&[ $# = 3 ] && set
${line} ${1}
elif [ "${MAKEFLAGS+set}${MAKELEVEL+set}" = "setset" ] ; then
only warn when using a config target in the
Please migrate to boards.cfg.& Failure to do so
mean removal of your board in the next release.
while [ $# -gt 0 ] ; do
#当输入参数大于0时执行以下操作&case
in&&&&&&&&&&&
#判断第一个参数&--) shift
所有参数左移,不包括$0,$0是命令名
&-a) APPEND=yes
;; #-a, APPEND变量赋值yes,不生成新的config.h&-n)
BOARD_NAME="${1%_config}" ;; #如果BOARD_NAME非空,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
则什么也不& 做,否则将参
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
数1赋值给BOARD_NAME,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
或表示,前面如果为真,则
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
不执行后面操作,如果为假,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
则执行或后面的代码&-t) TARGETS="`echo $1 |
sed 's:_: :g'` ${TARGETS}" ;;
[ $# -lt 4 ]
[ $# -gt 7 ] && exit
#如果参数个数小于4或者大于7则退出
all options and/or _config suffixes
CONFIG_NAME="${1%_config}"&&&&&
#CONFIG_NAME设置为第一个参数
[ "${BOARD_NAME}" ] ||
BOARD_NAME="${1%_config}"
#*此处很重要此处很重要此处很重要此处很重要,,,,他给他给他给他给
#BOARD_NAME赋值为赋值为赋值为赋值为$1,,,,你自己的开发板名称例如fs2410
cpu=`echo $3 | awk 'BEGIN {FS = ":"} ; {print $1}'`
spl_cpu=`echo $3 | awk 'BEGIN {FS = ":"} ; {print $2}'`
if [ "$4" = "-" ] ; then
&board=${BOARD_NAME}
&board="$4"
[ $# -gt 4 ] && [ "$5" != "-" ]
&& vendor="$5"
[ $# -gt 5 ] && [ "$6" != "-" ]
&& soc="$6"
[ $# -gt 6 ] && [ "$7" != "-" ]
check if we have a board config name in the
options field
the options field mave have a board config name
and a list
of options, both separated by a colon (':');
the options are
separated by commas (',').
Check for board name
&tmp="${7%:*}"
&if [ "$tmp" ] ; then
&&CONFIG_NAME="$tmp"
Check if we only have a colon...
&if [ "${tmp}" != "$7" ] ; then
&&options=${7#*:}
&&TARGETS="`echo ${options} | sed
's:,: :g'` ${TARGETS}"
if [ "${ARCH}" -a
"${ARCH}" != "${arch}" ]; then
&echo "Failed: \$ARCH=${ARCH}, should be '${arch}'
for ${BOARD_NAME}" 1&&2
if [ "$options" ] ;
&echo "Configuring for ${BOARD_NAME} - Board:
${CONFIG_NAME}, Options: ${options}"
&echo "Configuring for ${BOARD_NAME}
# Create link to architecture specific headers
if [ "$SRCTREE" != "$OBJTREE" ] ;
&mkdir -p ${OBJTREE}/include
&mkdir -p ${OBJTREE}/include2
${OBJTREE}/include2&rm -f asm
&ln -s ${SRCTREE}/arch/${arch}/include/asm
&LNPREFIX=${SRCTREE}/arch/${arch}/include/asm/
&cd ../include
&mkdir -p asm
&cd ./include
&ln -s ../arch/${arch}/include/asm asm
#$SRCTREE是源代码目录,OBJTREE是目标文件目录,
#if [ "$SRCTREE"
!= "$OBJTREE" ]此句是判断源代码目录和目标文件目录是
#否一样,可以选择在其他目录下编译uboot,这样可以令源代码目录保持干净,
#可以同时使用不同的配置进行编译。这里我们打算直接在源代码目录下编译,
#所以将执行else的代码,cd
./include进入include目录,rm -f asm删除
#asm文件(这是上一次配置时建立的链接文件),然后再次建立链接文
#件,ln -s
../arch/${arch}/include/asm asm,并令它指向
#../arch/${arch}/include/asm,即../arch/arm/include/asm,
if [ -z "${soc}" ] ;
&ln -s ${LNPREFIX}arch-${cpu} asm/arch
&ln -s ${LNPREFIX}arch-${soc} asm/arch
if [ "${arch}" = "arm" ] ;
&rm -f asm/proc
&ln -s ${LNPREFIX}proc-armv asm/proc
# Create include file for Make
( echo "ARCH&& = ${arch}"
&&& if [ ! -z
"$spl_cpu" ] ; then
&echo 'ifeq ($(CONFIG_SPL_BUILD),y)'
${spl_cpu}"
&echo "else"
&echo "endif"
"BOARD& = ${board}"
[ "${vendor}" ] && echo "VENDOR =
${vendor}"
"${soc}"&&& ]
&&& exit 0 )
& config.mk
# Assign board directory
to BOARDIR variable
if [ -z "${vendor}" ] ; then
BOARDDIR=${board}
BOARDDIR=${vendor}/${board}
# Create board specific header file
if [ "$APPEND" = "yes" ] Append to existing
config file
config.h& Create new config
&&config.h
for i in ${TARGETS} ;
&i="`echo ${i} | sed '/=/
{s/=/&/;q; } ; { s/$/&1/;
&echo "#define CONFIG_${i}"
echo "#define
CONFIG_SYS_ARCH& \"${arch}\""&
&& config.h
echo "#define CONFIG_SYS_CPU&&
\"${cpu}\""&&
&& config.h
echo "#define CONFIG_SYS_BOARD \"${board}\""
&& config.h
[ "${vendor}" ]
&& echo "#define CONFIG_SYS_VENDOR \"${vendor}\""
&& config.h
"${soc}"&&& ]
&& echo "#define
CONFIG_SYS_SOC&&&
\"${soc}\""&&&
&& config.h
&& config.h
#define CONFIG_BOARDDIR board/$BOARDDIR
&config_cmd_defaults.h&
#include &config_defaults.h&
&configs/${CONFIG_NAME}.h&
#include &asm/config.h&
#include &config_fallbacks.h&
#include &config_uncmd_spl.h&
从以上过程可以看出,如果要在如果要在board目录下新建一个开发板
#&board_name&
的目录,或着在board目录的子目录下新建一个开发板&board_name&
#目录,需要在board.cfg配置文件中添加相应的信息,在#include/configs目录下也要
#建立一个文件&board_name.h&,里面存放的就是开发板board_name的配置信息。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。- 系统光盘下载网站!
当前位置: >
> 详细页面
Win7系统下cfg文件怎么打开?
来源:系统之家
作者:chunhua
在使用Win7系统的过程中,一些用户发现了后缀名为cfg的文件,双击打开时系统却提示:&Windows 无法打开此文件&,cfg到底是什么文件呢?又该如何打开呢?其实打开方法很简单,下面我们一起来看看。
cfg是什么文件?
cfg大多为软件的配置文件,其格式还是文本文件,和txt不同的是,格用cfg后缀来区分,而很多软件需要配置文件。如我们经常看到的迅雷下载文件时,当没有下载完成就会生成一个cfg格式文件。一些软件也用cfg文件来配置。
cfg文件怎么打开?
cgf文件一般使用记事本即可打开,右键点击该文件,选择打开方式为记事本,即可打开cfg文件。
以上就是Win7系统下打开cfg文件的操作方法,方法很简单,对cfg文件有兴趣的伙伴,可以按如上方法打开。
栏目热门教程
人气教程排行
热门系统下载
本站发布的系统与软件仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件!如侵犯到您的权益,请及时通知我们,我们会及时处理。
Copyright&2011 系统之家(www.xitongzhijia.net) 版权所有 闽ICP备号-1