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