孫亮,楊斌,鐘瑜(.西南交通大學信息科學與技術學院,成都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