u-boot配置阶段分析

时间 :2016年4月3日08:19:35
地点 :宿舍。
功能 :分析u-boot的配置过程。(以开发板smdk2410为例)

一、编译u-boot的步骤:
1、在u-boot的顶层目录下,执行"make smdk2410_config"
2、在u-boot的顶层目录下,执行"make all"或"make"

二、编译步骤的分析:

分析"make smdk2410_config"

1、执行"make smdk2410_config"时,其实是执行./mkconfig smdk2410 arm arm arm920t NULL s3c24x0

因为在Makefile里有一句:
smdk2400_config : unconfig
  @$(MKCONFIG) $(@:_config=) arm  arm920t   smdk2400  NULL        s3c24x0
  (mkconfig)        (目标)            (架构) (cpu)       (开发板)     (VENDOR)  (SoC)
     $0                    $1                $2      $3           $4             $5             $6
在顶层目录下的mkconfig中找到了mkconfig后面所接的参数的含义:
Parameters(参数): Target Architecture CPU Board [VENDOR] [SOC]

2、因为实际上是执行了./mkconfig smdk2410 arm arm arm920t NULL s3c24x0,所以转而要分
析顶层目录下的mkconfig文件了。


分析mkconfig文件

1、确定一个参数BOARD_NAME=smdk2410。
2、cd ./include(进入include目录,一下都动作都是基于include/目录)。
3、rm -f asm; ln -s asm-arm asm(首先删除原来的asm文件,接着再新建asm连接文件,指向./asm-arm/目录,这样以后的#include <arm/xxx>,实际上就是#include <asm-arm/xxx>。 #include <>一般是指包含include下的目录或文件)。
4、rm -f asm-arm/arch; ln -s arch-s3c24x0 asm-arm/arch(首先删除./asm-arm/目录下的arch文件,接着新建./asm-arm/arch文件,让它指向./asm-arm/arch-s3c24x0/目录,这样以后的#include <arm/arch/xxx>,实际上就是#include <asm-arm/arch-s3c24x0/xxx>。arch文件和arch-s3c24x0都在include/asm-arm/目录下。)
5、rm -f asm-arm/proc; ln -s proc-armv asm-arm/proc(同理,建立一个proc连接文件指向proc-armv目录)
6、echo "ARCH = $2" > config.mk
    echo "CPU = $3" >> config.mk
  echo "BOARD = $4" >> config.mk
  echo "SOC = $6" >> config.mk
新建一个include/config.mk文件,里面的信息为:
ARCH = arm
CPU = arm920t
BOARD = 100ask24x0
SOC = s3c24x0
7、> config.h
    echo "/* Automatically generated - do not edit */" >>config.h
    echo "#include <configs/$1.h>" >>config.h
新建一个include/config.h文件,里面的内容为:
/* Automatically generated - do not edit */
#include <configs/100ask24x0.h>


至此,顶层mkconfig文件已经分析完毕,除了确定BOARD_NAME=smdk2410外,其余的动作都是在include/目录下发生的。

posted @ 2016-04-03 09:14  海~洋  阅读(314)  评论(0编辑  收藏  举报