u-boot学习小结(一)

来源:互联网 发布:vnr网上的数据库 编辑:程序博客网 时间:2024/05/16 08:27

这个总结的内容包括:uboot配置阶段的过程解读。

设计的知识:make工具的使用;makefile语法;shell编程;

 

U-boot的作用是引导操作系统,可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。它的最终目的是为了启动内核。

U-boot可以引导多种操作系统,支持多种架构的cpu。所以在编译uboot之前我们需要配置一下,源码树中需要的源码,适合我们自己使用的开发板的源码。U-boot的源码树和linux内核有点相似,主要包含开发板相关、架构相关、通用函数、通用驱动。

在编译uboot之前的配置命令是:make <boardname>_config

其目的是为了传入六个参数

Target  Architecture CPU  Board [VENDOR] [SOC]

Make [target] 是在makefile中找到target 找到后执行下面的命令。查看顶层makefile中:

smdk2400_config       :      unconfig

       @$(MKCONFIG) $(@:_config=) arm arm920tsmdk2400 samsung s3c24x0

 

相当于执行mkconfig sml2440 arm arm920t sml2440 NULLs3c24x0

mkconfig 的用法在mkconfig中有说明:Parameters: Target  Architecture  CPU Board [VENDOR] [SOC]

# makesml2440_config是配置;make all 是编译;

make工具的使用参见博文http://blog.csdn.net/seek_0380/article/details/8520657。

 

相当于我们向里面传入了六个参数,指定了开发板名称,处理器的体系架构,生产商,soc,cpu。

然后mkconfig这个工具挑选了符合要求的代码。

 

具体mkconfig做了什么如下:

要建立关于arm arm920t sml2440 s3c24x0的uboot我们关心的文件有

首先是头文件:

include/asm-arm/arch-s3c24x0

include/asm-arm/proc-armv

在配置阶段make sml2440_config 执行了makefile文件的创建的sml2440_config这个【target】

相当于执行了:./mkconfig sml2440 arm arm920t sml2440 NULLs3c24x0

1、这个命令的执行相当于重新建立了头文件的链接:

       ln -s asm-arm asm

       ln -s arch-s3c24x0 asm-arm/arch

       ln -s proc-armv asm-arm/proc

重新链接头文件其本质就是ln –s old new ;new 代替old ,这样在源码文件中就可以直接使用new作为文件路径。

2、创建了顶层makefile所需要的include/config.mk

 

3、创建开发板相关的头文件include/config.h

 

在第三点中,其内容已经在mkconfig中有了定义:

#defineCONFIG_BOARDDIR board/$BOARDDIR

#include<config_defaults.h>

#include<configs/$1.h>//$1是sml2440

#include<asm/config.h>

所以如果#define CONFIG_BOARDDIR board/$BOARDDIR 成功,则必须在configs/下创建一个sml2440.h文件

我们直接使用smdk2410的文件即可

 

在终端执行配置信息之后会生成两个文件在include下面:config.h 和 config.mk。

原创粉丝点击