《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技术 > 设计应用 > 基于Windows CE .net平台的嵌入式系统的定制和裁剪
基于Windows CE .net平台的嵌入式系统的定制和裁剪
陈正茂 杨维忠 胡 波
摘要: 创建和定制Windows CE .net嵌入式操作系统的方法。此方法对于Windows CE嵌入式平台的研究、开发和定制具有良好的借鉴作用。
關(guān)鍵詞: 开发工具 Windows CE .net
Abstract:
Key words :

  摘  要: 創(chuàng)建和定制Windows CE .net嵌入式操作系統(tǒng)的方法。此方法對于Windows CE嵌入式平臺的研究、開發(fā)和定制具有良好的借鑒作用。

  關(guān)鍵詞: Windows CE  嵌入式操作系統(tǒng)  定制  裁剪

 

  Microsoft Windows CE .net是Windows CE 3.0的后續(xù)產(chǎn)品,它不僅是一個功能強(qiáng)大的實時嵌入式操作系統(tǒng),而且提供了眾多開發(fā)調(diào)試工具,允許用戶利用它快速開發(fā)新一代的智能化設(shè)備。借助于完善的操作系統(tǒng)功能和開發(fā)工具,Windows CE .net為開發(fā)人員提供了構(gòu)建、調(diào)試和部署基于Windows CE .net定制設(shè)備所需的一切特性。平臺開發(fā)工具Platform Builder是一個完全集成的開發(fā)環(huán)境(IDE),并且包括一個軟件開發(fā)工具包(SDK)導(dǎo)出工具。

  平臺向?qū)?Platform Wizard)允許開發(fā)人員根據(jù)將要創(chuàng)建設(shè)備的類型簡便快捷地建立新的平臺。該向?qū)峁┝?2個預(yù)建配置,以便為設(shè)備設(shè)計提供一個基礎(chǔ)。這些設(shè)備包括:數(shù)字媒體接收設(shè)備、企業(yè)終端、企業(yè)Web Pad、網(wǎng)關(guān)、工業(yè)控制設(shè)備、Internet設(shè)備、IP電話、移動手持設(shè)備、移動電話、機(jī)頂盒、微內(nèi)核、Windows瘦客戶機(jī)。

  由于微軟對嵌入式操作系統(tǒng)研發(fā)力量的增強(qiáng),CE的優(yōu)勢越來越明顯:實時處理能力不斷增強(qiáng)(在使用Pentium 166 MHz處理器時,ISR延遲平均為2.8ms,IST延遲平均為17.9ms)、強(qiáng)大的多媒體能力、可伸縮的無線技術(shù)支持、針對小內(nèi)存體積占用進(jìn)行優(yōu)化(最小200KB)、具有適應(yīng)性的可定制用戶界面、豐富的設(shè)備驅(qū)動程序、強(qiáng)大的應(yīng)用程序開發(fā)等。因此,Windows CE在嵌入式系統(tǒng)的市場占有率越來越高。

1  創(chuàng)建Windows CE .net的主要步驟

  創(chuàng)建一個基于Microsoft Windows CE .net的操作系統(tǒng),必須完成下面幾個主要步驟:(1)選擇一個標(biāo)準(zhǔn)的開發(fā)版(SDB)作為模板,創(chuàng)建一個Windows CE的平臺。(2)使用備選的工程及目錄中列舉的特色,對平臺進(jìn)行定制。(3)編譯并Build鏡像文件(image),并將它下載到SDB。采用在Platform Builder集成開發(fā)環(huán)境中的Debug工具調(diào)試平臺。(4)為特定的目標(biāo)設(shè)備創(chuàng)建一個boot loader以及板支持包(BSP)。(5)用新的BSP重新編譯(Rebuild)操作系統(tǒng)鏡像,并將它下載進(jìn)入目標(biāo)設(shè)備,調(diào)試這個平臺。(6)當(dāng)平臺創(chuàng)建完畢的時候,輸出軟件開發(fā)包(SDK),以便在開發(fā)平臺應(yīng)用程序時使用。

  在一個典型的平臺開發(fā)方案中,可以首先下載自己的操作系統(tǒng)鏡像到硬件平臺,例如基于PC的Windows CE硬件開發(fā)平臺(CEPC)。Platform Builder包括了boot loaders、CEPC板支持包以及許多別的硬件開發(fā)平臺。在硬件平臺上精簡而且調(diào)試好開發(fā)平臺后,就可以將它應(yīng)用于自己的特定目標(biāo)設(shè)備。在下載鏡像到目標(biāo)設(shè)備之前,用戶必須創(chuàng)建一個boot loader以及OEM適配層OAL。OAL是指操作系統(tǒng)kernel和目標(biāo)平臺之間的連接層。一旦完成了平臺創(chuàng)建,就可以輸出一個SDK,應(yīng)用程序開發(fā)人員可以將此SDK安裝到Microsoft eMbedded Visual C++ 4.0或者M(jìn)icrosoft Visual Studio.Net的Smart Device Extensions等開發(fā)系統(tǒng)中,用以編寫基于該平臺的應(yīng)用程序。圖1描述了采用Platform Builder創(chuàng)建一個基于Windows CE平臺的過程。

 

2  定制適合自己的操作系統(tǒng)

  由于微軟提供了良好的平臺向?qū)?本文不再對這些過程進(jìn)行敘述,僅對創(chuàng)建過程中的關(guān)鍵問題進(jìn)行說明。

2.1 自動載入應(yīng)用程序

  很多設(shè)備需要在操作系統(tǒng)啟動時,自動載入自己的應(yīng)用程序。有的CE系統(tǒng)本身就沒有標(biāo)準(zhǔn)的CE界面,更需要自動加載自己的應(yīng)用程序作為設(shè)備啟動界面。需要在操作系統(tǒng)啟動時加載的文件一般放在注冊表的鍵[HKEY_LOCAL_MACHINEinit]下面,例如:[HKEY_LOCAL_MACHINEinit]

  ″Launch50″=″explorer.exe″

  ″Depend50″=hex:14,00,1e,00

  這些文件是系統(tǒng)啟動時運(yùn)行的程序。其中Launch后的數(shù)字越小,運(yùn)行越早;Depend的值說明這個程序要依賴前面的哪些程序。一般有Launch10 SHELL.EXE、Launch20 DEVICE.EXE、Launch30 GWES.EXE、Launch50 EXPLORER.EXE四個模塊需要啟動。

  以上這些模塊都是標(biāo)準(zhǔn)的用戶級進(jìn)程,因此可以在這個階段添加自己的應(yīng)用程序,也可以在DEVICE.EXE之后、GWES.EXE之前啟動一個任意的應(yīng)用程序App.exe。但是該應(yīng)用程序必須沒有調(diào)用GWES.EXE和EXPLORER.EXE中定義的圖形和Windows資源管理器的功能,否則該應(yīng)用程序不能正常運(yùn)行。EXPLORER.EXE是CE標(biāo)準(zhǔn)的Shell,在其之前和之后啟動一個具有標(biāo)準(zhǔn)用戶接口的應(yīng)用程序時都會出現(xiàn)問題。EXPLORER并不能處理在其之前創(chuàng)建的可見的、頂級的窗口應(yīng)用。由于EXPLORER.EXE裝載之后需要執(zhí)行某些特定的初始化操作,因此在其后隨即啟動的帶有用戶接口的應(yīng)用也不能正常執(zhí)行。但在其之前和之后可以啟動沒有用戶接口的應(yīng)用程序,例如通信監(jiān)控程序。

  EXPLORER.EXE執(zhí)行之后,啟動過程從注冊表切換到文件系統(tǒng)。在初始化完桌面和任務(wù)欄窗口之后,它會在目錄windowsstartup中尋找任何可以執(zhí)行的應(yīng)用程序或其快捷方式,因此可以把需要開機(jī)啟動的應(yīng)用或其快捷方式放在該目錄中。方法如下:

    在platform.dat文件中加入以下程序:

  Directory(″WindowsStartUp″):-File(″sample.exe″,

  ″windowssample.exe″)

  其中:路徑″WindowsStartUp″代表啟動菜單,路徑″WindowsPrograms″代表程序菜單。

2.2 改變盤符名稱

  如何改變硬盤、電子盤、CF卡等的盤符名稱,是平臺必須考慮的問題,因為有些應(yīng)用程序?qū)τ诒P符的名稱要求是固定的。

  以改變CF盤盤符為例,也可以改變CF ATAPI驅(qū)動的注冊表設(shè)置,其位置為:

  [HKEY_LOCAL_MACHINESystemStorageManager

  ProfilesATA]

  ″Name″=″ATAPI Device″

  ″Folder″=LOC_STORE_HD_FOLDER

  將LOC_STORE_HD_FOLDER改為需要的盤符,例如“Compact flash”等。

2.3 設(shè)置存儲設(shè)備

  任何嵌入式設(shè)備都需要存儲設(shè)備存儲信息。由于CF卡之外的其他設(shè)備都有比較明確的驅(qū)動模塊,所以這里僅對加入CF卡設(shè)備進(jìn)行說明。如果要加入CF設(shè)備,首先需要加入Storage Devices/Compact Flash/PC Card Storage(ATADISK)特色,這是必要條件。另外還需要PCMCIA支持,因為CF卡接口是PCMCIA的擴(kuò)展。如果PCMCIA控制器不屬于微軟支持之列,則還需要編寫驅(qū)動程序來驅(qū)動特定的硬件。不要加入USB特色,因為它與CF卡或者ATAPI存儲器沒有關(guān)系。

2.4 設(shè)置網(wǎng)絡(luò)適配器

  網(wǎng)絡(luò)化是嵌入式設(shè)備的發(fā)展方向,這里以Intel 82559ER單口網(wǎng)卡為例進(jìn)行說明。

  首先用一個文本編輯器對CONFIG.BIB和PLATFORM.REG文件進(jìn)行修改。網(wǎng)絡(luò)適配器需要它自己單獨(dú)地預(yù)留內(nèi)存,這些信息在文件CONFIG.BIB中表示,其大小應(yīng)該符合默認(rèn)大小(大約120KB),而且不能和其他預(yù)留的內(nèi)存相沖突。第二,網(wǎng)絡(luò)適配器也需要在文件PLATFORM.REG中加入注冊表信息,其中IP和網(wǎng)關(guān)的設(shè)置可以根據(jù)實際應(yīng)用進(jìn)行修改。第三,修改CE物理地址注冊表數(shù)值與在CONFIG.BIB文件描述的內(nèi)存范圍的基地址相符合。在Windows CE .net系統(tǒng)中,PCI插槽不再需要通過注冊表設(shè)置,系統(tǒng)可以通過列舉PCI總線得到這些信息。同樣,也不需要手動設(shè)置網(wǎng)絡(luò)地址綁定、路由和連接等信息,這些都由操作系統(tǒng)負(fù)責(zé)處理。

  下面是將一塊Intel Pro 10/100單口網(wǎng)絡(luò)適配器加入系統(tǒng)的部分程序。

2.5 調(diào)試控制面板程序

  如何調(diào)試Windows CE .net控制面板程序(Control Applet),對增強(qiáng)Windows CE .net的功能十分重要。Windows CE的控制面板程序是動態(tài)鏈接庫(DLLS),可以通過三個步驟進(jìn)行調(diào)試:(1)創(chuàng)建一個.exe文件去加載自己的.cpl文件。(2)在開發(fā)環(huán)境中Project->Settings->Debug設(shè)置“Executable for debug session”和“Remote executable path and file name”為該.exe文件名。(3)設(shè)置“Additional Dll′s”參數(shù)為要加載的.cpl或.dll文件。

當(dāng)然,也可以通過這個方法來調(diào)試別的.dll文件。

2.6 編寫設(shè)備驅(qū)動

  編寫設(shè)備驅(qū)動的最好辦法是在一個同類設(shè)備的驅(qū)動上進(jìn)行改造。

  (1)復(fù)制一個設(shè)備的驅(qū)動,修改它的文件夾,換成需要的名字,這里包含*.c、*.h文件和源文件,更換*.c、*.h的內(nèi)容,相應(yīng)更換源文件的內(nèi)容。

  (2)在Dir文件中加入自己的文件夾名字。

  *.c、*.h文件需自己生成,不會自動生成。source dir file可以用一些生成文件的程序生成。

3  下載和調(diào)試操作系統(tǒng)

3.1 準(zhǔn)備工作

  確認(rèn)CE目標(biāo)機(jī)上是否裝有MS-DOS 6.22。若沒有,則按照以下步驟制作啟動軟盤:(1)準(zhǔn)備一張空的軟盤。(2)制作MS-DOS 6.22啟動軟盤。(3)在BIOS中設(shè)置計算機(jī)從軟盤驅(qū)動器啟動,使用軟盤啟動您的計算機(jī),進(jìn)入MS-DOS 6.22。(4)順利進(jìn)入到MS-DOS 6.22操作系統(tǒng)后,MS-DOS 6.22啟動軟盤(以下簡稱啟動軟盤)制作完成。

3.2 制作CE目標(biāo)機(jī)啟動硬盤/CF卡/DOC

  (1)為CE目標(biāo)機(jī)的硬盤/CF卡/DOC建立一個FAT16的主引導(dǎo)分區(qū)(注:使用啟動軟盤中的FDISK工具)。

  (2)將主引導(dǎo)分區(qū)格式化,并創(chuàng)建系統(tǒng)引導(dǎo)文件。例如:從啟動軟盤啟動計算機(jī)后,使用“A:FORMAT C:/S”命令格式化目標(biāo)硬盤/CF卡/DOC。

  (3)將啟動軟盤上的所有文件復(fù)制到目標(biāo)硬盤/CF卡/DOC。

  (4)在文件Autoexec.bat中加入“loadcepc nk.bin”,在文件Config.sys中加入“device=himem.sys”。將Himem.sys(ver 6.22)、loadcepc.exe拷貝進(jìn)目標(biāo)盤。

  (5)新建并編輯bootcepc.cnf文件,作為啟動文件,并加入以下內(nèi)容:

  N:NK BIN ;標(biāo)記N:參數(shù)說明Loadcepc要加載的BIN文件名稱。

  S:BOOTCEPC.bmp ;標(biāo)記S:參數(shù)說明要顯示的圖片名稱。

  L:640x480x16 ;標(biāo)記L:參數(shù)為Windows CE啟動后的顯示分辨率。

  如果通過網(wǎng)絡(luò)或者串口進(jìn)行調(diào)試,也可以加入下面的參數(shù):

  B:3 ;標(biāo)記B:表示連接的波特率,在串口連接時使用。

  E:0:0:192.168.0.124 ;標(biāo)記E:參數(shù)為網(wǎng)絡(luò)下載指定本機(jī)IP地址。

  (6)在BIOS中設(shè)置計算機(jī)從目標(biāo)硬盤/CF卡/DOC啟動。計算機(jī)使用目標(biāo)硬盤/CF卡/DOC啟動到MS-DOS6.22后,制作啟動硬盤/CF卡/DOC完成。

3.3 啟動系統(tǒng)進(jìn)行調(diào)試

  (1)將影像文件NK.BIN復(fù)制到CE目標(biāo)機(jī)硬盤/CF卡/DOC引導(dǎo)分區(qū)。(2)重新啟動計算機(jī),使用CE目標(biāo)機(jī)硬盤/CF卡/DOC引導(dǎo)系統(tǒng)。(3)調(diào)試操作系統(tǒng)。

4  評估并發(fā)布操作系統(tǒng)

4.1 定制啟動畫面

  如果要發(fā)布一個操作系統(tǒng),就要改造其外觀,加入設(shè)備名稱、單位圖標(biāo)等標(biāo)識。首先使用Photoshop或CorelDraw等圖形制作工具制作自己的BMP圖片,推薦圖片分辨率為640*480和800*600,顏色深度為256色和24位真彩色;然后將圖片復(fù)制到存放操作系統(tǒng)鏡像的存儲設(shè)備中,替換原有的標(biāo)準(zhǔn)界面文件;最后重新啟動計算機(jī)。

4.2 設(shè)置注冊機(jī)制

  軟件開發(fā)的成果需要保護(hù),一般采用注冊機(jī)制。注冊序列號是根據(jù)每臺設(shè)備硬件情況生成的。在提示注冊頁面上,根據(jù)每臺設(shè)備的硬件組成,會出現(xiàn)數(shù)量不一的序列號碼。一個最簡單的辦法是得到CPU ID或者存儲設(shè)備(如硬盤的序列號),隨機(jī)生成一個序列號,根據(jù)序列號經(jīng)過加密算法解算注冊碼。一般可以通過kenealioctrl、GetVersionEx、GetSystemInfo等函數(shù)獲得系統(tǒng)信息。具體用哪些數(shù)據(jù),可以根據(jù)需要來確定。注冊軟件做好后還應(yīng)該和操作系統(tǒng)集成。啟動操作系統(tǒng)的同時啟動輸入序列號,只有輸入了正確的序列號后才能正確使用。因為操作系統(tǒng)的鏡像文件一般都是只讀的,所以有些人將注冊信息寫入注冊表中,實際是不可靠的,最好將其加密存入文件中的某個部位。

4.3 集成嵌入式軟件

  基于32位CPU的WinCE設(shè)備嵌入式軟件由操作系統(tǒng)和應(yīng)用程序(AP)二個部分組成。在Windows CE中體現(xiàn)為NK.bin和應(yīng)用程序包AP,也可將AP集成到NK.bin中。這二種形式各自具備它們的優(yōu)缺點,如表1所示。

 

  在可能的情況下,嵌入式軟件或者應(yīng)用程序應(yīng)該集成在操作系統(tǒng)中,防止更改。當(dāng)然,也可以單獨(dú)存放。

參考文獻(xiàn)

1  Boling D.Microsoft Windows CE程序設(shè)計.北京:北京大學(xué)出版社,1999

2  Goggin T A.Windows CE高級開發(fā)指南.北京:電子工業(yè)出版社. 2000

3  Microsoft.Windows CE通信指南.北京:希望電子出版社,1999

4  Microsoft.How to Write and Use ActiveX Controls for Windows CE.http://www.microsoft.com/embeded.2003

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。

相關(guān)內(nèi)容