第三章 Windows CE 環境介紹
3.1 Windows CE 系統架構
Windows CE系統是一種分層架構,如圖3-1所示,由下而上分別為硬體層 (Hardware Layer)、OEM層(OEM Layer)、作業系統層(Operating System Layer) 以及應用層(Application Layer)。每一層都由各種功能的模組所組成,每個模 組又可細分成不同的元件所構成。這種分層架構的好處是儘量將硬體和軟體、作 業系統與應用程式分離開,以利於開發人員可以細部分工,硬體開發人員只需專 注硬體層的開發,而軟體開發人員也只需專注軟體層開發,這樣可以達到有效的 分工,不會讓開發人員浪費太多時間在自己不熟悉的層級上。也因此Windows CE 可以支援多種平台如X86、ARM、MIPS等,硬體廠商寫好硬體層(Hardware Layer)、
OEM層(OEM Layer)的開發,即可讓該硬體支援Windows CE系統。
30
圖 3-1 Windows CE 系統架構 z 硬體層(Hardware Layer)
此層負責所有底層的周邊硬體設備,例如螢幕、按鍵、Camera 等硬體 設施。
z OEM 層(OEM Layer)
此層負責底層硬體與上層作業系統層(Operating System Layer)之間的 溝通橋樑,且也負責設備開機所需的 Boot Loader 和硬體要跟系統核心 (Kernel)溝通的 OAL 模組,而以上這些功能都由硬體廠商開發包覆在主 機板支援套件(BSP)內。
z 作業系統層(Operating System Layer)
此層就包括最重要的系統核心(Kernel)、多媒體技術、通信網路服務等 系統應用相關介面。
z 應用層(Application Layer)
此層就比較廣泛,也跟一般開發者比較相關,舉凡一些 Windows CE 的 應用程式、使用者介面或網際網路 Client 端的服務都是這層所管轄的 範圍。
31
3.1.1 BSP(Board Support Package)
BSP 稱為主機板支援套件,是由硬體廠商所開發提供的軟體套件,所做的功 能即是 OEM 層(OEM Layer)的所有工作,因此套件包括啟動程式(Boot Loader)、
OEM 配置程式(OAL)、標準開發版(SDB)以及相關硬體驅動程式。對於嵌入式系統 來說不像 PC 具有各種工業標準,它往往是依需求功能的不同而有各自不同的硬 體環境,這種多變的硬體環境決定了無法完全由作業系統來實現軟體與硬體之間 的無關性,因此才需將系統中與硬體有直接關係的一層軟體獨立出來變成 BSP。
所以每個開發版都有一個由硬體廠商所提供的 BSP,而此 BSP 內含各元件所做的 事如表 3-1 所示
元件 說明
啟動程式(Boot loader) 系統啟動時,啟動程式會下載作業系統(OS)映像檔。
OEM 配置(OAL) 連結 kernel,管理硬體並初始化。
驅動程式 負責驅動主板或週邊的設備。
組態檔 藉由環境變數或修改*.bib 和*.reg 檔案,可將 BSP 重新組態。
表 3-1 BSP 內元件功能
BSP 的主要功能在於配置系統硬體使其工作在正常狀態,並且完成硬體與軟體之 間的資料交流,為 OS 及上層應用程式提供一個與硬體無關的軟體平台。
3.1.2 Boot Loader
當系統啟動就會執行 Boot Loader,並且初始化一些設備之後,接著就會將 OS 的映像檔(image)載入到記憶體中,並且跳至記憶體的起始位置,此時的主控 權便在 OS 手中。
因為嵌入式系統通常並沒有 BIOS,所以開機程序與 PC 並不一樣。開機時,
boot loader 要負責初始化的工作,包括:配置記憶體、初始化所有的週邊、關 閉 I/O 中斷等。而硬體開機啟動位址通常是在 0x00000000 的位置,所以為了讓
32
系統正常啟動,要將 boot loader 設定在 0x00000000。而 Boot loader 工作流 程如圖 3-2 所示。
CPU初始化
將OS Kernel 載入到RAM
啟動MMU及 快取記憶體
複製區段資料
主機板初始化
取得IP位址
初始化TFTP
下載*.bin檔
安裝PB選取 各種設定
圖 3-2 Boot loader 工作流程
首先 Boot Loader 將對 CPU 做初始化動作,然後將作業系統(OS)的核心 (Kernel)配置到記憶體中,接著啟動記憶體管理元件(MMU)以及快取記憶體 (Flash),記憶體管理開啟後即可複製區段的資料(如主機板所要用到的資訊等) 到記憶體中,此時主機板做初始化動作周邊硬體(如網路、按鍵等)也楚於準備狀 態,這時就可透過使用者輸入或預設的 IP 位址來初始化 TFTP 這套資訊傳輸套 件,並藉由這套件來下載*.bin 檔,所謂*.bin 檔是 Platform Builder 根據所選 的系統功能,所為我們產生的一種二進制映像檔,這種檔案格式可以使資料數量 最小化並可直接下載到目標設備,不需透過輸入指令來操作。當*.bin 檔下載到 目標設備後,它會依據設計者在 Platform Builder 所選取的基本功能(如 IE、
Media Player、PC Card Storage 等)逐一的安裝在作業系統(OS)核心(Kernel) 上,至此一個完整的作業系統即被安裝在目標設備中並可開始正常使用。
33
在 Windows CE 中 Boot Loader 的載入有三種方式 一、乙太網路載入
Boot Loader 名稱為 Eboot.nb0,透過 Ethernet 的方式下載並啟動。
二、序列埠載入
Boot Loader 名稱為 Sboot.nb0,透過序列埠(RS-232)的方式下載並啟動。
三、USB 載入
USB 裝置可以模擬成網路卡或序列埠以下載並啟動 Boot Loader。
3.1.3 OEM adaptation layer(OAL)
OAL 是介於 Windows CE Kernel 與硬體之間的溝通橋樑,OAL 是包含在硬體 開發商所提供的 BSP 中,主要功能是中斷處理、電源管理、計時器及 Clock 等。