使用Platform Builder配置Windows CE作業系統
?http://www.21ic.com/info/images/dpj/200210/2.htm??
引言
嵌入式系統是指作業系統的和功能軟體整合於電腦硬體系統之中,簡單地說就是系統的應用軟體與系統的硬體一體化,類似於BIOS的工作方式。具有軟體代碼小、高度自動化、響應速度快等特點。Windows CE是一個功能強大的開放的32位即時嵌入式作業系統,適用於快速構建新一代記憶體少、體積小的智慧型裝置,例如工業控制器、手持式裝置、智能電話、機頂盒和零售點裝置等。不僅如此,Windows CE也為開發智能行動裝置提供了新一代可剪裁的嵌入式系統平台。Windows CE支援各種處理器產品家庭,包括x86、Xscale、ARM、MIPS和SH等系列,因此它允許開發人員選擇最理想的硬體。微軟Windows CE Platform Builder 3.0用於建立、裁剪、定製Windows CE作業系統。Platform Builder為建立Windows CE提供許多設定檔和開發調試工具。由於Windows CE適合於要求即時的和具有特定用途的多任務體系,通常需要為目標平台開發專用的硬體裝置的裝置驅動程式。只有向Winodws CE添加適當的裝置驅動程式之後外圍裝置才可以正常工作。以RTL8139網路卡驅動程式為例,說明如何通過修改設定檔添加Windows CE的裝置驅動程式。
1 建立配置Windows CE的軟硬體環境
配置和調試Windows CE需要1台高效能開發工作站和1台目標調試裝置。Platform Builder 3.0運行在Windows 2000或者以上版本的高效能開發工作站上。Platform Builder提供了建立和調試Windows CE映射NK.BIN的整合式開發環境,如嚮導和工具列,支援Active Template Library(ATL)、微軟基本類庫(MFC)和Visual Basic,為支援的處理器家庭提供編譯器、核心調試器以及各種遠端偵錯工具。目標調試平台可以是經過適當配置以後的普通PC機,也可以是嵌入式微處理器模組。開發工作站通過乙太網路或者串、並行口與目標平台串連,並將Windows CE作業系統映像檔案NK.BIN下載到目標平台。下載完成之後,Windows CE在目標平台啟動。在開發工作站上,可以使用Platform Builder提供的調試工具查看Windows CE的運行情況。乙太網路和串、並行口這兩種連線類型的差別如表1所列。
表1 乙太網路和串、並行口串連之間的差別
| 乙太網路串連 |
串、並行口串連 |
| 下載速度較快 |
下載速度較慢? |
| 開發工作站需要乙太網路網卡,目標平台需要NE2000相容的調試乙太網路網卡 |
串列口、並行口 |
| 映像檔案和調試工具都使用乙太網路 |
映像檔案使用並行口下載,目標平台的調試資訊使用串列口傳送 |
2 Platform Builder 3.0提供的設定檔
設定檔包括4種檔案類型:二進位映像組建檔案.BIB、註冊表檔案.REG、目錄和檔案配置表檔案.DAT、資料庫檔案.DB。通過修改這些設定檔可以裁剪最佳化Windows CE。使用者根據需要可以建立自己的設定檔,PB提供的主要設定檔如表2所列。
表2 設定檔列表
| .BIB檔案 |
.REG檔案 |
.DAT檔案 |
.DB檔案 |
| Common.bib |
Common.reg |
Common.dat |
Common.db |
| Dcom.bib |
Dcom.reg |
Servers.dat |
|
| Msmq.bib |
Msmq.reg |
|
|
| Platform.bib |
Platform.reg |
Platform.dat |
Platform.db |
| Project.bib |
Project.reg |
Project.dat |
|
| Wceshellfe.bib |
Wceshellfe.reg |
Wceshellfe.dat |
Wceshellfe.db |
| Wceappsfe.bib |
Wceappsfe.reg |
Wceappsfe.dat |
Wceappsfe.db |
| Config.bib |
Script reg |
|
|
2.1 二進位映像組建檔案.BIB
.BIB檔案是文字檔,標識包含在Windows CE映像中的目標模組、組件和檔案。一個.BIB檔案包含4個部分:FILES、MODULES、MEMORY和CONFIG。
(1)FILES部分
FILES分配一部分記憶體空間給待用資料檔案。這部分主要包括字型檔(.TTF)、文字檔(.TXT)、位元影像檔案(.BMP)和音效檔(.WAV)等。例如:
;Name Path Memory Type
;------ --------------------------------------- ----------- -----
Tahoma.ttf $(_FLATRELEASEDIR).ttf NK SHU
Name:在Windows CE系統中的檔案名稱。
Path:檔案在開發工作站中的位置。
Memory:檔案所屬的記憶體區。
Type:定義檔案屬性。Windows CE中的檔案有以下檔案屬性:S為系統檔案、H為隱含檔案、U為非壓縮檔、R為壓縮資源檔、C為壓縮檔。1個檔案可以同時具有幾種屬性。
上例說明NK記憶體區包含開發工作站的$(_FLATRELEASEDIR).ttf檔案。在Windows CE系統中,tahoma.ttf的檔案屬性是系統隱含的非壓縮檔。
(2)MODULES部分
列出載入在記憶體中的目標模組和組件,包括所有的可執行檔.EXE和動態連結程式庫.DLL。例如:
;Name Path Memory Type
;------- --------------------------------------- --------- ------
device.exe $(_FLATRELEASEDIR).exe NK SH
device模組載入到記憶體區。Windows CE系統中device.exe具有系統和隱含屬性。
(3)MEMEORY部分
把實體記憶體分成2個部分:資料存放區區和程式儲存區。例如
;Name Start address size(bytes) Type
;------- -------------- ------------ --------------
NK 80200000 00600000 RAMIMAGE
RAM 80800000 00800000 RAM
在Windows CE系統中,記憶體分成3種類型:RAM、RAMIMG和RESERVED。RAM規定記憶體大小;RAMIMG規定ROM空間;RESERVED為保留的記憶體空間,核心不能使用這部分記憶體,但是應用程式可以訪問。上例說明NK的起始地址是80200000,它佔有6MB記憶體空間,作為ROM用於資料存放區區。RAM在80800000開始,佔有8MB的記憶體空間,用於程式儲存區。
(4)CONFIG部分
這部分不是必不可必的。在這部分進行一些屬性設定,如是否壓縮和ROM大小等。
2.2 註冊表檔案.REG
註冊表檔案建立作業系統映像的註冊表入口。註冊表是一個資料,儲存了大量的配置資訊,包括應用程式資訊、裝置驅動程式的配置、系統配置資訊、使用者參數和其它相關資料。當目標平台冷啟動時,Makeimg.exe使用.REG檔案建立預設註冊表。Platform.REG配置與平台有關的註冊表資訊,如裝置驅動程式入口。Project.REG設定與工程有關的註冊表格。註冊表檔案的格式:
[HKEY_LOCAL_MACHINE]
“Launch10” = "shell.exe"
"Launch20" = "device.exe"
"Launch30" = "gwes.exe"
"Depend30" = "hex:14,00"
上述註冊表入口設定規定核心在啟動時必須自動運行shell.EXE和device.exe模組,gwes.EXE模組必須在device.EXE正常啟動以後才能運行。
2.3 資料庫檔案.DB
Windows CE提供內建的輕量級資料庫管理系統。Windows CE的屬性資料庫由1張包含記錄的表組成,每個記錄包含許多不同的屬性,每個屬性有3種資訊:標誌屬性的ID號、類型和值。例如:
.Record:
Field:402001f:“{000214A0-0000-0000-C000-000000000046}”
Field:42020003:15
Field:42030003:2
End
屬性資料庫是一種單層式結構,不能定義屬性資料庫之間的關係。使用Microsoft ActiveX Data Object for Windows CE(ADOCE)技術可以容量地訪問屬性資料庫,甚至可以使用SQL語句查詢資訊。
2.4 目錄分配表檔案.DAT
.DAT檔案定義Windows CE映像NK.NIB黑認的目錄和檔案結構。注意,Winodws CE不支援像Windows 9x/2000一樣的盤符磁碟機,而且沒有目前的目錄的概念。例如:
root:-Directory("Program Files")
Directory("Program Files"):Directory("MY Work")
root:-Directory("My Documents")
Directory("My Documents"):-File("MyFile.doc")
產生2個根目錄:Program Files和MyDocuments。Program Files有1個子目錄:My Work。檔案MyFile.DOC位於My Document目錄中。注意MyFile.DOC必須出現在一個.BIB檔案中,這樣,映像檔案中會有MyFile.DOC。
3 設定環境變數、產生映像檔案NK.BIN
3.1 設定環境變數
在所有設定檔中,都存在條件陳述式IF Enviroment Value……END IF。當條件成立時,IF和END IF之間的資訊包含在映像檔案NK.BIN中;條件不成立時,則不包含相關模組和檔案。通過設定環境變數可以添加或者刪除NK.BIN中的模組和組件。以.BIB檔案為例:
;Name Path Memory Type
;-------- ------------------------------------ ---------- ------
IFIMGUSB
IF CEPC_UHCI
uhci.dll $(_FLATRELEASEDIR).dll NK SH
ENDIF
IF CEPC_OHCI
ohci.dll $(_FLATRELEASEDIR).dll NK SH
ENDIF
usbd.dll $(_FLATRELEASEDIR).dll NK SH
usbhid.dll $(_FLATRELEASEDIR).dll NK SH
ENDIF
這裡IMGUSB、CEPC_UHCI、CEPC_OHCI都是邏輯型環境變數。在PB中,可以使用2種方法設定環境變數。方法1:點擊Platform菜單的Setting…,開啟平台設定對話方塊,分別輸入Variable和Value設定環境變數。方法2:點擊Build菜單的Open Build Release Directory,開啟命令提示視窗,在命令提示視窗中設定環境變數。在命令列中輸入SETIMGUSB=1,動態連結程式庫usbd.dll和usbhid.dll被包含到映像檔案NK.BIN。uhci.dll和ohci.dll是否包含在NK.BIN中,取決於環境變數CEPC_UHCI和CEPC_OHCI的設定。如果SET IMGUSB=0,KN.BIN中不包含上述4個動態連結程式庫。
3.2 Makeimg.exe工具
產生映像檔案NK.BIN是平台建立過程的最後一步,也是配置Windows CE的最終目標。Makeimg.exe使用全部設定檔把目標模組和檔案合并成一個惟一的Windows CE映像檔案NK.BIN。圖1所示為NK.BIN的產生過程。
Makeimg產生NK.BIN的具體步驟:
①全並設定檔:所有的.BIB檔案合并成CE.BIB。CE.BIB包含映像NK.BIN中的所有檔案;所有.REG檔案合并成REGINIT.INT;所有.DAT檔案合并在修改設定檔時,一定要注意CE.BIB、REGINIT.INI、INITOBJ.DAT、INITDB.INI是是間檔案,修改這些檔案不能配置Windows CE。
②將REGINIT.INI檔案壓縮成一個二進位檔案DEFAULT.FDF。
③根據環境變數COUNTRY的設定,替換模組中的資源,使Windows CE映像滿足特定語言的需要,最後產生二進位映像檔案NK.BIN。
4 修改設定檔添加RTL8139網卡驅動
由於Windows CE具有完全不同於其它Windows作業系統的核心,在其它作業系統上啟動並執行裝置驅動程式不能在Windows CE上直接運行。原裝置驅動程式代碼必須經過適當修改或者全部重寫以後才能在Windows CE系統上運行。Windows CE支援2種類型的裝置驅動程式;本機裝置驅動程式和流介面裝置驅動程式。本機裝置驅動程式通常與基於Windows CE的目標平台有著緊密的串連,而且每種本機裝置驅動程式有精確的和特殊的目標的,這部分驅動程式一般由原始裝置製造商(OEM)提供。流介面裝置驅動程式是在使用者一級的動態連結程式庫(DLL),用於驅動可安裝的外圍市長。RTL8139網路卡驅動程式是流介面裝置驅動程式。使用Platform Builder或者Embedded Visual C++ 3.0產生RTL8139網路卡驅動程式RTL8139.DLL.將(_FLATRELEASEDIR)中,分別修改Platform.BIB和Platform.REG。
①向Platform.BIB檔案中添加下列語句:
MEMORY
RTL8139 8090000 00010000 RESERVED
MODULES
Rtl8139.dll $(_FLARTELEASEDIR).dll NK SH
②向Platform.REG中添加下列語句:
[HKEY_LOCAL_MACHINE]
“DisplayName”=“Realtek RTL8139 based Fast
Ethernet Driver”
“Group”=“NDIS”
“ImagePath” = “rtl8139.dll”
[HKEY_LOCAL_MACHINE]
“Route” = “Rmulti_sz: TL81391”
[HKEY_LOCAL_MACHINE]
“DisplayName” = “Realtek RTL8139 based Fast Ethernet Driver”
“Group” = “NDIS”
“ImagePath” = “rtl8139.dll”
[HKEY_LOCAL_MACHINE]
“BusNumber”= dword:0
“BusType”=dword:5
“ScanMethod”=dword:0
“SharedInterrupt”= dword:1
“PhysicalAddressBase”=dword:001a0000
[HKEY_LOCAL_MACHINE]
“EnableDHCP”=dword:0
;MULTI_SZ類型
“DefaultGateway”=“”
;0代表廣播位址(或者255.255.255.255)
“UseZerBroadcast”=dword:0
;NULTI_SZ類型,IP地址
“IpAddress”=“202.2.4.77.16”
;MULTI_SZ類型,上面IP地址的子網路遮罩
“Subnetmask”=“255.255255.0”
[HKEY_LOCAL_MACHINE]
“Bind”=multi_sz:“RTL81391”
③Makeimg產生NK.BIN
在命令提示視窗輸入Makeimg命令,產生新的Windows CE映像NK.BIN。下載NK.BIN到目標平台,通過乙太網路電纜直接連接開發工作站網卡和目標平台的RTL8139網卡。FRTL8139網卡的IP地址必須和開發工作站的IP地址在同一子網中,這樣,在開始工作站運行ping命令時才會有響應。
5 總結
微軟Windows CE Platform Builder 3.0整合式開發環境包含一系列開發工具、內容相關性功能表、工具列和快速鍵。Platform Builder建立、測試、裁剪Windows CE的平台和組件。熟練使用Platform Builder提供的設定檔和開發調試工具可以快速定製適合目標平台的Windows CE作業系統,縮短平台開發週期。適當修改和設定Platform Builder的設定檔.BIB、.REG、.DAT、.DB可以裁剪和添加相關組件,正確配置各種裝置驅動程式。Windows CE一般應用於特定的嵌入式系統中,在許多情況下需要向目標平台添加外部裝置和裝置驅動程式。本文通過修改Platform.BIB和Platform.REG設定檔在Windows CE中加入RTL8139網路卡驅動程式。開發Windows CE的軟硬體環境建立之後,把工作站通過插入到目標平台的PCI插槽中,開始工作站通過插在目標台上的NE2000相容網卡下載映像檔案NK.BIN到目標平台。Windows CE下常啟動以後,網路電纜改成和RTL8139網卡串連。開發工作站和目標平台之間使用PPP協議正常通訊