欢迎来到天天文库
浏览记录
ID:36284817
大小:356.00 KB
页数:25页
时间:2019-05-08
《bootloader启动过程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、7.1BootLoader概述简单地说,BootLoader就是在操作系统内核或用户应用程序之前运行的一段小程序。通过这段小程序可以初始化硬件设备,建立内存空间的映射图,将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确环境。通常,BootLoader是依赖于硬件而实现的,因此,为嵌入式系统建立一个通用的BootLoader是很困难的。但是可以归纳出一些通用的概念,以便于了解特定BootLoader的设计与实现。BootLoader的主要任务如图7.1所示。图7.1BootLoader的主要任务7.2B
2、ootLoader与嵌入式系统的关系每种不同的处理器体系结构都有不同的BootLoader。有些BootLoader也支持多种体系结构的处理器。除了依赖处理器的体系结构外,BootLoader实际上也依赖于具体的嵌入式板级设备的配置。即使是基于同一种处理器构建的两块不同的嵌入式板级设备,它们的BootLoader也是不同的。BootLoader源程序是很关键的代码,因为它是一些把特定的数字写入指定硬件寄存器的指令序列。系统加电复位后,所有的处理器通常都从某个处理器制造商预先安排的地址上取指令。如基于S3C44B0x的处理器在复位时通常都从地
3、址0x00000000取它的第一条指令。而基于处理器构建的嵌入式系统通常都有某种类型的固态存储设备(如ROM、EEPPOM或FLASH等)被映射到这个预先安排的地址上。因此在系统加电后,处理器将首先执行BootLoader程序。装有BootLoader内核的启动参数,内核映像和根文件系统映像的固态存储设备的典型空间分配结构如图7.2所示。图7.2存储设备典型空间分配结构7.2.1Bootloader的操作模式大多数Bootloader都包含启动加载模式及下载模式两种不同的操作模式,但这种区别仅对于开发人员才有意义。从最终用户的角度开,Boo
4、tLoader的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。1.启动加载模式(BootLoading)启动加载模式也称为自主(Autonomous)模式,即BootLoader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。这种模式是BootLoader的正常工作模式。2.下载(DownLoading)模式当采用下载模式时,目标机上的BootLoader将通过串口连接或网络连接等通信手段从主机下载文件,如应用程序、数据文件、内核映像等。从主机下载的文件通常首先被BootL
5、oader保存到目标机的RAM中,然后再被BootLoader写到目标机上的固态存储设备中。下载模式要求在BootLoader中完成对串口或以太网口的初始化,定义相关的命令,向其终端提供相应简单的命令接口。BootLoader的这种模式通常在系统更新时使用。7.2.2BootLoader的总体设计1.阶段设计BootLoader的启动可以是分阶段的,因此在设计时也可将BootLoader分为阶段1和阶段2。将BootLoader分为2个阶段的原因如下。(1)基于编程语言的考虑阶段1主要用汇编语言编写,这是因为它主要行进与CPU核心及存储设备
6、密切相关的处理工作,进行一些必要的初始化工作,是依赖于CPU体系结构的代码,为了增加效率以及因为涉及协处理器的设置,只能用汇编语言编写,这部分直接在FLASH中执行;阶段2可以用一般的C语言编写,用于实现一般的流程以及对板级的一些驱动支持,这部分会被复制到RAM中执行。(2)代码具有更好的可读性与移植性若对于相同的CPU以及存储设备,要增加外设支持,阶段1的代码可以维护不变,只对阶段2的代码进行修改;若要支持不同的CPU,则基础代码只需在阶段1中修改。2.地址规划设计当BootLoader阶段设计好之后,需要考虑的是镜像存储的地址分配:如总
7、镜像保存在什么地方,阶段2对应的镜像会被复制到什么地方,内核镜像原先存放在什么地方,BootLoader会把它又重新加载到什么地方;如何进行准确的地址规划以保证没有相互冲突等。3.模式设计对于普通用户来说只需要BootLoader的启动加载模式,但是对于开发者来说,则需要下载模式,因为他们需要时时刻刻地进行一些镜像的更新。为了在两者之间做到兼顾,这里介绍一个既支持启动加载模式又支持下载模式的具体思路:在BootLoader做完一些硬件初始化的工作之后,而在加载内核镜像之前,先在一定的时间内等待有没有用户有键盘输入。如果没有,则为启动加载模式
8、,直接加载内核镜像进行启动;如果有,则进入命令行格式,这时开发者就可以根据自己的需要以及BootLoader的支持情况,做一些其他的工作。模式的转换设计主要在阶段2中实现。7.3
此文档下载收益归作者所有