Download ppt - Chapter 5 驅動程式

Transcript
Page 1: Chapter 5  驅動程式

Chapter 5 驅動程式

Page 2: Chapter 5  驅動程式

5-2

大綱

加強的Windows CE .NET驅動程式裝置驅動程式架構裝置驅動程式串流介面驅動程式 USB驅動程式架構 NDIS驅動程式架構

Page 3: Chapter 5  驅動程式

5-3

驅動程式

驅動程式是一種軟體介於應用程式與硬體之間負責作業系統與硬體間的溝通不同的驅動程式對應不同的硬體控制硬體運作

Page 4: Chapter 5  驅動程式

5-4

Windows CE .NET 驅動程式特色

以拖拉方式開發專案 支援更多硬體平台與理器 透過裝置介面將裝置驅動程式分類 支援廣泛的電源管理 有彈性的電源控制 加入 CPS驅動程式以支援 CPU原生周邊設備 增加支援新類別裝置驅動程式 簡單移轉驅動程式至新平台

Page 5: Chapter 5  驅動程式

5-5

大綱

加強的Windows CE .NET驅動程式裝置驅動程式架構裝置驅動程式串流介面驅動程式 USB驅動程式架構 NDIS驅動程式架構

Page 6: Chapter 5  驅動程式

5-6

裝置驅動程式架構

驅動程式啟動方式– GWES– 裝置管理– 檔案系統模組

裝置驅動程式

Page 7: Chapter 5  驅動程式

5-7

裝置驅動程式架構 (cont.)

GWESFile

SystemDevice

Manager

Device Drivers

Page 8: Chapter 5  驅動程式

5-8

GWES

視窗– 回送訊息至對應的視窗

使用者– 接收使用者的訊息或事件

圖形介面– 提供文字與圖形表現的模組

Page 9: Chapter 5  驅動程式

5-9

Device Manager (cont.)

在 Windows CE中啟動 Device.exe偵測使用者安裝的周邊設備啟用串流介面驅動程式搜尋合適的裝置驅動程式讀寫註冊鍵值以載入與追踨驅動程式御載長時間不需使用的裝置驅動程式

Page 10: Chapter 5  驅動程式

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

Page 11: Chapter 5  驅動程式

5-11

File System (cont.)

處理物件儲存 (Object Store)– 檔案系統– 註冊表– Windows CE專有資料庫

可自行建立檔案系統– 可透過Win 32 API存取檔案系統

Page 12: Chapter 5  驅動程式

5-12

File System (cont.)

註冊表– 應用程式– 驅動程式– 使用者設定– 系統設定– 其他資料– 提供儲存設定資料的地方

Page 13: Chapter 5  驅動程式

5-13

File System

Windows CE有特有資料庫– 只有一個資料表– 非關連資料庫– 儲存記憶體、唯讀記憶體或可案裝的檔案系統

Page 14: Chapter 5  驅動程式

5-14

大綱

加強的Windows CE .NET驅動程式裝置驅動程式架構裝置驅動程式串流介面驅動程式 USB驅動程式架構 NDIS驅動程式架構

Page 15: Chapter 5  驅動程式

5-15

裝置驅動程式

如同一般作業系統負責管理驅動裝置使用動態鏈結庫 (DLL)載入驅動程式以標準Windows CE 中 Win32 API執行不需透過WDM (Windows Devices Model)處理

Page 16: Chapter 5  驅動程式

5-16

內建驅動程式 vs. 可安裝驅動程式

內建驅動程式– 電池、 LED– 以靜態方式與 GWES連結– 不能以單獨 DLL存在系統

可安裝驅動程式– PCMCIA 、 Serial 、 Ethernet– 硬體獨立廠商必須撰寫– 裝置管理員載入才能驅動裝置– 須手動安裝到系統

Page 17: Chapter 5  驅動程式

5-17

原生裝置驅動程式

由 GWES管理 依平台上的內建裝置而生 由 OEM內建在Windows CE平台上 系統啟動時就將驅動程式載入 區分成MDD 與 PDD Windows CE提供原生驅動程式範例

– 顯示器– 電池– 鍵盤– 觸控式螢幕– LED

Page 18: Chapter 5  驅動程式

5-18

階層式 vs. 單層式 (cont.)

GWES

Layered Device Driver

MDD

PDD

DDSI function

Monolithic Device Driver

Hardware

DDI function DDI function

Page 19: Chapter 5  驅動程式

5-19

階層式 vs. 單層式 (cont.)

階層式裝置驅動程式 (Layered Device Driver)– MDD (Model Device Driver)– PDD (Platform Device Driver)

MDD– 針對所有通用驅動程式類型– 呼叫特定 PDD程序– 改寫不保證問題不會發生 (微軟方面提出 )

PDD– 自行撰寫驅動特定裝置– 完全開放自由改寫– 獨立於MDD

Page 20: Chapter 5  驅動程式

5-20

階層式 vs. 單層式

MDD透過與 DDI (Device Driver Interface)作業系統溝通

DDSI (Device Driver Service Interface) 為MDD 與 PDD之間溝通的介面

單層式裝置驅動程式 (Monolithic Device Driver)– 某些狀況下較有效率– 須撰寫中斷服務執行緖與指定平台類型

Page 21: Chapter 5  驅動程式

5-21

大綱

加強的Windows CE .NET驅動程式裝置驅動程式架構裝置驅動程式串流介面驅動程式 USB驅動程式架構 NDIS驅動程式架構

Page 22: Chapter 5  驅動程式

5-22

串流介面驅動程式

大多數Windows CE的驅動程式為串流介面驅動程式

支援Windows CE新增硬體動態載入驅動程式由裝置管理員 (Device Manager) 管理類似一般檔案系統的 API支援多樣性裝置可由標準Win32檔案輸出 /輸入以存取裝置

Page 23: Chapter 5  驅動程式

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

Page 24: Chapter 5  驅動程式

5-24

串流介面驅動程式進入點 (cont.)

XXX_Init– 裝置管理員在初始化裝置

XXX_Deinit– 裝置管理員呼叫以釋放之前配置的資源

XXX_Open– 開啟裝置 -應用程式呼叫 CreateFile

XXX_Close– 關閉裝置 -應用程式呼叫 CloseHandle

Page 25: Chapter 5  驅動程式

5-25

串流介面驅動程式進入點 (cont.)

XXX_IOControl– 傳送控制命令 -應用程式呼叫 DeviceIOControl

XXX_Read– 讀取裝置內資料 -應用程式呼叫 ReadFile

XXX_Write– 寫入資料到裝置中 -應用程式呼叫WriteFile

XXX_Seek– 操作裝置指標 -應用程式呼叫 SetFilePointer

Page 26: Chapter 5  驅動程式

5-26

串流介面驅動程式進入點

XXX_PowerUp– 裝置電源開啟

XXX_PowerDown– 裝置電源關閉

Page 27: Chapter 5  驅動程式

5-27

大綱

加強的Windows CE .NET驅動程式裝置驅動程式架構裝置驅動程式串流介面驅動程式 USB驅動程式架構 NDIS驅動程式架構

Page 28: Chapter 5  驅動程式

5-28

USB 驅動程式架構

不為處理器與記憶體之間的匯流排不為主機板各晶片之間的匯流排主機電腦與周邊裝置之間的連接

Page 29: Chapter 5  驅動程式

5-29

USB 架構 (cont.)

USB系統軟體– USB裝置驅動程式– Windows CE執行 USB函數

USB函數主要工作– 管理所有 USB裝置與電腦之間建立的 root hub– 適當時間載入 / 卸載 USB裝置驅動程式– 與 USB裝置建立通訊以執行設定與狀態相關工作

Page 30: Chapter 5  驅動程式

5-30

USB 架構 (cont.)

USB函數– USBD (Universal Serial Bus Driver)– HCD (Host Controller Driver)

USBD執行高層的 USBD介面由 HCD 所提供 OEM只須提供 HCD 模組 (PDD 層 )

Page 31: Chapter 5  驅動程式

5-31

USB 架構

Bus DriverClient DriverActiveSync App.

Host controller

Hub

Mouse Pocket PC

HCD

MS provided for XP

Page 32: Chapter 5  驅動程式

5-32

主機控制器驅動程式 (cont.)

二個設計標準– 開啟主機控制器介面 (OHCI) :主要由康柏電腦與微軟定訂而成

– 通用主機控制器介面 (UHCI) :由英特爾所定訂標準

微軟提供 OHCI 與 UHCI的主機控制器驅動程式範例

OEM只須負責 PDD層的驅動程式

Page 33: Chapter 5  驅動程式

5-33

主機控制器驅動程式

PDD層的 HCD模組– 只有分配給記憶體內主機控制器的硬體位址,– 提供MDD層的硬體位址– 指標指向共享記憶體區塊

Page 34: Chapter 5  驅動程式

5-34

USBD 函數

函數名稱 敘述Transfer 傳輸函數負責處理 USB裝置的資料傳送與接收。

有四個基本的傳輸型態:控制、大量、中斷與等時。

Pipe 管道函數負責處理 USB裝置驅動程式與 USB裝置之

間,通訊頻道的開啟與關閉。Frame 控制匯流排上的實體特殊訊框時間。Configuration 初始化特定型態資料轉換。Miscellaneous 負責與 USB系統軟體相關的工作。

Page 35: Chapter 5  驅動程式

5-35

USB 函數控制器驅動程式

利用低層 USB 的 API 來執行虛擬序列埠 桌上型電腦需要類似驅動程式來驅動使用同步運作軟體可以透過虛擬序列埠來運作 Windows CE平台中的 USB主機控制器

– 含有 USB函數控制器驅動程式 USB序列主機驅動程式

– 執行在桌上型電腦中– 做出標準Win32序列埠介面

Page 36: Chapter 5  驅動程式

5-36

簡單的 USB 類別裝置驅動程式

人機介面類別驅動程式– 控制桿– 滑鼠– 軌跡球– 鍵盤

USB 印表機類別驅動程式– 串流介面驅動程式– 一次同時只能連接 10台印表機

大量記憶體 (Mass Storage)類別驅動程式 – 串流介面驅動程式– 一次同時只能連接 10個裝置

Page 37: Chapter 5  驅動程式

5-37

USB 與 WDM 的比較

Windows CE .NET使用 USBDI的傳輸函數其速率為 8k

USB模組與WDM模組不能相容 客戶端驅動程式是屬於核心模式的驅動程式 Windows CE 則是使用者模式的執行緖 客戶端驅動程式,利用WDM 的 I/O 要求的封

包架構 USBD函數提供建立時的要求

Page 38: Chapter 5  驅動程式

5-38

大綱

加強的Windows CE .NET驅動程式裝置驅動程式架構裝置驅動程式串流介面驅動程式 USB驅動程式架構 NDIS驅動程式架構

Page 39: Chapter 5  驅動程式

5-39

NDIS

Windows .NET支援網路驅動程式介面規格 (Network Driver Interface Specification, NDIS)

Windows CE新支援的部分– RNDIS (Remote NDIS) – NDISWAN– Token Ring– 改善與介面卡之間封裝– 階層的迷你埠 (miniport)架構– 加強測試的應用程式

Page 40: Chapter 5  驅動程式

5-40

NDIS (cont.)

微軟與 3Com 共同發展 NDIS程式庫 (Ndis.dll)提供完整自由的介面 NDIS程式庫提供所有Windows CE的核心模式函數

來使用 NDIS介於

– 通訊協定– 迷你埠 (miniport)驅動程式– 中繼 (intermediate)驅動程式– 硬體裝置

NDIS能與上層的 IrDA 、 TCP/IP與點對點 (Point-to-Point, PPP)通訊協定來溝通

Page 41: Chapter 5  驅動程式

5-41

Windows CE 的 NDIS 支援通訊

區域網路 – Zero Configuration– Ethernet– Token Ring– IrDA

廣域網路– NDSIWAN

個人區域網路– Bluetooth

Page 42: Chapter 5  驅動程式

5-42

NDIS 驅動程式架構

TCP/IP IrDA PPP

NetworkInterface

IR PortPhysical

Network

Transport

NDIS Miniport TR LAN WAN IrDA

Data Link

Page 43: Chapter 5  驅動程式

5-43

NDIS 驅動程式架構

NIC Hardware

NDIS

Miniport Driver

Intermediate Driver

Protocol Driver

Page 44: Chapter 5  驅動程式

5-44

迷你埠 (Miniport) 驅動程式

可以直接管理網路卡 提供高層次的驅動程式介面 利用 NDIS程式庫與網路卡和通訊協定來通訊

Page 45: Chapter 5  驅動程式

5-45

中繼 (Intermediate) 驅動程式

介於通訊協定驅動程式與迷你埠驅動程式之間不能使用 NDIS函數來硬體裝置 完成不同的封包過濾、格式轉換等工作 可來分割某些封包或是執行特殊函數

– 解壓縮與壓縮資料

Page 46: Chapter 5  驅動程式

5-46

通訊協定驅動程式

可執行 TDI (Transport Driver Interface)介面或是其他應用程式特定介面

傳送 /接收封包 Windows CE所支援的通訊協定驅動程式

– TCP/IP– PPP– IrDA

Page 47: Chapter 5  驅動程式

5-47

NDIS 與 Windows XP 的比較

Windows CE不用完全支援所有網路卡或是單層的網路驅動程式

Windows CE所執行的 NDIS 並不支援 DMA的運作

為了能使用 DMA傳輸功能– 迷你埠驅動程式必須配置管理虛擬記憶體緩衝區

Page 48: Chapter 5  驅動程式

5-48

中斷處理 (cont.)

核心的 ISR (Interrupt Service Routine) 工作是將邏輯 ID傳回給核心

核心會呼叫適當的使用者的 IST (Interrupt Service Thread )執行緖來操作

原生裝置驅動程式必須在初始化期間的適當時機註冊 ISR與產生 IST

Page 49: Chapter 5  驅動程式

5-49

中斷處理

Page 50: Chapter 5  驅動程式

5-50

結論

分層的驅動程式架構一致的驅動程式架構

– 串流介面驅動程式– USB驅動程式– NDIS驅動程式

提供多種類型的驅動程式範例

Page 51: Chapter 5  驅動程式

5-51

謝謝指教!


Recommended