陳天毅++周平++李政++張新民
摘 要 介紹了微軟嵌入式WindowsXP操作系統的SHELL定制開發方法以及開發中主要考慮的技術問題,并介紹了SHELL實現的主要功能。針對車載嵌入式系統開發的XPe通過對XP的裁減,去掉了不需要的組件和服務,減小了最終操作系統的體積,使系統的實時性得到極大的增強;通過自主開發定制的SHELL,增強了系統的安全性,改善系統的可操作性,在實際的系統調試及試驗操作中取得了良好的效果,證明SHELL的定制開發是成功的,所采用的技術適合嵌入式系統遠程操作控制使用。
【關鍵詞】嵌入式操作系統 SHELL 定制 開發
某車載移動式設備,為完成特定的功能,其控制系統需要完成比較復雜的時序控制、壓力閉環調節、安全連鎖以及試驗數據實時采集等功能,涉及比較復雜的控制算法及大量的數據采集與遠程傳輸,對系統的可靠性要求較高。系統方案設計時,通過分析比較,我們選擇了德國控創的cPCI系統構成測控系統核心控制器硬件平臺,選用微軟的WindowsXP Embedded為控制系統軟件的操作系統平臺,為適應車載抗振的需求,用CF卡作為操作系統與應用軟件的存貯器,自主開發相關的應用軟件。
控制系統正常工作時為無人操作,也無人機接口,所有的操作都通過網絡遠程進行,為保證各分系統互操作的可靠性,系統中設計了CAN總線網和以太網,CAN主要用于接收系統控制命令與反饋命令操作的結果,以太網主要用于實時數據的傳輸。系統結構見圖1。
由于該系統是一套車載試驗設備,控制系統裝在車上,在空間狹小的控制車上連接顯示器和鼠標鍵盤技術人員修改系統控制程序和配置參數,非常困難和麻煩。因此,控制系統具有一套遠程傳輸服務管理系統,使最終用戶在上位計算機上可以通過以太網遠程啟停控制軟件、遠程重啟核心控制器、遠程傳輸修改好的控制程序以及修改的系統各種屬性參數文件非常重要。
WindowsXP Embedded是微軟針對X86體系定制的一款組件化的嵌入式操作系統。目前在工業自動化控制和嵌入式設備中使用相當廣泛。與普通桌面XP版本的最大區別是可以定制,針對不同的應用場景選取不同的組件組成不同的XPe目標平臺,從而能夠極大地減少對存儲空間的占用率,提高系統性能;直接開關系統電源就可以使用,沒有繁瑣的開關機過程,方便作為設備使用。
XPe的組件包括驅動程序、服務和應用程序等,為XP開發的應用程序可以運行在XPe平臺上。除了Win32 API外,XPe還支持.NETFramework。本項目采用的版本是Windows XP Embedded SP2 Feature Pack 2007,具有EWF、FBWF等功能,非常適合嵌入式設備所用CF卡的特殊要求。
Windows操作系統一般都需要Explorer shell、Command shell或Task Manager shell等三種程序中的一個作為系統的外殼,其提供的功能供用戶與操作系統交互,XPe也不例外。對于本系統,由于無人機界面,因此,我們將自主開發的遠程傳輸服務管理系統作為WindowsXP Embedded操作系統的外殼,簡化了系統操作流程,增強了系統的可靠性,降低了系統對操作人員技術水平的要求,為達到最終系統要求的良好可操作性及可靠性起到了很好的作用。
1 SHELL定制
XPe的開發環境主要包括Target Designer,即目標設計器,用于選擇加入到目標平臺中的組件,進行依賴檢查,然后編譯成目標平臺;Target Analyzer,即目標分析器,用于分析目標設備,獲取目標設備的信息;Component Designer,即組件設計器,用于設計自定義組件,可以將應用程序、驅動程序等設計成XPe可以使用的組件;Component Database Manager,即組件數據庫管理器,用于管理組件對象庫中的組件。
要構造一個完整的XPE系統,首先需要在Target Designer中創建一個配置(Configuration),然后在該配置中添加所有的硬件支持組件、系統內核組件和軟件功能組件。添加完成后使用Target Designer自動檢測組件的關聯關系,并自動把缺少的組件添加到配置中。
我們開發的產品不是普通的軟件,而是專用的操作系統,操作系統與硬件緊密相關,所以需要針對某個特定的硬件平臺(目標機)來進行開發,只有充分地了解和支持硬件,才能讓操作系統正常穩定的運行。由于X86結構計算機的硬件比較復雜,普通開發者很難對它充分地理解熟悉,因此,微軟提供了一個硬件分析工具來幫助開發者分析硬件。Windows XP Embedded提供的這個工具是Target Analyzer,可以自動分析所在設備的硬件信息,分析完成后會產生一個XML格式的輸出文件Devices.pmq,根據這個文件生成一個XPE組件,并保存到組件數據庫中,以后每次開發系統都可以調用,為開發完整的操作系統作準備。
通常每一個嵌入式設備都會運行一個或多個用戶自己的應用程序,另外如果使用了非通用的硬件設備,還需要添加相應的驅動程序,將各個獨立的部分做成XPE組件,在開發階段進行集成。
定制SHELL的主要作用是限制用戶對系統的訪問或者提供采用標準SHELL無法提供的功能。
為了使開發的遠程傳輸服務管理軟件成為XPe的SHELL,必須將其做成XPe的component,為此,在Component Designer中新建component,將其Prototype設為Shell prototype component,將其Dependencies設為Shell group,將Categories設為Software\System\User Interface\Shells,然后在Target Designer中刪除默認的Explorer shell、Command shell或Task Manager shell,加入新建的SHELL component,進行Dependency Check,選擇Auto-Resolve Dependencies,再Build Target Image即可。endprint
SHELL定制的核心是作為SHELL的組件必須繼承Shell prototype component的屬性。
2 SHELL開發
SHELL要完成的主要工作為遠程啟停控制軟件;遠程重啟核心控制器(WindowsXP Embedded重新啟動);將修改好的控制程序以及修改的系統各種屬性參數文件傳輸到嵌入式控制器中;遠程改變XPe的EWF狀態,以便于將修改后的程序和屬性文件保存在CF卡上,并保護CF卡;操作安全認證,確保只有授權的用戶才能對系統進行操作。FTP(可以完成文件傳輸,但無法對正在運行的控制程序進行更新)或遠程桌面可以實現類似功能,但存在的重大問題是系統的安全無法保證,無法確保只有授權用戶才能操作設備;另一方面的不足是對操作者的技術水平要求較高,需對系統的配置充分了解。
為了實現以上功能,采用VC++60開發所需的遠程傳輸服務管理軟件。
作為操作系統的SHELL,其重要性不言而喻,必須著重考慮的是其自身的穩定性、可靠性、對系統的安全保護以及對系統網絡故障的自適應性,最大程度保證系統可用。SHELL除要求自身穩定外,還必須在系統啟動完成后,啟動控制系統核心控制軟件運行,完成系統功能。因此,SHELL的開發主要從以下幾個方面考慮:
2.1 網絡檢查
本系統由于沒有人機界面,網絡是系統與外部聯系的唯一通道,為提高可靠性,在系統中配置了兩塊以太網卡,從而構成冗余網絡系統。通信的實現采用基于MFC的WINSOCKET完成。由于各分系統的工作情況不同,啟動時間不同,有可能出現要連接的系統沒有響應的情況,因此,在系統啟動時必須對網絡的連通情況進行檢查。為此,將用來LISTEN的SOCKET構建在系統堆上,如果網絡不通,則刪除SOCKET,然后定時重建。如果試驗過程中由于振動等原因,造成網線接觸不良導致通信故障時,由SHELL重建SOCKET,從而確保通信可靠。
2.2 安全認證
如果SHELL中用于LISTEN的SOCKET接到連接請求,SHELL在接受連接的同時,對連接的請求方要求必須的特定連接串,如果請求方不能提供要求的連接串,或提供的連接串錯誤,則切斷請求的連接,確保只有授權的用戶才能操作系統。
2.3 啟動控制軟件
SHELL啟動完成后,檢查網絡的連接狀態,如果網絡良好,則啟動核心控制軟件,系統進入待命狀態,然后等待CAN總線的操作命令,對系統進行控制,完成試驗任務。
在Windows系統中,無法對正在運行的程序進行更新,為了能夠遠程更新控制軟件及配置參數文件,必須實現SHELL對控制軟件的啟停的功能,便于控制軟件的更新,為此,在SHELL啟動控制軟件后,由SHELL向操作系統廣播自定義的消息,并在消息中攜帶SHELL的窗口ID,在控制軟件中則響應SHELL發出的消息,并將控制軟件的窗口ID返回到SHELL中,從此,SHELL與控制軟件互相知道對方的窗口ID,相互之間就可以通過自定義的消息進行通信,從而實現由SHELL控制核心控制軟件的啟停的目的。其控制原理見圖2。
2.4 文件傳輸
文件傳輸是一個較簡單的功能,采用SOCKET可以較容易地實現。文件傳輸分為文件的上傳與下載,上傳用于將cPCI中現用的控制軟件及配置參數傳回到上位機中進行比較,以確認cPCI中的控制軟件的版本及系統配置參數,下載功能用于更新cPCI中的控制軟件及配置參數文件。
2.5 EWF功能控制
使用CF卡創建基于Compact Flash? (CF卡)引導運行的XPE操作系統有很多優勢,最顯著的優勢是創建嵌入式裝置,這些設備通常較為可靠,因為他們都沒有任何活動部件,特別適合車載系統的使用條件。但使用CF卡也有缺點,其主要缺點是它有一定的讀寫次數限制,當反復對CF進行讀寫操作的時候,隨著時間的推移,CF上的壞塊就會越來越多,同時讀寫速度也會越來越慢,甚至導致最終的系統崩潰或者文件丟失,這種特性對于使用CF卡作為存貯器的系統來說是不利的。
XPe系統提供了EWF功能,可以使用EWF過濾所有向Flash存儲介質的寫操作,從而保護CF卡。EWF即增強性過濾寫入功能的縮寫,通過限制直接寫入CF的方式,避免了頻繁的讀寫對CF卡造成的損壞,從而延長了CF卡的使用壽命和讀寫次數。EWF主要的功能是在計算機內存中構建一個覆蓋層,這個覆蓋層理論上置于被保護卷的上方,所有對保護卷的讀寫操作都要先經過覆蓋層。開啟EWF過濾功能后,被保護卷將不能被寫入,所有的針對保護卷的寫入操作都將記錄在覆蓋層上,但是可以讀取被保護卷的信息。如果目標信息不在覆蓋層上,那么覆蓋層可以通過讀保護卷的操作,但是將會過濾寫入的操作。使用該功能的主要目的是用來保證基于CF卡的Windows系統的引導分區避免不必要的寫入,增強系統的健壯性,或者保護引導分區避免異常斷電帶來的損耗。EWF的作用原理見圖3。
EWF一般情況下是通過命令行操作來實現開啟或關閉的,本系統由于無人機界面,因此,無法使用這種操作方式。XPe提供了EWF的編程接口,即Enhanced Write Filter API(EWF API),因此,在SHELL的開發中,通過在VC++60程序中加入EWF API調用,實現對EWF開啟、關閉及查看EWF狀態等功能,從而讓總控系統可以通過網絡遠程開啟或關閉XPe的EWF功能,既能實現文件保存在CF卡上,同時也能在不傳輸文件時保護CF卡。
3 應用與結論
本系統開發完成后,經過近一年的系統調試以及5年正式的試驗驗證,系統穩定可靠,操作方便,增強了系統的可操作性和安全性。
XPe通過對XP的裁減,去掉了不需要的組件和服務,使系統的實時性得到極大的增強,通過自主開發定制XPe的SHELL,增強了系統的安全性,實現了遠程啟停控制軟件、遠程重啟核心控制器、遠程傳輸修改好的控制程序以及修改的系統各種屬性參數文件等功能,大大改善系統的可操作性,取得了良好的效果,證明定制的SHELL是成功的,所采用的技術適合嵌入式系統遠程操作控制使用。
參考文獻
[1]Microsoft.Windows? XP Embedded Service Pack 2 Feature Pack 2007Documents. Microsoft,2008.
[2]蔡永泉.算機網絡安全理論與技術教程[M].市海淀區學院路37號,京航空航天大學出版社,2003.
[3]王達.算機網絡遠程訪問與遠程啟動[M].大學學研大廈,華大學出版社,2003.
[4]雷斌等.VC++60網絡編程技術[M].北京市崇文區夕照寺街14號,人民郵電出版社,2000.
作者簡介
陳天毅(1966-),男,重慶市開縣人。碩士學位。現為四川綿陽中國空氣動力研究與發展中心四所高級工程師,從事控制系統設計與研究。
周平(1963-),男,四川省三臺縣人。博士學歷。現為四川綿陽中國空氣動力研究與發展中心四所研究員,從事控制系統設計與研究。
李政(1966-),男,湖北省松滋市人。碩士學位。現為四川綿陽中國空氣動力研究與發展中心四所高級工程師,從事控制系統設計與研究。
張興民(1972-),男,新疆維吾爾自治區烏魯木齊市人。碩士學位。現為四川綿陽中國空氣動力研究與發展中心四所工程師,從事計算機控制。
作者單位
中國空氣動力研究與發展中心四所 四川省綿陽市 621000endprint