bootloader的概念

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 技术内幕

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(693) | 评论(0) | 转发(2) |
0

上一篇:ldd3学习之七:中断处理

下一篇:U-boot简介

给主人留下些什么吧!~~
评论热议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值