4课、嵌入式系统的Boot Loader技术
- 格式:ppt
- 大小:950.50 KB
- 文档页数:42
Boot LoaderWindows CE最大程度继承了桌面版Windows的丰富功能,但是Windows CE并不是一个通用的安装版操作系统。
在形形色色的嵌入式设备世界里,一款CE系统通常只会针对某一种硬件平台生成。
一般来说,Windows CE的开发过程可以分为:0AL(OEM Abstraction Layer)、驱动、应用程序开发三个步骤。
其中,0AL开发最基本的一步是板级支持包(BSP),而BootLoader 设计则在BSP开发中具有极为关键的地位。
1.什么是BootLoader嵌入式系统的启动代码一般由两部分构成:引导代码和操作系统执行环境的初始化代码。
其中引导代码一般也由两部分构成:第一部分是板级、片级初始化代码,主要功能是通过设置寄存器初始化硬件的工作方式,如设置时钟、中断控制寄存器等,完成内存映射、初始化MMU等。
第二部分是装载程序,将操作系统和应用程序的映像从只读存储器装载或者拷贝到系统的RAM中并执行。
(1)什么是板级BSP?BSP(Board Support Package)是板级支持包,是介于主板硬件和操作系统之间的一层,主要是为了支持操作系统,使之能够更好的运行于硬件主板。
不同的操作系统对应于不同形式的BSP,例如WinCE的BSP和Linux的BSP相对于某CPU来说尽管实现的功能一样,可是写法和接口定义是完全不同的。
所以,BSP一定要按照该系统BSP的定义形式来写,这样才能与上层OS保持正确的接口,良好的支持上层OS。
(2)什么是Boot Loader在BSP中有一个重要的组成部分就是BootLoader,它是在操作系统内核运行之前运行的一段小程序。
通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,为调用操作系统内核准备好环境。
一般来说,在嵌入式世界里BootLoader 是严重地依赖于硬件的,因此想建立一个通用的 BootLoader 几乎是不可能的。
论文导读::嵌入式系统是以应用为中心、以计算机为基础、软硬件可裁剪。
即启动过程可分为阶段1和阶段2两个部分。
技术概述。
论文关键词:嵌入式系统,启动过程,BootLoader技术一 BootLoader技术概述嵌入式系统是以应用为中心、以计算机为基础、软硬件可裁剪,适用于系统对功能、可靠性、成本、功耗严格要求的专用计算机系统。
计算机系统都具有相应的引导程序,对于嵌入式系统在执行主程序之前要执行一些初始化的过程来完成对系统的初始化,并创造嵌入式程序运行的环境。
我们熟悉的PC中的引导程序一般BIOS和位于MBR的 OS bootloader (例如 LILO 或者 GRUB)一起组成。
在嵌入式系统中,出于经济方面的考虑一般不配置 BIOS,在嵌入式系统中,通常采用BootLoader技术来启动程序。
启动时用于完成初始化操作的代码被称为BootLoader 程序,整个系统的加载启动任务就由 BootLoader来完成。
通过这段程序,可以初始化硬件设备、建立内存空间的映射图启动过程,从而将系统的软硬件环境设定在一个合适的状态,以便为调用操作系统内核准备好正确的环境。
BootLoader依赖于硬件和应用环境,不同的CPU有不同的 Bootloader。
即使他们是基于同一种 CPU,要想让运行在一块目标板上的Bootloader程序也能运行在另一块板子上,通常也需要对BootLoader的源程序进行修改。
因此,对 Bootloader 进行分析,并找出其中的规律和原理,使得BootLoader 运行于各种不同的硬件平台。
二 BootLoader 技术的基本特征1 BootLoader 安装地址的固定性系统加电或复位后,CPU 通常都从由CPU 制造商预先安排好的地址上取指令, 如XScale 内核的CPU 通常都从地址0x00000000处取它的第一条指令。
基于这种CPU 构建的嵌入式系统通常都有某种类型的固态存储设备被映射到这个预先安排的地址上。
设计与应用计算机测量与控制.2009.17(2) Computer Measurement &Control ・389・中华测控网收稿日期:2008-07-03; 修回日期:2008-08-13。
基金项目:陕西省自然科学基金(2007F29);陕西省科技攻关项目(2007K04-01)。
作者简介:袁 磊(1983-),男,湖南衡阳人,硕士生,主要从事嵌入式系统方向的研究。
朱怡安(1960-),安徽人,教授,博导,主要从事嵌入式计算,移动计算方向的研究。
文章编号:1671-4598(2009)02-0389-03 中图分类号:TP36812 文献标识码:A嵌入式系统BootLoader 设计与实现袁 磊,朱怡安,兰 婧(西北工业大学计算机学院,陕西西安 710072)摘要:如何根据开发板的硬件资源,设计bootloader (引导加载程序)是嵌入式系统设计的重点与难点;通过分析系统的硬件组成,对bootloader 的功能,特点,结构及其主要任务进行了研究,对比分析了intel pxa250和intel pxa270的主要异同,以加载linux 操作系统内核为例,针对intel pxa270&linux 嵌入式系统开发平台,提出了一种利用uboot 实现bootloader 的软件设计与实现的新方法,从而成功引导加载操作系统内核;该设计具有一定的通用性,可广泛地应用到其他的处理器及其应用系统中;同时,详细阐述了uboot 的执行流程及其移植方法。
关键词:引导加载程序;PXA270;嵌入式系统;U -boot ;嵌入式linuxDesign and Implementation of BootLoader in embedded systemYuan Lei ,Zhu Y ian ,Lan Jing(College of Computer Science ,Northwestern Polytechnical University ,Xi πan 710072,China )Abstract :How to develop Bootloader on t he basis of specific hardware platform is a key point and difficulty of embedded system design.The paper do research on t he function ,character ,architecture and main tasks of bootloader t hrough analysing to t he organizition of system hardware.It compares t he main diferences and similarities between intel pxa250and intel pxa270.Taking loading linux operation system kernal as a example ,it introduces a new met hod on how to design and implement bootloader on t he basis of intel pxa270&linux embedded system platform.So as to sucessfully loading t he operation system kernel.The design has some flexibility and can be used to ot her proces 2sors and applications system easily.At t he same time ,it introduces how t he uboot is executed and how to transplant t he U -boot to PXA270in particular.K ey w ords :boot loader ;PXA270;embedded system ;U -boot ;embedded linux0 引言PXA270是Intel 公司生产的一款基于ARM9内核的32位RISC 芯片。
嵌入式系统Boot Loader 技术内幕(3)在boot loader 程序的设计与实现中,没有什么能够比从串口终端正确地收到打印信息能更令人激动了。
此外,向串口终端打印信息也是一个非常重要而又有效的调试手段。
但是,我们经常会碰到串口终端显示乱码或根本没有显示的问题。
造成这个问题主要有两种原因:(1) boot loader 对串口的初始化设置不正确。
(2) 运行在host 端的终端仿真程序对串口的设置不正确,这包括:波特率、奇偶校验、数据位和停止位等方面的设置。
此外,有时也会碰到这样的问题,那就是:在boot loader 的运行过程中我们可以正确地向串口终端输出信息,但当boot loader 启动内核后却无法看到内核的启动输出信息。
对这一问题的原因可以从以下几个方面来考虑:(1) 首先请确认你的内核在编译时配置了对串口终端的支持,并配置了正确的串口驱动程序。
(2) 你的boot loader 对串口的初始化设置可能会和内核对串口的初始化设置不一致。
此外,对于诸如s3c44b0x 这样的CPU,CPU 时钟频率的设置也会影响串口,因此如果boot loader 和内核对其CPU 时钟频率的设置不一致,也会使串口终端无法正确显示信息。
(3) 最后,还要确认boot loader 所用的内核基地址必须和内核映像在编译时所用的运行基地址一致,尤其是对于uClinux 而言。
假设你的内核映像在编译时用的基地址是0xc0008000,但你的boot loader 却将它加载到0xc0010000处去执行,那么内核映像当然不能正确地执行了。
Boot Loader 的设计与实现是一个非常复杂的过程。
如果不能从串口收到那激动人心的uncompressing linux.................. done, booting the kernel 内核启动信息,恐怕谁也不能说:嗨,我的boot loader 已经成功地转起来了!。