U-BOOT中mkconfig详解
来源:互联网 发布:冬天男鞋推荐知乎 编辑:程序博客网 时间:2024/05/16 14:10
在u-boot的顶层makefile中,对不同开发板可以进行不同的配置。以s3c2400为例,在makefile中我们可以找到这样几行代码:
smdk2400_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t smdk2400 NULL s3c24x0
其中第二行的命令就是mkconfig的用法,下面详细解析mkconfig的作用原理。
#!/bin/sh -e # 声明脚本使用的是bash语法# Script to create header files and links to configure# U-Boot for a specific board.## Parameters: Target Architecture CPU Board [VENDOR] [SOC]# 用法:对应于makefile中的命令,其中从arm开始是脚本参数# (C) 2002-2006 DENX Software Engineering, Wolfgang Denk <wd@denx.de>#APPEND=no # 默认创建新的config文件BOARD_NAME="" # Name to print in make output 单板的名字while [ $# -gt 0 ] ; do # 如果参数的个数大于0 case "$1" in # 对于第一个参数判断 --) shift ; break ;; # 若是--,移除第一个参数并退出循环 -a) shift ; APPEND=yes ;; # 若是-a,移除第一个参数且变量APPEND赋值为yes -n) shift ; BOARD_NAME="${1%%_config}" ; shift ;; # 若是-n,移除第一个参数,并将第二个参数的_config去掉后赋值给变量BOARD_NAME,再将第二个参数移除 *) break ;; # 若非上述情况,退出循环 esac # case结束done # while结束[ "${BOARD_NAME}" ] || BOARD_NAME="$1" # 若变量BOARD_NAME为空字符串,则赋值为第一个参数[ $# -lt 4 ] && exit 1 # 若参数个数少于4个,退出[ $# -gt 6 ] && exit 1 # 若参数个数多于6个,退出echo "Configuring for ${BOARD_NAME} board..." # 打印信息## Create link to architecture specific headers# 创建连接文件,连接相应架构的具体头文件,名为asmif [ "$SRCTREE" != "$OBJTREE" ] ; then # 若源代码顶层目录和输出目录不同 mkdir -p ${OBJTREE}/include # 则在输出目录中创建目录include mkdir -p ${OBJTREE}/include2 # 同时创建目录include2 cd ${OBJTREE}/include2 # 进入include2目录 rm -f asm # 移除asm文件 ln -s ${SRCTREE}/include/asm-$2 asm # 创建与源代码目录中asm-arm的连接,名字是asm LNPREFIX="../../include2/asm/" # 变量LNPREFIX赋值为连接asm的路径 cd ../include # 进去include目录 rm -rf asm-$2 # 移除asm-arm目录 rm -f asm # 移除asm mkdir asm-$2 # 创建asm-arm目录 ln -s asm-$2 asm # 创建与asm-arm的连接,名为asmelse # 若源代码顶层目录和输出目录相同 cd ./include # 进入include目录 rm -f asm # 移除asm ln -s asm-$2 asm # 创建与asm-arm的连接,名为asmfirm -f asm-$2/arch # 移除asm-arm/arch文件if [ -z "$6" -o "$6" = "NULL" ] ; then # 若第六个参数为空或为NULL ln -s ${LNPREFIX}arch-$3 asm-$2/arch # 创建asm/arch-arm920t的链接文件,名字为asm-arm/archelse ln -s ${LNPREFIX}arch-$6 asm-$2/arch # 创建asm/arch-s3c24x0的连接文件,名字为asm-arm/archfiif [ "$2" = "arm" ] ; then # 若第二个参数为arm rm -f asm-$2/proc # 移除asm-arm/proc ln -s ${LNPREFIX}proc-armv asm-$2/proc # 创建asm/proc-armv的连接文件,名为asm-arm/procfi## Create include file for Make# 创建make包含的文件echo "ARCH = $2" > config.mk # 创建config.mk文件,输入ARCH = armecho "CPU = $3" >> config.mk # 继续输入cpu = arm920techo "BOARD = $4" >> config.mk # 继续输入BOARD = smdk2400[ "$5" ] && [ "$5" != "NULL" ] && echo "VENDOR = $5" >> config.mk # 若第五个参数非空且非NULL,则继续输入VENDOR = ***[ "$6" ] && [ "$6" != "NULL" ] && echo "SOC = $6" >> config.mk # 若第六个参数非空且非NULL,则继续输入SOC = s3c24x0## Create board specific header file# 创建单板的特殊头文件if [ "$APPEND" = "yes" ] # 若APPEND为yesthen echo >> config.h # 则在config.h中另起一行追加内容else > config.h # 创建新的config.h文件fiecho "/* Automatically generated - do not edit */" >>config.hecho "#include <configs/$1.h>" >>config.h # 输入#include<configs/smdk2400.h>exit 0
0 0
- U-BOOT中mkconfig详解
- U-BOOT 中MKCONFIG源代码详解
- u-boot mkconfig文件分析
- u-boot mkconfig文件解析
- u-boot mkconfig文件分析
- u-boot mkconfig文件分析
- u-boot mkconfig文件分析
- u-boot配置文件mkconfig分析
- u-boot之mkconfig分析
- u-boot mkconfig 文件分析
- U-Boot顶层目录MKconfig解析
- U-BOOT mkconfig文件详细解析
- u-boot 1.1.6 mkconfig源码注释
- U-BOOT 2011.09 mkconfig文件分析
- u-boot下mkconfig脚本文件分析
- u-boot的编译及配置 mkconfig
- u-boot——mkconfig文件分析
- u-boot的makefile和mkconfig解读
- hdu 3714 Error Curves
- 时隔多年重回csdn
- SpringMVC详细示例
- hdu 4442 Physical Examination
- validate的扩展方法
- U-BOOT中mkconfig详解
- ASP.NET DropDownList控件回传值无刷新操作。
- Drools入门-----------环境搭建,分析Helloworld Drools5.0的xls文件转drl文件提升解析效率 使用BRMS的Tomcat6.0配置
- cocos2d-x 3.6 程序流程
- Android开发:shape和selector和layer-list的(详细说明)
- freeswitch与E1设备对接方法
- 新工作要做的事宜
- OC--内存管理之自动释放,[NSMutableArray array]生成的自动释放数组被自动释放后引起的严重后果
- OpenStack Keystone配置产生错误Access denied for user 'keystone'@'10.0.2.15' (using password: YES)") None N