使用Platform Builder配置Windows CE操作系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
嵌入式系統(tǒng)是指操作系統(tǒng)的和功能軟件集成于計(jì)算機(jī)硬件系統(tǒng)之中,簡(jiǎn)單地說就是系統(tǒng)的應(yīng)用軟件與系統(tǒng)的硬件一體化,類似于BIOS的工作方式。具有軟件代碼小、高度自動(dòng)化、響應(yīng)速度快等特點(diǎn)。Windows CE是一個(gè)功能強(qiáng)大的開放的32位實(shí)時(shí)嵌入式操作系統(tǒng),適用于快速構(gòu)建新一代內(nèi)存少、體積小的智能設(shè)備,例如工業(yè)控制器、手持式設(shè)備、智能電話、機(jī)頂盒和零售點(diǎn)設(shè)備等。不僅如此,Windows CE也為開發(fā)智能移動(dòng)設(shè)備提供了新一代可剪裁的嵌入式系統(tǒng)平臺(tái)。Windows CE支持各種處理器產(chǎn)品家庭,包括x86、Xscale、ARM、MIPS和SH等系列,因此它允許開發(fā)人員選擇最理想的硬件。微軟Windows CE Platform Builder 3.0用于創(chuàng)建、裁剪、定制Windows CE操作系統(tǒng)。Platform Builder為創(chuàng)建Windows CE提供許多配置文件和開發(fā)調(diào)試工具。由于Windows CE適合于要求實(shí)時(shí)的和具有特定用途的多任務(wù)體系,通常需要為目標(biāo)平臺(tái)開發(fā)專用的硬件設(shè)備的設(shè)備驅(qū)動(dòng)程序。只有向Winodws CE添加適當(dāng)?shù)脑O(shè)備驅(qū)動(dòng)程序之后外圍設(shè)備才可以正常工作。以RTL8139網(wǎng)卡驅(qū)動(dòng)程序?yàn)槔?,說明如何通過修改配置文件添加Windows CE的設(shè)備驅(qū)動(dòng)程序。
1 建立配置Windows CE的軟硬件環(huán)境
配置和調(diào)試Windows CE需要1臺(tái)高性能開發(fā)工作站和1臺(tái)目標(biāo)調(diào)試設(shè)備。Platform Builder 3.0運(yùn)行在Windows 2000或者以上版本的高性能開發(fā)工作站上。Platform Builder提供了創(chuàng)建和調(diào)試Windows CE映射NK.BIN的集成開發(fā)環(huán)境,如向?qū)Ш凸ぞ邫?,支持活?dòng)模板庫(ATL)、微軟基本類庫(MFC)和Visual Basic,為支持的處理器家庭提供編譯器、內(nèi)核調(diào)試器以及各種遠(yuǎn)程調(diào)試工具。目標(biāo)調(diào)試平臺(tái)可以是經(jīng)過適當(dāng)配置以后的普通PC機(jī),也可以是嵌入式微處理器模塊。開發(fā)工作站通過以太網(wǎng)或者串、并行口與目標(biāo)平臺(tái)連接,并將Windows CE操作系統(tǒng)映像文件NK.BIN下載到目標(biāo)平臺(tái)。下載完成之后,Windows CE在目標(biāo)平臺(tái)啟動(dòng)。在開發(fā)工作站上,可以使用Platform Builder提供的調(diào)試工具查看Windows CE的運(yùn)行情況。以太網(wǎng)和串、并行口這兩種連接類型的差別如表1所列。
表1 以太網(wǎng)和串、并行口連接之間的差別
以太網(wǎng)連接 | 串、并行口連接 |
下載速度較快 | 下載速度較慢 |
開發(fā)工作站需要以太網(wǎng)網(wǎng)卡,目標(biāo)平臺(tái)需要NE2000兼容的調(diào)試以太網(wǎng)網(wǎng)卡 | 串行口、并行口 |
映像文件和調(diào)試工具都使用以太網(wǎng) | 映像文件使用并行口下載,目標(biāo)平臺(tái)的調(diào)試信息使用串行口傳送 |
2 Platform Builder 3.0提供的配置文件
配置文件包括4種文件類型:二進(jìn)制映像生成文件.BIB、注冊(cè)表文件.REG、目錄和文件分配表文件.DAT、數(shù)據(jù)庫文件.DB。通過修改這些配置文件可以裁剪優(yōu)化Windows CE。用戶根據(jù)需要可以創(chuàng)建自己的配置文件,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 二進(jìn)制映像生成文件.BIB
.BIB文件是文本文件,標(biāo)識(shí)包含在Windows CE映像中的目標(biāo)模塊、組件和文件。一個(gè).BIB文件包含4個(gè)部分:FILES、MODULES、MEMORY和CONFIG。
(1)FILES部分
FILES分配一部分內(nèi)存空間給靜態(tài)數(shù)據(jù)文件。這部分主要包括字體文件(.TTF)、文本文件(.TXT)、位圖文件(.BMP)和聲音文件(.WAV)等。例如:
;Name Path Memory Type
;------ --------------------------------------- ----------- -----
Tahoma.ttf $(_FLATRELEASEDIR).ttf NK SHU
Name:在Windows CE系統(tǒng)中的文件名。
Path:文件在開發(fā)工作站中的位置。
Memory:文件所屬的內(nèi)存區(qū)。
Type:定義文件屬性。Windows CE中的文件有以下文件屬性:S為系統(tǒng)文件、H為隱含文件、U為非壓縮文件、R為壓縮資源文件、C為壓縮文件。1個(gè)文件可以同時(shí)具有幾種屬性。
上例說明NK內(nèi)存區(qū)包含開發(fā)工作站的$(_FLATRELEASEDIR).ttf文件。在Windows CE系統(tǒng)中,tahoma.ttf的文件屬性是系統(tǒng)隱含的非壓縮文件。
(2)MODULES部分
列出加載在內(nèi)存中的目標(biāo)模塊和組件,包括所有的可執(zhí)行文件.EXE和動(dòng)態(tài)鏈接庫.DLL。例如:
;Name Path Memory Type
;------- --------------------------------------- --------- ------
device.exe $(_FLATRELEASEDIR).exe NK SH
device模塊加載到內(nèi)存區(qū)。Windows CE系統(tǒng)中device.exe具有系統(tǒng)和隱含屬性。
(3)MEMEORY部分
把物理內(nèi)存分成2個(gè)部分:數(shù)據(jù)存儲(chǔ)區(qū)和程序存儲(chǔ)區(qū)。例如
;Name Start address size(bytes) Type
;------- -------------- ------------ --------------
NK 80200000 00600000 RAMIMAGE
RAM 80800000 00800000 RAM
在Windows CE系統(tǒng)中,內(nèi)存分成3種類型:RAM、RAMIMG和RESERVED。RAM規(guī)定內(nèi)存大小;RAMIMG規(guī)定ROM空間;RESERVED為保留的內(nèi)存空間,內(nèi)核不能使用這部分內(nèi)存,但是應(yīng)用程序可以訪問。上例說明NK的起始地址是80200000,它占有6MB內(nèi)存空間,作為ROM用于數(shù)據(jù)存儲(chǔ)區(qū)。RAM在80800000開始,占有8MB的內(nèi)存空間,用于程序存儲(chǔ)區(qū)。
(4)CONFIG部分
這部分不是必不可必的。在這部分進(jìn)行一些屬性設(shè)置,如是否壓縮和ROM大小等。
2.2 注冊(cè)表文件.REG
注冊(cè)表文件建立操作系統(tǒng)映像的注冊(cè)表入口。注冊(cè)表是一個(gè)數(shù)據(jù),存儲(chǔ)了大量的配置信息,包括應(yīng)用程序信息、設(shè)備驅(qū)動(dòng)程序的配置、系統(tǒng)配置信息、用戶參數(shù)和其它相關(guān)數(shù)據(jù)。當(dāng)目標(biāo)平臺(tái)冷啟動(dòng)時(shí),Makeimg.exe使用.REG文件創(chuàng)建默認(rèn)注冊(cè)表。Platform.REG配置與平臺(tái)有關(guān)的注冊(cè)表信息,如設(shè)備驅(qū)動(dòng)程序入口。Project.REG設(shè)置與工程有關(guān)的注冊(cè)表格。注冊(cè)表文件的格式:
[HKEY_LOCAL_MACHINE]
“Launch10” = "shell.exe"
"Launch20" = "device.exe"
"Launch30" = "gwes.exe"
"Depend30" = "hex:14,00"
上述注冊(cè)表入口設(shè)置規(guī)定內(nèi)核在啟動(dòng)時(shí)必須自動(dòng)運(yùn)行shell.EXE和device.exe模塊,gwes.EXE模塊必須在device.EXE正常啟動(dòng)以后才能運(yùn)行。
2.3 數(shù)據(jù)庫文件.DB
Windows CE提供內(nèi)置的輕量級(jí)數(shù)據(jù)庫管理系統(tǒng)。Windows CE的屬性數(shù)據(jù)庫由1張包含記錄的表組成,每個(gè)記錄包含許多不同的屬性,每個(gè)屬性有3種信息:標(biāo)志屬性的ID號(hào)、類型和值。例如:
.Record:
Field:402001f:“{000214A0-0000-0000-C000-000000000046}”
Field:42020003:15
Field:42030003:2
End
屬性數(shù)據(jù)庫是一種平面結(jié)構(gòu),不能定義屬性數(shù)據(jù)庫之間的關(guān)系。使用Microsoft ActiveX Data Object for Windows CE(ADOCE)技術(shù)可以容量地訪問屬性數(shù)據(jù)庫,甚至可以使用SQL語句查詢信息。
2.4 目錄分配表文件.DAT
.DAT文件定義Windows CE映像NK.NIB黑認(rèn)的目錄和文件結(jié)構(gòu)。注意,Winodws CE不支持像Windows 9x/2000一樣的盤符驅(qū)動(dòng)器,而且沒有當(dāng)前目錄的概念。例如:
root:-Directory("Program Files")
Directory("Program Files"):Directory("MY Work")
root:-Directory("My Documents")
Directory("My Documents"):-File("MyFile.doc")
生成2個(gè)根目錄:Program Files和MyDocuments。Program Files有1個(gè)子目錄:My Work。文件MyFile.DOC位于My Document目錄中。注意MyFile.DOC必須出現(xiàn)在一個(gè).BIB文件中,這樣,映像文件中會(huì)有MyFile.DOC。
3 設(shè)置環(huán)境變量、生成映像文件NK.BIN
3.1 設(shè)置環(huán)境變量
在所有配置文件中,都存在條件語句IF Enviroment Value……END IF。當(dāng)條件成立時(shí),IF和END IF之間的信息包含在映像文件NK.BIN中;條件不成立時(shí),則不包含相關(guān)模塊和文件。通過設(shè)置環(huán)境變量可以添加或者刪除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都是邏輯型環(huán)境變量。在PB中,可以使用2種方法設(shè)置環(huán)境變量。方法1:點(diǎn)擊Platform菜單的Setting…,打開平臺(tái)設(shè)置對(duì)話框,分別輸入Variable和Value設(shè)置環(huán)境變量。方法2:點(diǎn)擊Build菜單的Open Build Release Directory,打開命令提示窗口,在命令提示窗口中設(shè)置環(huán)境變量。在命令行中輸入SETIMGUSB=1,動(dòng)態(tài)鏈接庫usbd.dll和usbhid.dll被包含到映像文件NK.BIN。uhci.dll和ohci.dll是否包含在NK.BIN中,取決于環(huán)境變量CEPC_UHCI和CEPC_OHCI的設(shè)置。如果SET IMGUSB=0,KN.BIN中不包含上述4個(gè)動(dòng)態(tài)鏈接庫。
3.2 Makeimg.exe工具
生成映像文件NK.BIN是平臺(tái)創(chuàng)建過程的最后一步,也是配置Windows CE的最終目標(biāo)。Makeimg.exe使用全部配置文件把目標(biāo)模塊和文件合并成一個(gè)惟一的Windows CE映像文件NK.BIN。圖1所示為NK.BIN的生成過程。
Makeimg生成NK.BIN的具體步驟:
①全并配置文件:所有的.BIB文件合并成CE.BIB。CE.BIB包含映像NK.BIN中的所有文件;所有.REG文件合并成REGINIT.INT;所有.DAT文件合并在修改配置文件時(shí),一定要注意CE.BIB、REGINIT.INI、INITOBJ.DAT、INITDB.INI是是間文件,修改這些文件不能配置Windows CE。
②將REGINIT.INI文件壓縮成一個(gè)二進(jìn)制文件DEFAULT.FDF。
③根據(jù)環(huán)境變量COUNTRY的設(shè)置,替換模塊中的資源,使Windows CE映像滿足特定語言的需要,最后生成二進(jìn)制映像文件NK.BIN。
4 修改配置文件添加RTL8139網(wǎng)卡驅(qū)動(dòng)
由于Windows CE具有完全不同于其它Windows操作系統(tǒng)的內(nèi)核,在其它操作系統(tǒng)上運(yùn)行的設(shè)備驅(qū)動(dòng)程序不能在Windows CE上直接運(yùn)行。原設(shè)備驅(qū)動(dòng)程序代碼必須經(jīng)過適當(dāng)修改或者全部重寫以后才能在Windows CE系統(tǒng)上運(yùn)行。Windows CE支持2種類型的設(shè)備驅(qū)動(dòng)程序;本機(jī)設(shè)備驅(qū)動(dòng)程序和流接口設(shè)備驅(qū)動(dòng)程序。本機(jī)設(shè)備驅(qū)動(dòng)程序通常與基于Windows CE的目標(biāo)平臺(tái)有著緊密的連接,而且每種本機(jī)設(shè)備驅(qū)動(dòng)程序有精確的和特殊的目標(biāo)的,這部分驅(qū)動(dòng)程序一般由原始設(shè)備制造商(OEM)提供。流接口設(shè)備驅(qū)動(dòng)程序是在用戶一級(jí)的動(dòng)態(tài)鏈接庫(DLL),用于驅(qū)動(dòng)可安裝的外圍市長(zhǎng)。RTL8139網(wǎng)卡驅(qū)動(dòng)程序是流接口設(shè)備驅(qū)動(dòng)程序。使用Platform Builder或者Embedded Visual C++ 3.0生成RTL8139網(wǎng)卡驅(qū)動(dòng)程序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地址的子網(wǎng)掩碼
“Subnetmask”=“255.255255.0”
[HKEY_LOCAL_MACHINE]
“Bind”=multi_sz:“RTL81391”
③Makeimg生成NK.BIN
在命令提示窗口輸入Makeimg命令,生成新的Windows CE映像NK.BIN。下載NK.BIN到目標(biāo)平臺(tái),通過以太網(wǎng)電纜直接連接開發(fā)工作站網(wǎng)卡和目標(biāo)平臺(tái)的RTL8139網(wǎng)卡。FRTL8139網(wǎng)卡的IP地址必須和開發(fā)工作站的IP地址在同一子網(wǎng)中,這樣,在開始工作站運(yùn)行ping命令時(shí)才會(huì)有響應(yīng)。
5 總結(jié)
微軟Windows CE Platform Builder 3.0集成開發(fā)環(huán)境包含一系列開發(fā)工具、上下文相關(guān)菜單、工具欄和快捷鍵。Platform Builder創(chuàng)建、測(cè)試、裁剪Windows CE的平臺(tái)和組件。熟練使用Platform Builder提供的配置文件和開發(fā)調(diào)試工具可以快速定制適合目標(biāo)平臺(tái)的Windows CE操作系統(tǒng),縮短平臺(tái)開發(fā)周期。適當(dāng)修改和設(shè)置Platform Builder的配置文件.BIB、.REG、.DAT、.DB可以裁剪和添加相關(guān)組件,正確配置各種設(shè)備驅(qū)動(dòng)程序。Windows CE一般應(yīng)用于特定的嵌入式系統(tǒng)中,在許多情況下需要向目標(biāo)平臺(tái)添加外部設(shè)備和設(shè)備驅(qū)動(dòng)程序。本文通過修改Platform.BIB和Platform.REG配置文件在Windows CE中加入RTL8139網(wǎng)卡驅(qū)動(dòng)程序。開發(fā)Windows CE的軟硬件環(huán)境建立之后,把工作站通過插入到目標(biāo)平臺(tái)的PCI插槽中,開始工作站通過插在目標(biāo)臺(tái)上的NE2000兼容網(wǎng)卡下載映像文件NK.BIN到目標(biāo)平臺(tái)。Windows CE下常啟動(dòng)以后,網(wǎng)絡(luò)電纜改成和RTL8139網(wǎng)卡連接。開發(fā)工作站和目標(biāo)平臺(tái)之間使用PPP協(xié)議正常通信。