陜西寶成航空儀表有限責(zé)任公司 李奕宏 寇志遠
隨著嵌入式電子產(chǎn)品在軍用航空領(lǐng)域的廣泛應(yīng)用,對軍用電子產(chǎn)品軟件開發(fā)過程的管理和軟件版本的控制提出了更高的要求。按照軍用產(chǎn)品軟件管理辦法規(guī)定,定型(鑒定)供交付、生產(chǎn)、檢驗驗收的軟件目標碼存放在產(chǎn)品庫中,產(chǎn)品批生產(chǎn)過程中,軟件目標碼從產(chǎn)品庫中出庫,使用灌裝設(shè)備進行軟件灌裝。
本研究主要為更好對生產(chǎn)過程軟件灌裝管理和版本的控制,研制軟件灌裝用設(shè)備的設(shè)計思路和實現(xiàn)方法。
傳統(tǒng)的軟件灌裝設(shè)備是采用專用計算機外加幾個編程器(下載器)完成軟件灌裝功能。灌裝原理是:從硬盤(或電子盤)啟動操作系統(tǒng)后,將產(chǎn)品庫光盤中的編譯好的軟件目標碼寫入編程器中。該設(shè)備的缺點是,因為有硬盤(或電子盤)等存儲設(shè)備,操作者可以方便地更改或重新編譯軟件代碼。如果計算機被病毒感染,可能造成程序的不正常運行。
如何保證灌裝過程的受控,避免軟件目標碼出庫后在灌裝計算機上不被病毒感染,不因灌裝計算機硬盤上的數(shù)據(jù)出現(xiàn)灌裝錯誤軟件版本等現(xiàn)象出現(xiàn),經(jīng)反復(fù)論證,確定以下方案:
(1)選用光盤系統(tǒng)(即Live in CD),也就是說所有的軟件包括操作系統(tǒng)、芯片下載軟件、設(shè)備驅(qū)動程序及驗收后的程序目標代碼均被刻錄在一張光盤中,拿此光盤啟動軟件灌裝專用無盤計算機,進行軟件下載,實現(xiàn)軟件的灌裝。
(2)在系統(tǒng)光盤制作過程中,創(chuàng)建最小化的操作系統(tǒng),使系統(tǒng)盡可能地精簡和優(yōu)化。系統(tǒng)中只驅(qū)動專用無盤計算機在軟件灌裝過程中使用的硬件組件,避免其余端口如U盤、串口等在灌裝過程中非法使用。
(3)光盤作為只讀存儲設(shè)備,先天具有數(shù)據(jù)不可更改的優(yōu)勢,灌裝設(shè)備本身是一臺專用無硬盤的計算機,只能用于軟件灌裝,達到了產(chǎn)品軟件灌裝專用的目的。
在光盤系統(tǒng)的在設(shè)計的初期,我們考慮到Windows 98系統(tǒng)對硬件要求較低,而且大小可以控制到100M以內(nèi),如果能成功制作光盤系統(tǒng)可以減少系統(tǒng)預(yù)熱啟動時間,方案確定后便開始對Windows 98系統(tǒng)進行精簡優(yōu)化,在硬盤上調(diào)試無誤后將該系統(tǒng)制作成鏡像文件刻錄光盤,啟動時不能正常進入系統(tǒng),經(jīng)分析發(fā)現(xiàn)Windows 98系統(tǒng)在啟動時需要向啟動分區(qū)寫入啟動數(shù)據(jù)記錄,而光盤的只讀性導(dǎo)致Windows 98難以脫離可寫存儲器運行,用Windows 98制作光盤系統(tǒng)的方案被迫終止。
通過進一步的了解,發(fā)現(xiàn)有一個微軟公司作為系統(tǒng)維護的Windows光盤系統(tǒng),即Windows PE(Windows PreInstallation Environment),這個系統(tǒng)是Windows預(yù)安裝環(huán)境,帶有限服務(wù)的最小Win32子系統(tǒng),基本以保護模式運行的Windows XP Professional內(nèi)核。它包括運行Windows安裝程序及腳本、連接網(wǎng)絡(luò)共享、自動化基本過程以及執(zhí)行硬件驗證所需的最小功能。Windows PE通過使用ramdisk技術(shù),將內(nèi)存劃出一個區(qū)域來虛擬硬盤,然后將Windows核心文件載入該區(qū)域,來實現(xiàn)一定的維護功能。Windows PE啟動后類似于Windows XP下打開了CMD命令行窗口,沒有桌面圖標,操作完全依賴各種命令,通過自行定制,可以制作出類Windows的桌面并集成一些綠色的常用軟件,定制好的Windows PE擁有類Windows XP的友好界面,使用方便,作為系統(tǒng)維護工具來說是相當(dāng)有效的方式,但正是因為Windows PE系統(tǒng)的系統(tǒng)維護特性,所以從網(wǎng)上獲得的Windows PE系統(tǒng)都集成了很多個人用戶常用的軟件,并不適用軍用產(chǎn)品的軟件灌裝,而且Windows PE光盤系統(tǒng)因為采用的是非標準Windows的數(shù)據(jù)格式,在Windows系統(tǒng)下,只能看到光盤使用容量而看不到光盤中的內(nèi)容,這個特性利于保密卻給帶給我們修改Windows PE光盤系統(tǒng)相當(dāng)大的困難,此方案也被迫放棄。
在Windows PE系統(tǒng)研究的同時,我們了解到另一個嵌入式系統(tǒng):Windows XPE(全稱Windows XP Embedded),該系統(tǒng)是專門為嵌入式設(shè)備而設(shè)計的,其目的是支持應(yīng)用程序開發(fā)人員以及構(gòu)建嵌入式設(shè)備的原始設(shè)備制造商(OEM)的工作,以組件化的形式提供Windows操作系統(tǒng)的功能。
Windows XPE是桌面Windows XP的組件化版本。其構(gòu)建在已經(jīng)通過驗證的Windows 2000代碼庫基礎(chǔ)之上,提供了一萬多種獨立的操作系統(tǒng)特性、服務(wù)與驅(qū)動程序,用戶可以從中選擇適當(dāng)?shù)奶匦?,用以開發(fā)小內(nèi)存空間占用量的定制化嵌入式設(shè)備。而且,除了磁盤外,其他非易失性(永久)讀/寫存儲設(shè)備同樣具備啟動能力,在使用EI Torito的可啟動CD-ROM驅(qū)動程序和增強型寫過濾器(EWF,可將所選定的磁盤I/O路由改變到內(nèi)存或另一種存儲介質(zhì)上,從而使OS認為只讀存儲器是可寫的)以及ROM時,也可以通過CD-ROM進行啟動。這樣的特性足以滿足我們在開發(fā)軍用產(chǎn)品軟件灌裝設(shè)備的要求。
研制的幾個關(guān)鍵步驟:
(1)制作綠色軟件
將MCU生產(chǎn)廠家提供的芯片下載軟件和下載器驅(qū)動程序制作成綠色軟件,這樣就省去軟件運行過程中查找動態(tài)鏈接庫引起的不必要麻煩。
(2)定制Windows XPE組件
根據(jù)灌裝要求,加入El Torito CD Support、Winlogon Sample Macro、User Interface Core組件、Show Run on Start Menu等啟動光盤組件和幾個關(guān)鍵的系統(tǒng)組件。
(3)制作硬盤鏡像、刻錄光盤
建立Pre-FBA運行映象的iso文件,執(zhí)行FBA,驗證EWF對C盤的保護當(dāng)確認EWF的配置完全正確時,就可以刻錄光盤了。
(4)解決0x0000007B故障
在Windows XPE系統(tǒng)在硬盤上調(diào)試成功后,制作硬盤鏡像、刻錄光盤。用光盤啟動時出現(xiàn)代碼為0x0000007B的藍屏錯誤,重新定制組件0x0000007B故障依舊。無意中將光盤放在另外一臺機器上時,順利進入系統(tǒng),才發(fā)現(xiàn)Windows XPE系統(tǒng)對硬件兼容性有著很高的要求,更換兼容性較好的硬件,成功制作出光盤啟動的Windows XPE系統(tǒng)。
用XPE制作的啟動光盤在專用無盤計算機上進行軟件灌裝具有以下特點:
(1)專用光盤使用專用設(shè)備,也就是該光盤只能在灌裝設(shè)備上使用,其他計算機無法使用該光盤啟動系統(tǒng),并且不能查看該光盤內(nèi)容。
(3)灌裝計算機沒有硬盤以及其他可寫存儲器,也不支持U盤等即插即用的存儲器,而且在使用灌裝光盤啟動系統(tǒng)后無法將光驅(qū)打開更換其他光盤(強行打開光驅(qū)會導(dǎo)致系統(tǒng)死機),可以避免人為使用一些二進制編輯器修改產(chǎn)品軟件。
(4)因為操作系統(tǒng)和灌裝軟件以及產(chǎn)品軟件均集成在一張光盤上,所以,如果光盤出現(xiàn)故障,例如長期使用導(dǎo)致盤體損壞,該光盤則不能啟動系統(tǒng),可以將產(chǎn)品軟件灌裝錯誤幾率降到最低,減少后期檢驗工作量。
(5)操作簡單,只需要點擊鼠標擇不同的灌裝程序和載入相應(yīng)的HEX二進制文件即可完成整個灌裝過程。
(6)一臺灌裝計算機通過使用不同產(chǎn)品的灌裝光盤即實現(xiàn)多個產(chǎn)品的軟件灌裝。只需在已有鏡像文件的基礎(chǔ)上更換下載器的驅(qū)動程序、軟件目標代碼和下載軟件即可制作出新產(chǎn)品的灌裝光盤。
目前該灌裝設(shè)備已通過計量部門的檢定,并使用于公司的多個產(chǎn)品軟件灌裝中。