bootloader技术内幕

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

bootloader:嵌入式BootLoader技术内幕疯狂代码 / ĵ:

http://NetworkProgramming/Article33523.html

、引言 ;

在专用嵌入式板子运行 ;GNU/Linux ;系统已经变得越来越流行个嵌入式 ;Linux ;系统

从软件角度看通常可以分为四个层次: ;

1. ;引导加载包括固化在固件(firmware)中 ;boot ;代码(可选)和 ;Boot ;Loader ;

两大部分 ;

2. ;Linux ;内核特定于嵌入式板子定制内核以及内核启动参数 ;

3. ;文件系统包括根文件系统和建立于 ;Flash ;内存设备之上文件系统通常用 ;ram ;dis

k ;来作为 ;root ;fs ;

4. ;用户应用特定于用户应用有时在用户应用和内核层之间可能还会包

括个嵌入式图形用户界面常用嵌入式 ;GUI ;有:MicroWindows ;和 ;MiniGUI ;懂 ;

引导加载是系统加电后运行第段软件代码回忆下 ;PC ;体系结构我们可以知

道PC ;机中引导加载由 ;BIOS(其本质就是段固件)和位于硬盘 ;MBR ;中 ;OS

Boot ;Loader(比如LILO ;和 ;GRUB ;等)起组成BIOS ;在完成硬件检测和资源分配后

将硬盘 ;MBR ;中 ;Boot ;Loader ;读到系统 ;RAM ;中然后将控制权交给 ;OS ;Boot ;Load

erBoot ;Loader ;主要运行任务就是将内核映象从硬盘上读到 ;RAM ;中然后跳转到内核

入口点去运行也即开始启动操作系统 ;

而在嵌入式系统中通常并没有像 ;BIOS ;那样固件(注有嵌入式 ;CPU ;也会内嵌

段短小启动)因此整个系统加载启动任务就完全由 ;Boot ;Loader ;来完成比

如在个基于 ;ARM7TDMI ;core ;嵌入式系统中系统在上电或复位时通常都从地址 ;0x00

000000 ;处开始执行而在这个地址处安排通常就是系统 ;Boot ;Loader ; ;

本文将从 ;Boot ;Loader ;概念、Boot ;Loader ;主要任务、Boot ;Loader ;框架结构以及

Boot ;Loader ;安装等四个方面来讨论嵌入式系统 ;Boot ;Loader ;

二、 ;Boot ;Loader ;概念 ;

简单地说Boot ;Loader ;就是在操作系统内核运行之前运行段小通过这段小程

序我们可以化硬件设备、建立内存空间映射图从而将系统软硬件环境带到

个合适状态以便为最终操作系统内核准备好正确环境 ;

通常Boot ;Loader ;是严重地依赖于硬件而实现特别是在嵌入式世界因此在嵌入

式世界里建立个通用 ;Boot ;Loader ;几乎是不可能尽管如此我们仍然可以对 ;Bo

ot ;Loader ;归纳出些通用概念来以指导用户特定 ;Boot ;Loader ;设计与实现 ;

1. ;Boot ;Loader ;所支持 ;CPU ;和嵌入式板 ;

每种不同 ;CPU ;体系结构都有不同 ;Boot ;Loader有些 ;Boot ;Loader ;也支持多种体系 结构 ;CPU比如 ;U-Boot ;就同时支持 ;ARM ;体系结构和MIPS ;体系结构除了依赖于 ;CPU 体系结构外Boot ;Loader ;实际上也依赖于具体嵌入式板级设备配置这也就是说

对于两块不同嵌入式板而言即使它们是基于同种 ;CPU ;而构建要想让运行在

块板子上 ;Boot ;Loader ;也能运行在另块板子上通常也都需要修改 ;Boot ;Loade

r ;源 ;

2. ;Boot ;Loader ;安装媒介(Installation ;Medium) ;

系统加电或复位后所有 ;CPU ;通常都从某个由 ;CPU ;制造商预先安排地址上取指令

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

下图1就是个同时装有 ;Boot ;Loader、内核启动参数、内核映像和根文件系统映像固

态存储设备典型空间分配结构图 ;

" align=absMiddle>/RTOS/UploadFiles_RTOS/200511/20051130030711799.g ;

图1 ;固态存储设备典型空间分配结构

3. ;用来控制 ;Boot ;Loader ;设备或机制 ;

主机和目标机之间般通过串口建立连接Boot ;Loader ;软件在执行时通常会通过串口来

进行 ;I/O比如:输出打印信息到串口从串口读取用户控制等 ;

4. ;Boot ;Loader ;启动过程是单阶段(Single ;Stage)还是多阶段(Multi-Stage) ;

通常多阶段 ;Boot ;Loader ;能提供更为复杂功能以及更好可移植性从固态存储设

备上启动 ;Boot ;Loader ;大多都是 ;2 ;阶段启动过程也即启动过程可以分为 ;stage ;1

和 ;stage ;2 ;两部分而至于在 ;stage ;1 ;和 ;stage ;2 ;具体完成哪些任务将在下面几篇讨

论 ;

5. ;Boot ;Loader ;操作模式 ;(Operation ;Mode) ;

大多数 ;Boot ;Loader ;都包含两种不同操作模式:"启动加载"模式和"下载"模式这种区

别仅对于开发人员才有意义但从最终用户角度看Boot ;Loader ;作用就是用来加载

操作系统而并不存在所谓启动加载模式与下载工作模式区别 ;

启动加载(Boot ;loading)模式:这种模式也称为"自主"(Autonomous)模式也即 ;Boo t ;Loader ;从目标机上某个固态存储设备上将操作系统加载到 ;RAM ;中运行整个过程并

没有用户介入这种模式是 ;Boot ;Loader ;正常工作模式因此在嵌入式产品发布时

侯Boot ;Loader ;显然必须工作在这种模式下 ;

下载(Downloading)模式:在这种模式下目标机上 ;Boot ;Loader ;将通过串口连接或

网络连接等通信手段从主机(Host)下载文件比如:下载内核映像和根文件系统映像等

从主机下载文件通常首先被 ;Boot ;Loader ;保存到目标机 ;RAM ;中然后再被 ;Boot ; Loader ;写到目标机上FLASH ;类固态存储设备中Boot ;Loader ;这种模式通常在第次

安装内核与根文件系统时被使用;此外以后系统更新也会使用 ;Boot ;Loader ;这种工

作模式工作于这种模式下 ;Boot ;Loader ;通常都会向它终端用户提供个简单命令

行接口 ;

像 ;Blob ;或 ;U-Boot ;等这样功能强大 ;Boot ;Loader ;通常同时支持这两种工作模式而且 允许用户在这两种工作模式之间进行切换比如Blob ;在启动时处于正常启动加载模式

但是它会延时 ;10 ;秒等待终端用户按下任意键而将 ;blob ;切换到下载模式如果在 ;10 ;

秒内没有用户按键则 ;blob ;继续启动 ;Linux ;内核 ;

相关文档
最新文档