`

u-boot mkconfig文件分析

 
阅读更多

Mkconfig文件分析

 

 

 

#!/bin/sh-e

 

#Scripttocreateheaderfilesandlinkstoconfigure

#U-Bootforaspecificboard.

#

#Parameters:TargetArchitectureCPUBoard[VENDOR][SOC]

#@$(MKCONFIG)mini6410armarm1176mini6410samsungs3c64xx

#(C)2002-2006DENXSoftwareEngineering,WolfgangDenk<wd@denx.de>

#

 

#***定义变量

APPEND=no #Default:Createnewconfigfile

BOARD_NAME="" #Nametoprintinmakeoutput

TARGETS=""

arch=""

cpu=""

board=""

vendor=""

soc=""

 

#***make-Axxx$#2,且$1-A时条件成立

if[\($#-eq2\)-a\("$1"="-A"\)];then

#Automaticmode

#***搜索boards.cfg文件,把包含有xxx的行,赋值给line变量

#假如为:mini6410armarm1176mini6410samsungs3c64xx

line=`egrep-i"^[[:space:]]*${2}[[:space:]]"boards.cfg`||{

echo"make:***Noruletomaketarget\`$2_config'.Stop.">&2

exit1

}

#***line的内容分别赋值给$1--$6

set${line}

#adddefaultboardnameifneeded

[$#=3]&&set${line}${1}

fi

 

while[$#-gt0];do

case"$1"in

--)shift;break;;

-a)shift;APPEND=yes;;

-n)shift;BOARD_NAME="${1%_config}";shift;;

-t)shift;TARGETS="`echo$1|sed's:_::g'`${TARGETS}";shift;;

*)break;;

esac

done

 

#***$#表示参数个数,如果参数个数小于4个大于6个就退出

[$#-lt4]&&exit1

[$#-gt6]&&exit1

 

#***此处的$1如上面代码所表示,如果$1是以_config结尾,则去掉_config

CONFIG_NAME="${1%_config}"

#***如果BOARD_NAME没有定义就执行BOARD_NAME="${CONFIG_NAME}"#=mini6410

["${BOARD_NAME}"]||BOARD_NAME="${CONFIG_NAME}"

#***arch=arm

arch="$2"

#***cpu=arm1176

cpu="$3"

if["$4"="-"];then

board=${BOARD_NAME}

else

#board=mini6410

board="$4"

fi

//同上给vendorsoc赋值

[$#-gt4]&&["$5"!="-"]&&vendor="$5"

[$#-gt5]&&["$6"!="-"]&&soc="$6"

 

#***检察ARCH是否定义,是否等于arch

if["${ARCH}"-a"${ARCH}"!="${arch}"];then

#***输出错误信息

echo"Failed:\$ARCH=${ARCH},shouldbe'${arch}'for${BOARD_NAME}"1>&2

exit1

fi

 

echo"Configuringfor${BOARD_NAME}board..."

 

#

#Createlinktoarchitecturespecificheaders

#

#***检查SRCTREEOBJTREE是否都是指向u-boot-xxxx.xx

if["$SRCTREE"!="$OBJTREE"];then

#***

mkdir-p${OBJTREE}/include

mkdir-p${OBJTREE}/include2

cd${OBJTREE}/include2

rm-fasm

ln-s${SRCTREE}/arch/${arch}/include/asmasm

LNPREFIX=${SRCTREE}/arch/${arch}/include/asm/

cd../include

rm-fasm

ln-s${SRCTREE}/arch/${arch}/include/asmasm

else

cd./include

rm-fasm#***删除上次链接文件

#***重新建立链接文件

ln-s../arch/${arch}/include/asmasm

fi

#***删除/include/asm/arch文件

rm-fasm/arch

 

#***建立链接/include/asm/archarch-arm1176

if[-z"${soc}"];then

ln-s${LNPREFIX}arch-${cpu}asm/arch

else

ln-s${LNPREFIX}arch-${soc}asm/arch

fi

 

#***建立链接asm/procproc-armv

if["${arch}"="arm"];then

rm-fasm/proc

ln-s${LNPREFIX}proc-armvasm/proc

fi

 

#

#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

 

#AssignboarddirectorytoBOARDIRvariable

if[-z"${vendor}"];then

BOARDDIR=${board}

else

 

#***BOARDDIR=samsung/s3c64xx

BOARDDIR=${vendor}/${board}

fi

 

#

#Createboardspecificheaderfile

#

#***创建空白文档config.h

if["$APPEND"="yes"] #Appendtoexistingconfigfile

then

echo>>config.h

else

>config.h #Createnewconfigfile

fi

echo"/*Automaticallygenerated-donotedit*/">>config.h

 

foriin${TARGETS};do

echo"#defineCONFIG_MK_${i}1">>config.h;

done

 

#***config.h文件中写入以下内容

cat<<EOF>>config.h

#defineCONFIG_BOARDDIRboard/$BOARDDIR

#include<config_defaults.h>

#include<configs/${CONFIG_NAME}.h>

#include<asm/config.h>

EOF

 

exit0

 

注:mkconfig文件创建两个文件config.hconfig.mk

建立两个链接文件arch-arm1176proc-armv

 

分享到:
评论

相关推荐

    u-boot分析mkconfig详解

    而mkconfig文件则是U-boot配置过程中的关键组件,它帮助我们定制和构建特定于硬件的U-boot镜像。本文将深入剖析U-boot的mkconfig文件及其在编译过程中的作用。 首先,让我们回顾一下编译U-boot的基本步骤。在编译...

    u-boot的Makefile分析

    ### U-Boot的Makefile分析 U-Boot(Universal Boot Loader)是一个开源的启动加载程序,主要用于嵌入式系统中,支持多种处理器架构和开发板。本文将详细解析U-Boot项目的Makefile文件,帮助读者理解如何配置和编译U...

    U-Boot-1.3.1分析

    ### U-Boot-1.3.1源码分析与移植详解 #### U-Boot-1.3.1:深入理解与应用 U-Boot-1.3.1是一款广泛应用于嵌入式系统的开源启动加载器,它支持多种处理器架构,包括但不限于ARM、PowerPC、x86等,为嵌入式设备提供了...

    u-boot_2014_04初步分析

    从顶层Makefile到mkconfig脚本,从boards.cfg到具体的平台配置,U-Boot的每一个环节都是精心设计的,它们共同确保了U-Boot作为一个嵌入式引导加载程序的灵活性和强大的功能。在这个过程中,开发者需要具备一定的...

    u-boot源码分析

    【u-boot源码分析】 u-boot,全称Microcontroller Bootloader,是一款开源的引导加载程序,主要用于嵌入式系统,负责初始化硬件、加载操作系统内核等任务。本文将从几个关键方面深入理解u-boot的结构,并探讨如何将...

    U-BOOT 移植

    - `MKCONFIG`定义为`$(SRCTREE)/mkconfig`,即指向U-Boot源码树中的一个脚本文件。 - `$(@:_config=)`表示对目标名称`smdk2410_config`进行处理,去除`_config`后缀,变为`smdk2410`。 - **最终命令**:`$...

    u-boot在S3C2410移植

    编译阶段,先执行`make bks2410_config`生成配置,再运行`make all ARCH=arm`来编译整个项目,最终生成`u-boot.bin`文件。 最后,但并非最不重要的是,需要根据开发板的具体内存布局修改`board/bks2410/memsetup.S`...

    U-BOOT中MAKEFILE详解

    本文将深入探讨U-Boot项目的Makefile文件结构及其编译流程。 #### 二、U-Boot源码结构解析 U-Boot项目的源码组织清晰,便于理解和维护。解压后的源码目录结构如下: 1. **board**:存储与特定硬件平台相关的代码...

    U-BOOT源码分析及移植.pdf

    ### U-BOOT源码分析及移植 #### 一、U-BOOT工程项目结构 U-BOOT是一种广泛应用于嵌入式系统的Bootloader,具有高度的可移植性和丰富的功能特性。本章节将详细探讨U-BOOT项目的整体结构及其组织方式,这对于理解和...

    u-boot-1.3.4 移植到mini2440.pdf

    标题《u-boot-1.3.4 移植到mini...整个移植过程要求开发者对U-boot启动过程、硬件初始化流程以及相关的配置文件有足够的了解。通过上述步骤,可以将U-boot移植到新的开发板上,为后续操作系统的加载和引导打下基础。

    u-boot源码分析与移植

    ### U-Boot源码分析与移植 #### 一、U-Boot工程项目结构解析 ##### 1. 源代码组织架构 U-Boot项目结构清晰,便于管理和维护。以下是其关键目录及其作用: - **board**:存放针对不同硬件平台定制的代码。每个...

    U-BOOT源码分析及移植

    ### U-BOOT源码分析及移植深度解析 U-BOOT,作为一款开源的Bootloader,广泛应用于嵌入式系统中,特别是在ARM架构的处理器上。本文将深入探讨U-BOOT的源码分析与移植过程,重点围绕FS2410开发板展开,包括其工程...

    U-Boot在44B0X开发板上的移植以及代码分析

    4. 找到 U-Boot 根目录下 Makefile 修改加入 1.ev44b0ii_config : unconfig 2.@./mkconfig $(@:_config=) arm arm7tdmi ev44b0ii 5. 运行 make ev44bii_config,如果没有错误就可以开始硬件相关代码移植的工作。 三...

Global site tag (gtag.js) - Google Analytics