• 2009-02-11

    u-boot编译过程一 - [uboot]

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://redboot.blogbus.com/logs/34986179.html

    现在介绍一下u-boot的编译过程,这里用的uboot版本是U-Boot 2008.10,硬件用smdk2410,这个板子用得比较普遍,uboot已经有对其的支持。通过我们对编译过程和代码的了解,我们也容易用uboot支持我们自己需要的硬件。

    编译命令非常简单:
        make smdk2410_config (生成配置)
        make all  (生成最终文件)
    当然,更好的做法是把编译出的文件生成到另外一个目录,并make clean如:
        export BUILD_DIR=../tmp
        make distclean
        make smdk2410_config
        make all

    现在,我们可以来看看Makefile,u-boot的Makefile文件非常大。但是,其结构却并不复杂。
    u-boot已经支持了很多硬件,前半部分是共用部分,编译出最终的uboot可执行文件。
    而后半部分,是为各种不同的硬件进行配置,每种硬件有一个目标,每个的做法都非常类似,我们用到的是:
    smdk2410_config    :    unconfig
        @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0

    这里的 MKCONFIG    := $(SRCTREE)/mkconfig
    实际上是调用脚本mkconfig,而这个脚本做的工作简单如下:

    建立config.mk文件
        echo "ARCH   = $2" >  config.mk
        echo "CPU    = $3" >> config.mk
        echo "BOARD  = $4" >> config.mk
        echo "VENDOR = $5" >> config.mk
        echo "SOC    = $6" >> config.mk
    建立config.h
        echo "#include <configs/$1.h>" >>config.h
       
    在这里$1-$6的值分别是:smdk2410 arm arm920t smdk2410 NULL s3c24x0

    而执行了 make smdk2410_config 之后,就生成了相应的config.mk,config.h两个文件。
    在config.mk文件中,定义了相应硬件信息 : ARCH CPU BOARD VENDOR SOC
    在config.h文件中,包含了相应硬件的头文件smdk2410.h ,位于include\configs目录下。
    如果新建自己的硬件项目,那么也需要建立相应的头文件在这个地方。
    这样,uboot的配置已经生成,下一次介绍make all的过程。


    历史上的今天:


    收藏到:Del.icio.us