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