1 建立配置 Windows CE的軟硬件環(huán)境配置和調(diào)試Windows CE需要1臺(tái)高性能開(kāi)發(fā)工作站和1臺(tái)目標(biāo)調(diào)試設(shè)備。Platform Builder 4.2運(yùn)行在Windows 2000或者以上版本的高性能開(kāi)發(fā)工作站上。Platform Builder提供了創(chuàng)建和調(diào)試Windows CE映射NK.BIN的集成開(kāi)發(fā)環(huán)境,如向
1 建立配置
Windows CE的軟硬件環(huán)境配置和調(diào)試Windows CE需要1臺(tái)高性能開(kāi)發(fā)工作站和1臺(tái)目標(biāo)調(diào)試設(shè)備。Platform Builder 4.2運(yùn)行在Windows 2000或者以上版本的高性能開(kāi)發(fā)工作站上。Platform Builder提供了創(chuàng)建和調(diào)試Windows CE映射NK.BIN的集成開(kāi)發(fā)環(huán)境,如向?qū)Ш凸ぞ邫冢С只顒?dòng)模板庫(kù)(ATL)、微軟基本類庫(kù)(MFC)等,為支持的處理器提供編譯器、內(nèi)核調(diào)試器以及各種遠(yuǎn)程調(diào)試工具。目標(biāo)調(diào)試平臺(tái)可以是經(jīng)過(guò)適當(dāng)配置以后的普通PC機(jī),也可以是嵌入式微處理器模塊。開(kāi)發(fā)工作站通過(guò)以太網(wǎng)或者串、并行口與目標(biāo)平臺(tái)連接,并將Windows CE操作系統(tǒng)映像文件NK.BIN下載到目標(biāo)平臺(tái)。下載完成之后,Windows CE在目標(biāo)平臺(tái)啟動(dòng)。在開(kāi)發(fā)工作站上,可以使用Platform Builder提供的調(diào)試工具查看Windows CE的運(yùn)行情況。以太網(wǎng)和串、并行口這兩種連接類型的差別是:以太網(wǎng)連接,下載速度較快;串、并行口連接,下載速度較慢。開(kāi)發(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ù)庫(kù)文件.DB。通過(guò)修改這些配置文件可以裁剪優(yōu)化Windows CE。用戶根據(jù)需要可以創(chuàng)建自己的配置文件,PB提供的主要配置文件如下表所列。
配置文件列表
.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:文件在開(kāi)發(fā)工作站中的位置。
Memory:文件所屬的內(nèi)存區(qū)。
Type:定義文件屬性。Windows CE中的文件有以下文件屬性:S為系統(tǒng)文件、H為隱含文件、U為非壓縮文件、R為壓縮資源文件、C為壓縮文件。1個(gè)文件可以同時(shí)具有幾種屬性。
上例說(shuō)明NK內(nèi)存區(qū)包含開(kāi)發(fā)工作站的$(_FLATRELEASEDIR).ttf文件。在Windows CE系統(tǒng)中,tahoma.ttf的文件屬性是系統(tǒng)隱含的非壓縮文件。
(2)MODULES部分
列出加載在內(nèi)存中的目標(biāo)模塊和組件,包括所有的可執(zhí)行文件.EXE和動(dòng)態(tài)鏈接庫(kù).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)用程序可以訪問(wèn)。上例說(shuō)明NK的起始地址是80200000,它占有6MB內(nèi)存空間,作為ROM用于數(shù)據(jù)存儲(chǔ)區(qū)。RAM在80800000開(kāi)始,占有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ù)庫(kù)文件.DB
Windows CE提供內(nèi)置的輕量級(jí)數(shù)據(jù)庫(kù)管理系統(tǒng)。Windows CE的屬性數(shù)據(jù)庫(kù)由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ù)庫(kù)是一種平面結(jié)構(gòu),不能定義屬性數(shù)據(jù)庫(kù)之間的關(guān)系。使用Microsoft ActiveX Data Object for Windows CE(ADOCE)技術(shù)可以容量地訪問(wèn)屬性數(shù)據(jù)庫(kù),甚至可以使用SQL語(yǔ)句查詢信息。
2.4 目錄分配表文件.DAT
.DAT文件定義Windows CE映像NK.NIB黑認(rèn)的目錄和文件結(jié)構(gòu)。注意,Winodws CE不支持像Windows 9x/2000一樣的盤符驅(qū)動(dòng)器,而且沒(méi)有當(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)境變量
在所有配置文件中,都存在條件語(yǔ)句IF Enviroment Value……END IF。當(dāng)條件成立時(shí),IF和END IF之間的信息包含在映像文件NK.BIN中;條件不成立時(shí),則不包含相關(guān)模塊和文件。通過(guò)設(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…,打開(kāi)平臺(tái)設(shè)置對(duì)話框,分別輸入Variable和Value設(shè)置環(huán)境變量。方法2:點(diǎn)擊Build菜單的Open Build Release Directory,打開(kāi)命令提示窗口,在命令提示窗口中設(shè)置環(huán)境變量。在命令行中輸入SETIMGUSB=1,動(dòng)態(tài)鏈接庫(kù)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)鏈接庫(kù)。
3.2 Makeimg.exe工具
生成映像文件NK.BIN是平臺(tái)創(chuàng)建過(guò)程的最后一步,也是配置Windows CE的最終目標(biāo)。Makeimg.exe使用全部配置文件把目標(biāo)模塊和文件合并成一個(gè)惟一的Windows CE映像文件NK.BIN。圖1所示為NK.BIN的生成過(guò)程。
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映像滿足特定語(yǔ)言的需要,最后生成二進(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)過(guò)適當(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)鏈接庫(kù)(DLL),用于驅(qū)動(dò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文件中添加下列語(yǔ)句:
MEMORY
RTL8139 8090000 00010000 RESERVED
MODULES
Rtl8139.dll $(_FLARTELEASEDIR).dll NK SH
②向Platform.REG中添加下列語(yǔ)句:
[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),通過(guò)以太網(wǎng)電纜直接連接開(kāi)發(fā)工作站網(wǎng)卡和目標(biāo)平臺(tái)的RTL8139網(wǎng)卡。FRTL8139網(wǎng)卡的IP地址必須和開(kāi)發(fā)工作站的IP地址在同一子網(wǎng)中,這樣,在開(kāi)始工作站運(yùn)行ping命令時(shí)才會(huì)有響應(yīng)。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com