嵌入式系統是指操作系統的和功能軟件集成于計算機硬件系統之中,簡單地說就是系統的應用軟件與系統的硬件一體化,類似于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的集成開發環境,如向導和工具欄,支持活動模板庫(ATL)、微軟基本類庫(MFC)和Visual Basic,為支持的處理器家庭提供編譯器、內核調試器以及各種遠程調試工具。目標調試平臺可以是經過適當配置以后的普通PC機,也可以是嵌入式微處理器模塊。開發工作站通過以太網或者串、并行口與目標平臺連接,并將Windows CE操作系統映像文件NK.BIN下載到目標平臺。下載完成之后,Windows CE在目標平臺啟動。在開發工作站上,可以使用Platform Builder提供的調試工具查看Windows CE的運行情況。以太網和串、并行口這兩種連接類型的差別如表1所列。
表1 以太網和串、并行口連接之間的差別
2、 Platform Builder 3.0提供的配置文件
配置文件包括4種文件類型:二進制映像生成文件.BIB、注冊表文件.REG、目錄和文件分配表文件.DAT、數據庫文件.DB。通過修改這些配置文件可以裁剪優化Windows CE。用戶根據需要可以創建自己的配置文件,PB提供的主要配置文件如表2所列。
表2 配置文件列表
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工具
評論
查看更多