Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6896
  • 博文数量: 3
  • 博客积分: 125
  • 博客等级: 入伍新兵
  • 技术积分: 35
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-25 11:00
文章分类
文章存档

2012年(3)

我的朋友
最近访客

分类: LINUX

2012-06-05 22:10:38

二、Bootloader分析与移植
1、U-boot源码结构
U-boot根目录下共有26个子目录,分为4类:
    ①平台相关的或开发板相关的;
    ②通用的函数;
    ③通用的设备驱动程序;
    ④U-boot工具、示例程序、文档。
2、U-boot体
    根据顶层Readme文件说明,若使用开发板board/,先执行make _config命令进行配置,然后执行make all生产如下3个文件:①U-boot.bin;②U-boot;③U-boot.srec。
3、U-boot的配置过程 
    以smdk_2410为例,分析Makefile大致流程及结构。
    一般地,编译U-boot通过以下两条命令实现:
    # make smdk2410_config
    # make all
    执行第一条命令后,在include目录下生产两个文件:config.mk和config.h。这两个文件是如何生产的?在顶层Makefile文件中有如下代码:
        SRCTREE := $(CURDIR)
        ..........
        MKCONFIG := $(SRCTREE)/mkconfig
        ..........
        smdk2410_config : unconfig
        @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
    若在U-boot根目录下编译,则以上的MKCONFIG就是根目录下的mkconfig。$(@_config=)的结果就是将_config去掉,结果为smdk2410,所以make smdk2410_config实际上就是执行如下命令:
        ./mkconfig  smdk2410 arm arm920t smdk2410 NULL s3c24x0
    红色的字都是作为参数传递给mkconfig这个shell脚本,下面分析mkconfig脚本的作用。
    ①确定开发板名称BOARD_NAME,相关代码如下:
    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"
    因命令./mkconfig  smdk2410 arm arm920t smdk2410 NULL s3c24x0中午--、-a、-n等符号,所以执行完以上代码后,APPEND维持原值,BOARD_NAME等于第一个参数,即“smdk2410”。
    ②创建平台/或开发板相关头文件的链接: 
    # ln  -s   asm-arm         asm
    # ln  -s   arch-s3c24x0    asm-arm/arch
    # ln  -s   proc-armv       asm-arm/proc
    ③创建顶层Makefile包含的文件include/config.mk,内容简单,定义了四个变量:
    ARCH   = arm
    CPU    = arm920t
    BOARD  = smdk2410
    SOC    = s3c24x0
    ④创建开发板相关的头文件include/config.h,内容如下:

   /* Automatically generated - do not edit */
   #include "config/smdk2410.h"

   

阅读(900) | 评论(0) | 转发(1) |
0

上一篇:Bootloader移植1

下一篇:没有了

给主人留下些什么吧!~~