Chapter 5 驅動程式
5-2
大綱
加強的Windows CE .NET驅動程式裝置驅動程式架構裝置驅動程式串流介面驅動程式 USB驅動程式架構 NDIS驅動程式架構
5-3
驅動程式
驅動程式是一種軟體介於應用程式與硬體之間負責作業系統與硬體間的溝通不同的驅動程式對應不同的硬體控制硬體運作
5-4
Windows CE .NET 驅動程式特色
以拖拉方式開發專案 支援更多硬體平台與理器 透過裝置介面將裝置驅動程式分類 支援廣泛的電源管理 有彈性的電源控制 加入 CPS驅動程式以支援 CPU原生周邊設備 增加支援新類別裝置驅動程式 簡單移轉驅動程式至新平台
5-5
大綱
加強的Windows CE .NET驅動程式裝置驅動程式架構裝置驅動程式串流介面驅動程式 USB驅動程式架構 NDIS驅動程式架構
5-6
裝置驅動程式架構
驅動程式啟動方式– GWES– 裝置管理– 檔案系統模組
裝置驅動程式
5-7
裝置驅動程式架構 (cont.)
GWESFile
SystemDevice
Manager
Device Drivers
5-8
GWES
視窗– 回送訊息至對應的視窗
使用者– 接收使用者的訊息或事件
圖形介面– 提供文字與圖形表現的模組
5-9
Device Manager (cont.)
在 Windows CE中啟動 Device.exe偵測使用者安裝的周邊設備啟用串流介面驅動程式搜尋合適的裝置驅動程式讀寫註冊鍵值以載入與追踨驅動程式御載長時間不需使用的裝置驅動程式
5-10
Device Manager
Device.exe(I/O Resource Mananger)
Regenum.dll
Regenum.dll(for ISA busses)
Pcibus.dllKernel
loads
loads
loads
loads
loadsRegistry enumerator is re-entrant
5-11
File System (cont.)
處理物件儲存 (Object Store)– 檔案系統– 註冊表– Windows CE專有資料庫
可自行建立檔案系統– 可透過Win 32 API存取檔案系統
5-12
File System (cont.)
註冊表– 應用程式– 驅動程式– 使用者設定– 系統設定– 其他資料– 提供儲存設定資料的地方
5-13
File System
Windows CE有特有資料庫– 只有一個資料表– 非關連資料庫– 儲存記憶體、唯讀記憶體或可案裝的檔案系統
5-14
大綱
加強的Windows CE .NET驅動程式裝置驅動程式架構裝置驅動程式串流介面驅動程式 USB驅動程式架構 NDIS驅動程式架構
5-15
裝置驅動程式
如同一般作業系統負責管理驅動裝置使用動態鏈結庫 (DLL)載入驅動程式以標準Windows CE 中 Win32 API執行不需透過WDM (Windows Devices Model)處理
5-16
內建驅動程式 vs. 可安裝驅動程式
內建驅動程式– 電池、 LED– 以靜態方式與 GWES連結– 不能以單獨 DLL存在系統
可安裝驅動程式– PCMCIA 、 Serial 、 Ethernet– 硬體獨立廠商必須撰寫– 裝置管理員載入才能驅動裝置– 須手動安裝到系統
5-17
原生裝置驅動程式
由 GWES管理 依平台上的內建裝置而生 由 OEM內建在Windows CE平台上 系統啟動時就將驅動程式載入 區分成MDD 與 PDD Windows CE提供原生驅動程式範例
– 顯示器– 電池– 鍵盤– 觸控式螢幕– LED
5-18
階層式 vs. 單層式 (cont.)
GWES
Layered Device Driver
MDD
PDD
DDSI function
Monolithic Device Driver
Hardware
DDI function DDI function
5-19
階層式 vs. 單層式 (cont.)
階層式裝置驅動程式 (Layered Device Driver)– MDD (Model Device Driver)– PDD (Platform Device Driver)
MDD– 針對所有通用驅動程式類型– 呼叫特定 PDD程序– 改寫不保證問題不會發生 (微軟方面提出 )
PDD– 自行撰寫驅動特定裝置– 完全開放自由改寫– 獨立於MDD
5-20
階層式 vs. 單層式
MDD透過與 DDI (Device Driver Interface)作業系統溝通
DDSI (Device Driver Service Interface) 為MDD 與 PDD之間溝通的介面
單層式裝置驅動程式 (Monolithic Device Driver)– 某些狀況下較有效率– 須撰寫中斷服務執行緖與指定平台類型
5-21
大綱
加強的Windows CE .NET驅動程式裝置驅動程式架構裝置驅動程式串流介面驅動程式 USB驅動程式架構 NDIS驅動程式架構
5-22
串流介面驅動程式
大多數Windows CE的驅動程式為串流介面驅動程式
支援Windows CE新增硬體動態載入驅動程式由裝置管理員 (Device Manager) 管理類似一般檔案系統的 API支援多樣性裝置可由標準Win32檔案輸出 /輸入以存取裝置
5-23
串流介面驅動程式架構
Windows CEKernel
DeviceManager
Hardware Platform
Stream Interface Driver,Loaded at boot time
Application
File System
Software
Hardware
File APIs
File System/IOCTLs
Interrupt events
5-24
串流介面驅動程式進入點 (cont.)
XXX_Init– 裝置管理員在初始化裝置
XXX_Deinit– 裝置管理員呼叫以釋放之前配置的資源
XXX_Open– 開啟裝置 -應用程式呼叫 CreateFile
XXX_Close– 關閉裝置 -應用程式呼叫 CloseHandle
5-25
串流介面驅動程式進入點 (cont.)
XXX_IOControl– 傳送控制命令 -應用程式呼叫 DeviceIOControl
XXX_Read– 讀取裝置內資料 -應用程式呼叫 ReadFile
XXX_Write– 寫入資料到裝置中 -應用程式呼叫WriteFile
XXX_Seek– 操作裝置指標 -應用程式呼叫 SetFilePointer
5-26
串流介面驅動程式進入點
XXX_PowerUp– 裝置電源開啟
XXX_PowerDown– 裝置電源關閉
5-27
大綱
加強的Windows CE .NET驅動程式裝置驅動程式架構裝置驅動程式串流介面驅動程式 USB驅動程式架構 NDIS驅動程式架構
5-28
USB 驅動程式架構
不為處理器與記憶體之間的匯流排不為主機板各晶片之間的匯流排主機電腦與周邊裝置之間的連接
5-29
USB 架構 (cont.)
USB系統軟體– USB裝置驅動程式– Windows CE執行 USB函數
USB函數主要工作– 管理所有 USB裝置與電腦之間建立的 root hub– 適當時間載入 / 卸載 USB裝置驅動程式– 與 USB裝置建立通訊以執行設定與狀態相關工作
5-30
USB 架構 (cont.)
USB函數– USBD (Universal Serial Bus Driver)– HCD (Host Controller Driver)
USBD執行高層的 USBD介面由 HCD 所提供 OEM只須提供 HCD 模組 (PDD 層 )
5-31
USB 架構
Bus DriverClient DriverActiveSync App.
Host controller
Hub
Mouse Pocket PC
HCD
MS provided for XP
5-32
主機控制器驅動程式 (cont.)
二個設計標準– 開啟主機控制器介面 (OHCI) :主要由康柏電腦與微軟定訂而成
– 通用主機控制器介面 (UHCI) :由英特爾所定訂標準
微軟提供 OHCI 與 UHCI的主機控制器驅動程式範例
OEM只須負責 PDD層的驅動程式
5-33
主機控制器驅動程式
PDD層的 HCD模組– 只有分配給記憶體內主機控制器的硬體位址,– 提供MDD層的硬體位址– 指標指向共享記憶體區塊
5-34
USBD 函數
函數名稱 敘述Transfer 傳輸函數負責處理 USB裝置的資料傳送與接收。
有四個基本的傳輸型態:控制、大量、中斷與等時。
Pipe 管道函數負責處理 USB裝置驅動程式與 USB裝置之
間,通訊頻道的開啟與關閉。Frame 控制匯流排上的實體特殊訊框時間。Configuration 初始化特定型態資料轉換。Miscellaneous 負責與 USB系統軟體相關的工作。
5-35
USB 函數控制器驅動程式
利用低層 USB 的 API 來執行虛擬序列埠 桌上型電腦需要類似驅動程式來驅動使用同步運作軟體可以透過虛擬序列埠來運作 Windows CE平台中的 USB主機控制器
– 含有 USB函數控制器驅動程式 USB序列主機驅動程式
– 執行在桌上型電腦中– 做出標準Win32序列埠介面
5-36
簡單的 USB 類別裝置驅動程式
人機介面類別驅動程式– 控制桿– 滑鼠– 軌跡球– 鍵盤
USB 印表機類別驅動程式– 串流介面驅動程式– 一次同時只能連接 10台印表機
大量記憶體 (Mass Storage)類別驅動程式 – 串流介面驅動程式– 一次同時只能連接 10個裝置
5-37
USB 與 WDM 的比較
Windows CE .NET使用 USBDI的傳輸函數其速率為 8k
USB模組與WDM模組不能相容 客戶端驅動程式是屬於核心模式的驅動程式 Windows CE 則是使用者模式的執行緖 客戶端驅動程式,利用WDM 的 I/O 要求的封
包架構 USBD函數提供建立時的要求
5-38
大綱
加強的Windows CE .NET驅動程式裝置驅動程式架構裝置驅動程式串流介面驅動程式 USB驅動程式架構 NDIS驅動程式架構
5-39
NDIS
Windows .NET支援網路驅動程式介面規格 (Network Driver Interface Specification, NDIS)
Windows CE新支援的部分– RNDIS (Remote NDIS) – NDISWAN– Token Ring– 改善與介面卡之間封裝– 階層的迷你埠 (miniport)架構– 加強測試的應用程式
5-40
NDIS (cont.)
微軟與 3Com 共同發展 NDIS程式庫 (Ndis.dll)提供完整自由的介面 NDIS程式庫提供所有Windows CE的核心模式函數
來使用 NDIS介於
– 通訊協定– 迷你埠 (miniport)驅動程式– 中繼 (intermediate)驅動程式– 硬體裝置
NDIS能與上層的 IrDA 、 TCP/IP與點對點 (Point-to-Point, PPP)通訊協定來溝通
5-41
Windows CE 的 NDIS 支援通訊
區域網路 – Zero Configuration– Ethernet– Token Ring– IrDA
廣域網路– NDSIWAN
個人區域網路– Bluetooth
5-42
NDIS 驅動程式架構
TCP/IP IrDA PPP
NetworkInterface
IR PortPhysical
Network
Transport
NDIS Miniport TR LAN WAN IrDA
Data Link
5-43
NDIS 驅動程式架構
NIC Hardware
NDIS
Miniport Driver
Intermediate Driver
Protocol Driver
5-44
迷你埠 (Miniport) 驅動程式
可以直接管理網路卡 提供高層次的驅動程式介面 利用 NDIS程式庫與網路卡和通訊協定來通訊
5-45
中繼 (Intermediate) 驅動程式
介於通訊協定驅動程式與迷你埠驅動程式之間不能使用 NDIS函數來硬體裝置 完成不同的封包過濾、格式轉換等工作 可來分割某些封包或是執行特殊函數
– 解壓縮與壓縮資料
5-46
通訊協定驅動程式
可執行 TDI (Transport Driver Interface)介面或是其他應用程式特定介面
傳送 /接收封包 Windows CE所支援的通訊協定驅動程式
– TCP/IP– PPP– IrDA
5-47
NDIS 與 Windows XP 的比較
Windows CE不用完全支援所有網路卡或是單層的網路驅動程式
Windows CE所執行的 NDIS 並不支援 DMA的運作
為了能使用 DMA傳輸功能– 迷你埠驅動程式必須配置管理虛擬記憶體緩衝區
5-48
中斷處理 (cont.)
核心的 ISR (Interrupt Service Routine) 工作是將邏輯 ID傳回給核心
核心會呼叫適當的使用者的 IST (Interrupt Service Thread )執行緖來操作
原生裝置驅動程式必須在初始化期間的適當時機註冊 ISR與產生 IST
5-49
中斷處理
5-50
結論
分層的驅動程式架構一致的驅動程式架構
– 串流介面驅動程式– USB驅動程式– NDIS驅動程式
提供多種類型的驅動程式範例
5-51
謝謝指教!