Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3515607
  • 博文数量: 1805
  • 博客积分: 135
  • 博客等级: 入伍新兵
  • 技术积分: 3345
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-19 20:01
文章分类

全部博文(1805)

文章存档

2017年(19)

2016年(80)

2015年(341)

2014年(438)

2013年(349)

2012年(332)

2011年(248)

分类: 嵌入式

2014-08-26 23:31:21

原文地址:Uboot 工作 作者:xue_hu

一个嵌入式系统从软件角度来看分为四个层次:

1、引导加载程序:包括固化在固件(firmware)中的boot代码(可选),和Boot Loader两打部分。

2、Linux内核:特定于嵌入式板子的指定内核以及内核的启动参数。

3、文件系统:包括根文件系统和建立于Flash内存设备之上的文件系统。通常用RAM DISK来作为root fs。

4、用户应用程序:特定于用户的应用程序。

  Uboot是德国DENX小组开发用于多种嵌入式CPU的bootloader程序,Uboot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS嵌入式操作系统。Uboot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM、NIOS、XScale等诸多通用的处理器。

Uboot代码目录构架

board:和一已有开发板有关的文件。每一个开发板都以一个子目录出现在当前目录中,比如:SMDK2410,子目录中存放与开发板相关的配置文件。

common:实现Uboot命令行下支持的命令,每一条命令都对应一个文件。例如bootm命令对应就是cmd_bootm.c。

cpu:与特定PCU架构相关目录,每一款Uboot下支持的CPU在该目录下对应一个子目录,比如有子目录arm920t等。

disk:对磁盘的支持。

doc:文档目录。Uboot有非常完善的文档,推荐大家参考阅读。

drivers:Uboot支持的设备驱动程序都放在该目录,比如各种网卡、支持CFI的Flash、串口和USB等。

fs:支持的文件系统,Uboot现在支持cramfs、fat、fdos、jffs2和registerfs。

include:Uboot使用的头文件,还有对各种硬件平台支持的汇编文件,系统的配置文件和对文件系统的支持的文件。该目录下configs目录有与开发板相关的配置头文件,如smdk2410.h。该目录下的asm目录有与CPU体系结构相关的头文件,asm对应的是asmarm9

.lib-xxxx:与体系结构相关的库文件。如与ARM相关的库放在.lib_arm中。

net:与网络协议栈相关的代码,BOOTP协议、TFTP洗衣、RARP协议和NFS文件系统的实现。

tools:生成Uboot的工具,如mkimage,crc等等。

Boot Loader的stage1通常包括以下步骤(以执行的先后顺序):

(1)、硬件设备的初始化;

(2)、为加载Boot Loader的stage2准备RAM空间;

(3)、拷贝Boot Loader的stage2到RAM空间中;

(4)、设置好堆栈;

(5)、跳转到stage2的C入口点。

        Boot Loader的stage2通常包括以下步骤(一执行的先后顺序):

(1)、初始化本阶段要使用到的硬件设备;

(2)、检测系统内存映射(memory map)

(3)、将kernel映像和根文件系统映像从flash上读到RAM空间中;

(4)、为内核设置启动参数;

(5)、调用内核。

Uoot的移植

        为当前移植的板取名为teach2410,在Uboot中简历自己的开发板类型。

        1、修改Makefile

        在Uboot目录下:

# vi Makefile

为teach2410建立编译项(将smdk2410改为teach2410)如:

teach2410_config : unconfig

     @./mkconfig $(@:_config=) arm arm920t teach2410 NULL s3c24x0

各项的意思如下:

arm:CPU的架构(ARCH)

arm920t:CPU的类型(CPU),其对应于cpu/arm920t子目录

teach2410:开发板的型号(BOARD),对应于teach2410目录

NULL:开发者或经销商(vender)

s3c24x0:片上系统(SOC)

        2、在board子目录中建立teach2410

# cp rf board/smdk2410 board/teach2410

# cd board/teach2410

# mv smdk2410.c teach2410.c

        3、在include/config/中简历配置头文件

#cp include/configs/smdk2410.h include/configs/teach2410.h

        4、编译

# make teach2410_config

# make CROSS_COMPILE=arm-linux-

        5、Uboot移植过程中的调试

        使用Uboot命令查看信息、串口打印等。

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