孙亮,杨斌,钟瑜(.西南交通大学信息科学与技术学院,成都6003 .中国西南电子技术研究所,成都60036)
基于MPC8548E的嵌入式实时系统自举优化设计✴
孙亮1,杨斌1,钟瑜2
(1.西南交通大学信息科学与技术学院,成都610031 2.中国西南电子技术研究所,成都610036)
板级支持包(BSP)是嵌入式系统中联系操作系统与硬件平台的桥梁。以PowerPC体系架构下的MPC8548E的微处理器硬件为平台,研究了VxWorks操作系统的启动过程,并从BSP的总体架构、存储空间的地址分配、运行过程等方面进行分析,提出了一种新的策略来优化实时操作系统启动时间,通过实验证明此方法可行且安全,具有一定的适用性。
嵌入式系统;启动时间;PowerPC体系;板级支持包;自举;优化设计
在目前嵌入式系统中,嵌入式设备从上电到操作系统完全启动及应用程序的加载需要10 s左右的时间,这相对于家庭电脑来说是一个很不错的启动时间,然而相对一些需要实时、快速运行应用程序的军事、航空、航天等要求可靠性较高的工业应用来说,启动时间显然已经无法满足其对快速加载并使用应用程序的要求,故需要对操作系统的启动过程进行研究、分析、更改,使得嵌入式平台能够在短时间内启动并运行应用程序,达到系统要求。
BSP是板极支持包(Board Supporting Packet)的缩写。它是操作系统内核运行之前运行的一段小程序,通过这段小程序,可以实现对所用的外设接口及功能部件进行初始化,建立内存空间映射图,为操作系统内核的后续载入提供软件环境,故通过对BSP的研究能够对操作系统启动时间进行优化。然而BSP是依赖于具体的硬件配置而实现[1],建立一个通用的BSP几乎是不可能的。
BSP能够支持一些系列的PowerPC体系,还能支持MIPS、x86、ARM、NIOS、XScale等诸多常用系列的处理器。BSP对VxWorks的支持非常完善,是嵌入式VxWorks的最佳选择。BSP的主要功能是系统引导、操作系统接口功能、设备驱动功能、上电自检功能等。VxWorks5.5使用的是wind内核,它具有支持多任务实时、内核精简、高效、稳定和可移植性好等优点,专门应用于具有实时性需求的嵌入式平台。这里主要讨论的是在以MPC8548E微处理器的系统开发板,设计并实现特定的BSP,并利用实现好的BSP去引导VxWorks操作系统达到操作系统启动时间优化的效果。
以PowerPC体系结构的Freescale PPC8548E微处理器为硬件平台核心[2],其内部包含两个处理模块:一个高性能嵌入式PowerPC e500内核和一个通信处理模块(CPM)。硬件的配置如图1所示。
BSP是系统用来管理外设[3]的部分,主要由初始化程序和驱动程序两部分组成。初始化是指从系统上电复位开始直到wind kernel和usrRoot根任务启动的这段时间,系统的执行过程。驱动程序就是一些包含I/O操作的子函数。
VxWorks内核[4]可分为3种:可加载类型内核(Loadable Image)、带有ROM启动功能的压缩或不压缩内核(ROM-based Image)以及驻留ROM的内核(ROM-resident Image)。对于可引导型带ROM启动的不压缩内核的系统启动过程来说,由于基于PowerPC处理器的系统上电后会自动加载并运行位于0地址的指令,故在0地址处通常应放置一条跳转指令,它跳转到位于romInit.s中的初始化入口函数romInit(),接着跳转到位于bootInit.c中的romStart()函数,romStart()将驻留ROM的VxWorks映像(代码段、数据段和BSS段)拷贝到RAM中,接下来开始运行VxWorks内核的入口程序sysInit(),sysInit()实现一些与romInit()函数类似的功能后,再开始调用Vx-Works内核的第一个C函数usrInit(),usrInit()会根据BSP的配置,调用sysHwInit()和sysHwInit2()等,最终完成整个内核的前期初始化工作。在usrInit()的最后,由kernelInit()激活多任务环境,并且创建一个任务来安装设备驱动程序。同时启动设备,初始化VxWorks系统库,调用应用程序,启动完成。该平台使用的是虚地址方式[5],通过访问虚地址空间,然后通过虚地址实地址映射来访问外设和存储器。
通过对BSP启动过程分析,并使用sysprintk(msg)插入到各个程序执行段,该函数能够在系统内核还未启动、C语言环境还未建立时,打印串口信息,通过记录时间发现对于PowerPC8548E的开发板vxWorks系统的启动时间需要10 s左右,然而嵌入式产品在从上电到启动用户程序有特殊要求的,10 s时间显得太长。通过了解VxWorks OS的启动步骤,研读BSP找到了花费时间较多的几项系统工作,如表1所示。
(1)内存的清零操作是一项相对比较耗时的操作,PowerPC8548E中的BSP是通过函数bootClear()来进行内存清零操作,对PowerPC8548E而言,这个操作大约需要3.1 s,耗时非常巨大,是一个时间优化的大项。
(2)网络启动部分是另外的一个非常耗时的操作,网络启动需要对网卡进行初始化,以及各种网络协议的配置。实验发现,大约需要0.9 s来对网络初始化,这对于一个需要快速启动操作来说是一个不可容忍的时间,故这也是需要进行优化的。
(3)VxWorks内存管理是一个最重要的裁剪部分,它消耗了巨大的时间,对于PowerPC8548E,其内核是e500,并不支持BAT(粗粒度映射)模式的MMU和TLB的传统的内存管理办法。通过研究可以找到以下解决办法:缩小页表,即缩小内存总数;将页表存为文件,启动时直接读取,跳过建立页表部分;转换思路,从主要使用页表映射转换为主要使用BAT映射。然而MPC8548E使用的是e500的内核,无法支持BAT模式,将页表转为文件同样花费时间较大,故选择缩小内存映射的总数来减少MMU初始化时间。
(4)PCI的初始化是一个值得注意的项,程序中PCI的使用是用枚举的方法进行的,通过三重的循环去查找,首先进行256次的总线号、32次的设备号以及8次的功能号进行三重循环。然而,事实上一般的嵌入式产品都不会使用到这么多的总线号、设备号和功能号。
5.1 策略一
BSP启动过程如图3所示,对主要耗时的4个部分逐个进行裁剪。
(1)内存清零操作,可以直接屏蔽内存清零操作,即bootClear()函数进行注释。
(2)网络启动无法更改,因为该嵌入式系统需要通过网口进行在线更新和通信。
(3)MMU初始化是一个关键的地方,通过缩小表的尺寸缩小耗时,故对一些不需要地址分配不进行映射。
(4)PCI初始化可以进行相应的更改,PCI上挂载的设备是很少的,故可对总线号、功能号和设备号进行相应的缩小以缩减时间。
5.2 策略二
策略一在安全性方面有所降低,因为不对内存进行零初始化,可能会在以后程序运行时出现异常,再者通过更改MMU初始化也可能会对地址映射出现问题,是不具备安全性。方法二是在方法一的策略上进行改进。系统的主要目的是在1.5 s左右能够启动应用程序,既然如此,可以启动一个最小的操作系统环境,然后直接加载用户程序,将一些其他的初始化交给用户程序后续去处理,这样既保证了安全性又能更快的启动操作系统。启动过程如图4所示:在用户程序usrAppInit(void){}中将未初始化项进行初始化,内存二次清零操作;修改sysPhys-MemDesc数组来更改MMU映射;再者就是网络初始化启动,最终完成整个启动。
通过对策略一和策略二两种不同的启动方式进行启动时间优化,并通过测试,结果如表2所示(表中数据已经经过处理)。
实验数据显示,策略二的优化方法是最有效也是最安全的,能够在1.7 s的时间内启动应用程序,达到了嵌入式系统快速启动应用程序的要求。
每种不同的CPU体系结构都有不同的引导程序和操作系统,引导程序是严格地依附于你所用的特定的硬件资源[6],但它最基本的功能是大致相同的,都分为两个步骤,硬件初始化和引导、装载操作系统。通过从BSP的总体构架去分析操作系统启动过程,从而对操作系统启动时间进行分析优化,通过列举一般操作系统启动时间优化策略的分析,提出一种新的操作系统启动优化策略,通过实验对比发现新策略较原有策略在BSP设计、启动时间优化、安全性等方面有较大改进,并对进一步优化更为复杂的系统的启动时间优化具有很好的实用价值和参考价值。
[1]WindRiverSystem Inc.VxWorks BSP Developer’sGuide5.5[M].[S.l.]:WindRiverSystem Inc.,2002.
[2]Freescale Semiconductor.MPC8548E PowerQUICCTM III Integrated Processor Family Reference Manual[M]//MPC8548ERM Datasheet.East Kilbride,USA:Freescale-Semiconductor Inc.,2007:1035-1222.
[3]岳晓东,蔡本华,贺占庄.基于实时嵌入式系统的BSP构建技术[J].微电子学与计算机,2006,23(5):105-108. YUE Xiao-dong,CAI Ben-hua,HE Zhan-zhuang.The Technology Based On Building a BSP For Real-time Embedded System[J].Microelectronics&Computer,2006,23(5):105-108.(in Chinese)
[4]袁浩,肖沙里.基于MPC8260的VxWorks系统的BSP实现[J].微处理机,2009,30(1):170-172. YUAN Hao,XIAO Sha-li.Realization of VxWorks′s BSP Based on MPC8260[J].Microprocessors,2009,30(1):170-172.(in Chinese)
[5]苏义鑫,黄强.面向S3C44B0X的VxWorks BSP设计[J].电子原器件应用,2007,9(7):17-20. SU Yi-xin,HUANG Qiang.Design of VxWorks BSP Based on S3C44B0X[J].Electronic Component&Device Applications,2007,9(7):17-20.(in Chinese)
[6]杨斌.嵌入式系统原理及应用[M].成都:西南交通大学出版社,2006. YANG Bin.Principle and Application of Embedded System[M].Chengdu:Southwest Jiaotong University Press,2006.(in Chinese)
SUN Liang was born in Jishui,Jiangxi Province,in 1988.He received the B.S.degree from Sichuan Normal University in 2009. He is now a graduate student.His research interests include embedded system and distributed system.
Email:biy395626983@163.com
杨斌(1955—),男,四川人,硕士,教授,主要研究方向为嵌入式系统与分布式系统、信号处理;
YANG Bin was born in Sichuan Province,in 1955.He is now a professor with the M.S.degree.His research interests include embedded system and distributed system,signal processing.
Email:byang@home.swjtu.edu.cn.
钟瑜(1979—),男,贵州人,高级工程师,主要从事信号处理方面的工作。
ZHONG Yu was born in Guizhou Province,in 1979.He is now a senior engineer.His research concerns signal processing.
Email:jade.Zhong@hotmail.com
Optimized Design of Embedded Real-time System Bootloading Based on MPC8548E
SUN Liang1,YANG Bin1,ZHONG Yu2
(1.School of Information Science and Technology,Southwest Jiaotong University,Chengdu 610031,China;2.Southwest China Institute of Electronic Technology,Chengdu 610036,China)
Board Supporting Packet(BSP)is the bridge between the operating system and the hardware platform in an embedded system.This paper describes how to shorten the VxWorks operating system startup time based on MPC8548E under PowerPC architecture,analyses and designs the BSP from the overall architecture and the address assigned ofstorage and the running process,and proposes a new policy which can optimize the startup time of realtime operating system.Finally,it proves the feasibility and security of this method by experiment.This method has a certain commonality and flexibility.
embedded system;startup time;PowerPC architecture;board supporting packet;bootloading;optimized design
TP316.2
A
10.3969/j.issn.1001-893x.2012.02.025
孙亮(1988—),男,江西吉水人,2009年于四川师范大学获学士学位,现为硕士研究生,主要研究方向为嵌入式系统与分布式系统;
1001-893X(2012)02-0241-04
2011-08-08;
2011-11-23