嵌入式实时操作系统加载方式的研究.doc
文本预览下载声明
嵌入式实时操作系统加载方式的研究
摘要摘要:随着数字信息技术的发展,嵌入式实时操作系统不仅渗透到科学研究、工程技术等领域,而且与人们的生活联系越来越密切。嵌入式实时操作系统最重要的特性是加载方式需要调度一切可利用的资源完成实时任务。为正确评价嵌入式实时操作系统的性能,必须通过科学、系统的方法对其进行研究,进行全面、准确的测试。探讨Flash、RAM和外部存储介质启动的内存映射布局,讨论3种加载方式的优劣,结合硬件平台测试各项启动性能。
关键词关键词:Bootloader;内存映射;加载方式;嵌入式操作系统
DOIDOI:10.11907/rjdk.1511245
中图分类号:TP302
文献标识码:A文章编号文章编号2016)001001903
0引言
嵌入式系统应用越发广泛,从软件的角度,一个嵌入式系统可以分为4个层次:①引导加载程序。包括固化在固件中的 boot 代码和BootLoader两大部分;②内核。嵌入式操作系统是嵌入式应用软件的基础和开发平台,它解决了嵌入式软件开发标准化的难题。嵌入式系统具有操作系统最基本的功能。目前,主流的嵌入式系统有以下几种:Linux、VxWorks、QNX、Windows CE、Palm OS;③文件系统。包括根文件系统和建立于 Flash 内存设备之上的文件系统;④用户应用程序。在用户应用程序和内核层之间可能还存在一个嵌入式图形用户界面。常用的嵌入式GUI有Qt和MiniGUI等。
引导加载程序是系统加电后运行的第一段软件代码。从 PC 的体系结构中可知,PC 机中的引导加载程序由 BIOS(其本质就是一段固件程序)和位于硬盘 MBR 中的 OS Boot Loader(如LILO和GRUB等)组成。BIOS 在完成硬件检测和资源分配后,将硬盘MBR 中的 Boot Loader 读到系统RAM 中,然后将控制权交给 OS Boot Loader。Boot Loader 的主要任务是将内核映象从硬盘读到 RAM 中,然后跳转到内核的入口点运行,即开启操作系统。 而在嵌入式系统中,通常并没有像 BIOS 那样的固件程序(有的嵌入式 CPU 也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由 Boot Loader 来完成。比如在一个基于ARM920T核心的 S3C2410 CPU的嵌入式系统中,系统在上电或复位时通常从地址 0处开始执行,由系统的 Boot Loader 程序[12]执行。
本文将从典型嵌入式系统内存映射布局、常见嵌入式操作系统的加载方式、Boot Loader 的框架结构以及 Boot Loader 的安装等4个方面讨论嵌入式系统加载方式。
1典型嵌入式系统内存映射布局
一个典型的嵌入式系统至少具备以下3类存储部件。
(1)Boot ROM 是一片可擦写的只读存储器,一般不会太大(大小不超过1M),用于存放嵌入式系统加电后的初始化代码。在PC上,用于完成加电后检测的BIOS,功
能与此类似。
(2)Flash是一块可擦写的存储介质,用于嵌入式系统的操作系统和应用程序映像,以及嵌入式系统的配置数据等。此介质的容量大于Boot ROM。
(3)SRAM/DRAM即常规内存。一般情况下,嵌入式系统启动后,执行的代码和数据存放于此。
这3类存储介质,一般直接通过硬件连接方式,硬性焊接在CPU的可寻址空间中,如图1所示。因此,只需采用CPU的内存读写机制,就可以完成对这些设备的读写操作,无需特殊设备驱动程序的支持。
2嵌入式操作系统加载方式
2.1从Flash直接加载
在这种加载方式下,嵌入式操作系统映像和应用程序映像都存放在Flash中。编译时,操作系统和应用程序映像的二进制模块被编译成不同的节,包括TEXT节、DATA节、BSS节等。其中,不同节存的内容也不同,TEXT节存放可执行代码,DATA节存放已经初始化的全局变量,而BSS节是一个预留节,存放未经初始化的全局变量。嵌入式系统加载启动过程如图2所示。
(1)完成CPU复位,执行启动向量所在的第一条指令(位于Boot ROM内),这条指令往往是一条跳转指令,跳转到Boot ROM内的硬件初始化代码位置,执行必需的硬件初始化工作。
(2)硬件初始化代码完成CPU的初始化,比如设置CPU的段寄存器、堆栈指针等,以及其它硬件的初始化。
(3)完成硬件的初始化功能后,通过一条跳转指令,跳转到Flash存储器的特定位置开始执行。这个位置是一段代码段(TEXT段)中的一个特定位置。
(4)将Flash中的DATA节代码复制到RAM中。
(
显示全部