Chinaunix首页 | 论坛 | 博客
  • 博客访问: 519975
  • 博文数量: 56
  • 博客积分: 1136
  • 博客等级: 少尉
  • 技术积分: 1378
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-28 14:02
文章存档

2014年(1)

2013年(7)

2012年(45)

2011年(3)

分类: 嵌入式

2012-05-16 10:47:40

U-boot的配置、编译及连接

 

执行make hkdkc110_mmc_config命令,会寻找当前目录下的Makefile中的hkdkc110_mmc_config目标,我们来看一下这个目标

hkdkc110_mmc_config :   unconfig

    @$(MKCONFIG) $(@:_config=) arm s5pc11x hkdkc110 samsung s5pc110

    @echo "TEXT_BASE = 0xc3e00000" > $(obj)board/samsung/hkdkc110/config.mk

其中unconfig目标定义如下:它有来清除配制文件,其中“@”的作用是执行该命令时不在shell显示

unconfig:

    @rm -f $(obj)include/config.h $(obj)include/config.mk \

        $(obj)board/*/config.tmp $(obj)board/*/*/config.tmp \

        $(obj)include/autoconf.mk $(obj)include/autoconf.mk.dep \

        $(obj)board/$(VENDOR)/$(BOARD)/config.mk

MKCONFIG   := $(SRCTREE)/mkconfig

export MKCONFIG

因此@$(MKCONFIG)表示$(SRCTREE)目示下mkconfig脚本

$(@:_config=)为将传进来的参数中的_config替换为空(其中“@”指变量名,在这里就是hkdkc110_mmc_config$(text:patternA=patternB),这样的语法表示把text变量每一个元素中结尾的patternA的文本替换为patternB,然后输出) 。因此$(@:_config=)的作用就是将hkdkc110_mmc_config中的_config去掉,变成hkdkc110_mmc

执行make hkdkc110_mmc_config的实际作用就是执行

./mkconfig  hkdkc110_mmc arm s5pc11x hkdkc110 samsung s5pc110

./mkconfig $1 $2 $3 $4 $5 $6命令,其中$0=hkdkc110_mmc_config

我们再来看一下mkconfig脚本

APPEND=no  # Default: Create new config file

BOARD_NAME="" # Name to print in make output

 

while [ $# -gt 0 ] ; do

    case "$1" in

    --) shift ; break ;;

    -a) shift ; APPEND=yes ;;

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

    *)  break ;;

    esac

done

#这段代码不起任何作用

 

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

#将第一个参数传递给 BOARD_NAME

 

 

 

1:) BOARD_NAME="$1"

2:) ln -s asm-$2 asm

    ln -s arch-$6 asm-$2/arch

    ln -s proc-armv asm-$2/proc #如果$2不是ARM的话,此行没有

3:) 创建顶层Makefile包含的文件include/config.mk

    ARCH   = arm   $2

    CPU    = s5pc11x   $3

    BOARD  = hkdkc110 $4

    VENDOR = samsung  $5

    SOC    = s5pc110      $6

4:) 创建开发板相关的头文件include/config.h

    /* Automatically generated - do not edit */

    #include //#include

 

从这个四个结果可知,如果要在board目录下新建一个开发板目录,则要在include/configs目录下新建一个.h的文件,里面存放的是开发板的配制信息。u-boot还没有类似linux一样的可视化的配制界面(比如使用make menuconfig来配制),需要手动修改配制文件include/configs/来裁减、设置u-boot

 

 

阅读(2453) | 评论(2) | 转发(5) |
给主人留下些什么吧!~~

十七岁的回忆2012-05-16 20:59:30

tekkaman ninja移植的u boot用哪种交叉编译连编译

夏冰软件2012-05-16 16:42:43

写的不错,支持一下