Chinaunix首页 | 论坛 | 博客
  • 博客访问: 240993
  • 博文数量: 84
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 451
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-05 13:45
个人简介

IT!

文章分类
文章存档

2013年(84)

我的朋友

分类: LINUX

2013-12-22 20:22:59

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

1. 引导加载程序

包括固化在固件(firmware)中的boot 程序(可选),和BootLoader 两大部分。

2. Linux 内核

特定于嵌入式平台的定制内核。

3. 文件系统

包括了系统命令和应用程序

BootLoader就是在操作系统运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统做好准备。

在嵌入式系统中,通常没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由BootLoader来完成。比如在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时都从地址0x00000000开始执行。而在这个地址处安排的通常就是系统的BootLoader程序。

每种不同的CPU体系结构都有不同的BootLoader。除了依赖于CPU的体系结构外,BootLoader 还依赖于具体的嵌入式板级设备的配置,比如板卡的硬件地址分配,外设芯片的类型等。这也就是说,对于两块不同的开发板而言,即使它们是基于同一种CPU而构建的,但如果他们的硬件资源或配置不一致的话,要想在一块开发板上运行的BootLoader程序也能在另一块板子上运行,还是需要作修改,需要进行bootloader移植

BootLoader 的启动过程

BootLoader 大多采用两阶段,即启动过程可以分为stage 1stage2stage1完成初始化硬件,为stage2准备内存空间,并将stage2复制到内存中,设置堆栈,然后跳转到stage2

Stage1通常包括以下步骤:

1. 硬件设备初始化

2. 为加载BootLoaderstage2凖备RAM空间

3. 拷贝BootLoaderstage2RAM空间中

4. 设置好堆栈

5. 跳转到stage2C入口点

Stage2通常包括以下步骤:

1.初始化本阶段要使用到的硬件设备

2.将内核映像和根文件系统映像从flash     上读到RAM

3. 调用内核

Uboot 介绍

Uboot是德国DENX小组开发的用于多种嵌入式CPU MIPSx86ARMXScale等)的bootloader程序,UBoot不仅支持嵌入式Linux系统的引导,还支持VxWorks, QNX等多种嵌入式操作系统。从下面地址可以下载到uboot的源代码:

 

Uboot 编译

UbootMakefile从功能上可以分成两个部分:

1、执行每种board相关的配置

2、编译生成uboot.bin文件

Uboot.bin的生成也分为两步,以smdk2410为例来说明,如下:

1. 对于board进行配置:

$make smdk2410_config

2. 进行编译生成u-boot.bin

$make CROSS_COMPILE=arm-linux

工作模式

大多数BootLoader都包含两种不同的操作模式:“启动模式 和“下载模式”,这种区别仅对于开发人员才有意义,但从最终用户的角度看,BootLoader的作用就是用来加载操作系统,而不存在所谓的启动模式与下载模式。

启动模式

这种模式也称为“自主” 模式,是指BootLoader 从目标机上的某个固态存储设备上将操作系统自动加载到RAM 中运行,整个过程并没有用户的介入。这种模式是BootLoader 的正常工作模式

下载模式

在这种模式下,目标机上的BootLoader 将通过串口或网络等通信手段从主机(Host)下载文件,然后控制启动流程。

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