Chinaunix首页 | 论坛 | 博客
  • 博客访问: 308246
  • 博文数量: 146
  • 博客积分: 198
  • 博客等级: 入伍新兵
  • 技术积分: 689
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-24 08:35
文章分类

全部博文(146)

文章存档

2013年(46)

2012年(98)

2011年(1)

2010年(1)

我的朋友

分类:

2012-09-02 12:39:20

原文地址:bootloader的概念 作者:leon_yu

1.嵌入式系统软件结构与分布

一般情况下嵌入式Linux系统中的软件分为

引导加载程序:包括内部ROM中固化的启动代码和bootloader

Linux kerneldrivers

文件系统:包括根文件系统和建立于Flash内存设备之上的文件系统(EXT4.UBI.CRAMFS

应用程序:

2.linux内核启动条件

Linux内核启动除了内核映像必须在主存的适当位置,CPU还必须具备一定条件:

.CPU寄存器的设置:R0=0;

R1=Machine ID(即Machine Type Number,定义在

linux/arch/arm/tools/mach-types);

R2=内核启动参数在 RAM 中起始基地址;

.CPU模式

必须禁止中断(IRQs 和FIQs);

CPU 必须 SVC 模式;

.cacheMMU设置

MMU 必须关闭;

指令 Cache 可以打开也可以关闭;

数据 Cache 必须关闭;

但是在 CPU 刚上电启动的时候,一般连内存控制器都没有初始化过,主存中根本无法运行程序,更不可能处在 Linux 内核启动环境中。为了初始化 CPU 及其他外设,使得 Linux内核可以在系统主存中运行,并让系统符合 Linux 内核启动的必备条件,必须要有一个先于内核运行的程序,他就是所谓的引导加载程序(Boot Loader)。

3.Boot loader的概念

简单的说,BootLoader就是在OS内核运行之前运行的一段小程序,通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。

系统加电或复位后,所有的 CPU 通常都从某个由 CPU 制造商预先安排的地址上取指令。比如,基于 ARM7TDMI core 的 CPU 在复位时通常都从地址 0x00000000 取它的第一条指令。而基于 CPU 构建的嵌入式系统通常都有某种类型的固态存储设备(比如:ROM、EEPROM 或 FLASH 等)被映射到这个预先安排的地址上。因此在系统加电后,CPU 将首先执行 Boot Loader 程序。

Boot loader详细介绍参考:

嵌入式系统 Boot Loader 技术内幕

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