通用串行總線(USB)設(shè)備的驅(qū)動
發(fā)布時(shí)間:2007/9/10 0:00:00 訪問次數(shù):701
摘要:從問題的由來、類驅(qū)動程序、通信協(xié)議、描述符、驅(qū)動開發(fā)等對USB的驅(qū)動進(jìn)行分析和討論,提出USB設(shè)備使用操作系統(tǒng)嵌入的通用類驅(qū)動程序成為趨勢。
關(guān)鍵詞:USB 類驅(qū)動程序 人工接口設(shè)備(HID) Windows驅(qū)動程序模型(WDM)
最初設(shè)計(jì)USB(Universal Serial Bus)這種外設(shè)總線的目的之一就是為了便于使用,這是計(jì)算機(jī)發(fā)展的產(chǎn)物。外設(shè)總線最重要的就是操作系統(tǒng)對外設(shè)的自動識別、配置,實(shí)現(xiàn)熱插拔,即插即用。本文試圖以人工接口設(shè)備(Human interface device,簡稱HID)為主,從問題的由來、類驅(qū)動程序、通信協(xié)議、描述符、驅(qū)動開發(fā)等幾個方面來探討一下USB設(shè)備的驅(qū)動問題。
1 問題的由來
一個非常簡單的設(shè)備安裝有時(shí)得花用戶好幾天時(shí)間,原因何在?設(shè)備的驅(qū)動與其他的驅(qū)動程序或軟件不兼容,或隱有bug。如果操作系統(tǒng)本身就含有用戶需要的驅(qū)動程序,設(shè)備一插就能使用,這是最好不過的事情。
現(xiàn)已有上千種不同的設(shè)備,許多功能大致一樣。操作系統(tǒng)不可能為所有的設(shè)備提供全部的驅(qū)動程序。仔細(xì)考慮一下,許多設(shè)備可歸屬為少數(shù)幾個具有普遍特性和需求的類,因而為每種類定義一個通用的API接口,寫出通用的驅(qū)動程序是可實(shí)現(xiàn)的。
通過定義不同的設(shè)備類型,USB試圖實(shí)現(xiàn)通用驅(qū)動程序這一目標(biāo)。在USB規(guī)范里,除定義了基本的協(xié)議和構(gòu)造用來配置設(shè)備和傳輸數(shù)據(jù),還為所有的USB設(shè)備定義了機(jī)械和電器件性能要求。USB規(guī)范定義了通信、打印、圖像、儲存、音頻和人工接口設(shè)備等類。一些設(shè)備是單一的類,一些是多種類的綜合體。具有多種類的設(shè)備稱為混合設(shè)備,在USB規(guī)范對設(shè)備有詳細(xì)的劃分。
2 類驅(qū)動程序
由于一些類尚未形成標(biāo)準(zhǔn),Win2000只包含了部分USB類的驅(qū)動程序。一旦形成標(biāo)準(zhǔn)得到認(rèn)可,通用的驅(qū)動程序也就自然嵌入到操作系統(tǒng)了。圖1為操作系統(tǒng)中USB驅(qū)動接口框圖。這是一個標(biāo)準(zhǔn)的Windows驅(qū)動程序模型(WDM),是一種分層模式。核心USB Driver Stack模型描述設(shè)備如何安裝和啟動,以及如何為用戶請求服務(wù)和與硬件打交道,并為上層USB驅(qū)動提供接口。上層驅(qū)動完成設(shè)備功能并為用戶層提供接口,這使得向USB總線發(fā)出請求是通過多層結(jié)構(gòu)。
HID類是為一些人工的輸入或輸出設(shè)備而設(shè)計(jì)的,最常用的象鍵盤、鼠標(biāo)、游戲控制器。這種類同時(shí)也包含了前面板顯示區(qū)和鍵盤區(qū)(象電話或VCR遠(yuǎn)程控制),還有觸覺和聽覺反饋設(shè)備。對于HID類的設(shè)備,操作系統(tǒng)已經(jīng)給出了相應(yīng)的驅(qū)動程序。
連接到計(jì)算機(jī)的USB設(shè)備幾乎都包含HID類,用以信號控制。比如一個USB揚(yáng)聲器,音量、音調(diào)控制用HID類,但音頻數(shù)據(jù)傳輸用音頻類。
通常情況下,USB設(shè)備與主機(jī)通信是經(jīng)過USB端口,類驅(qū)動程序無須擔(dān)心或考慮ISA總線、PCI總線、SCSI、IDE或ATAPI接口、串口、并口、鍵盤或鼠標(biāo)口、游戲接口及相關(guān)的一些東西。類驅(qū)動程序甚至不需要了解SUB端口,這個物理接口被USB主機(jī)驅(qū)動程序管理形成抽象層,也正因?yàn)檫@個抽象層及其他相應(yīng)層,使通用使驅(qū)動程序成為可能。每一層有自己的功能,并為上一層提供了API接口,上層沒有必要了解下一層如何工作及內(nèi)部體系結(jié)構(gòu),各層為一個封裝體。
圖2所示為USB各層之間通信流程。USB用明確定義了的層協(xié)議來減少復(fù)雜化且有利于標(biāo)準(zhǔn)化,各層均有連接,但大多為邏輯型的。最低層的是USB主機(jī)控制器和USB設(shè)備接口之間的物理連接,包括連接線、連接器、狀態(tài)機(jī)。其次在計(jì)算機(jī)方面為USB主機(jī)驅(qū)動程序,這是操作系統(tǒng)所必須的。在設(shè)備方是用于設(shè)備管理和請求的固件程序(Firmware),此層是配和和控制USB接口的邏輯連接。第三層
摘要:從問題的由來、類驅(qū)動程序、通信協(xié)議、描述符、驅(qū)動開發(fā)等對USB的驅(qū)動進(jìn)行分析和討論,提出USB設(shè)備使用操作系統(tǒng)嵌入的通用類驅(qū)動程序成為趨勢。
關(guān)鍵詞:USB 類驅(qū)動程序 人工接口設(shè)備(HID) Windows驅(qū)動程序模型(WDM)
最初設(shè)計(jì)USB(Universal Serial Bus)這種外設(shè)總線的目的之一就是為了便于使用,這是計(jì)算機(jī)發(fā)展的產(chǎn)物。外設(shè)總線最重要的就是操作系統(tǒng)對外設(shè)的自動識別、配置,實(shí)現(xiàn)熱插拔,即插即用。本文試圖以人工接口設(shè)備(Human interface device,簡稱HID)為主,從問題的由來、類驅(qū)動程序、通信協(xié)議、描述符、驅(qū)動開發(fā)等幾個方面來探討一下USB設(shè)備的驅(qū)動問題。
1 問題的由來
一個非常簡單的設(shè)備安裝有時(shí)得花用戶好幾天時(shí)間,原因何在?設(shè)備的驅(qū)動與其他的驅(qū)動程序或軟件不兼容,或隱有bug。如果操作系統(tǒng)本身就含有用戶需要的驅(qū)動程序,設(shè)備一插就能使用,這是最好不過的事情。
現(xiàn)已有上千種不同的設(shè)備,許多功能大致一樣。操作系統(tǒng)不可能為所有的設(shè)備提供全部的驅(qū)動程序。仔細(xì)考慮一下,許多設(shè)備可歸屬為少數(shù)幾個具有普遍特性和需求的類,因而為每種類定義一個通用的API接口,寫出通用的驅(qū)動程序是可實(shí)現(xiàn)的。
通過定義不同的設(shè)備類型,USB試圖實(shí)現(xiàn)通用驅(qū)動程序這一目標(biāo)。在USB規(guī)范里,除定義了基本的協(xié)議和構(gòu)造用來配置設(shè)備和傳輸數(shù)據(jù),還為所有的USB設(shè)備定義了機(jī)械和電器件性能要求。USB規(guī)范定義了通信、打印、圖像、儲存、音頻和人工接口設(shè)備等類。一些設(shè)備是單一的類,一些是多種類的綜合體。具有多種類的設(shè)備稱為混合設(shè)備,在USB規(guī)范對設(shè)備有詳細(xì)的劃分。
2 類驅(qū)動程序
由于一些類尚未形成標(biāo)準(zhǔn),Win2000只包含了部分USB類的驅(qū)動程序。一旦形成標(biāo)準(zhǔn)得到認(rèn)可,通用的驅(qū)動程序也就自然嵌入到操作系統(tǒng)了。圖1為操作系統(tǒng)中USB驅(qū)動接口框圖。這是一個標(biāo)準(zhǔn)的Windows驅(qū)動程序模型(WDM),是一種分層模式。核心USB Driver Stack模型描述設(shè)備如何安裝和啟動,以及如何為用戶請求服務(wù)和與硬件打交道,并為上層USB驅(qū)動提供接口。上層驅(qū)動完成設(shè)備功能并為用戶層提供接口,這使得向USB總線發(fā)出請求是通過多層結(jié)構(gòu)。
HID類是為一些人工的輸入或輸出設(shè)備而設(shè)計(jì)的,最常用的象鍵盤、鼠標(biāo)、游戲控制器。這種類同時(shí)也包含了前面板顯示區(qū)和鍵盤區(qū)(象電話或VCR遠(yuǎn)程控制),還有觸覺和聽覺反饋設(shè)備。對于HID類的設(shè)備,操作系統(tǒng)已經(jīng)給出了相應(yīng)的驅(qū)動程序。
連接到計(jì)算機(jī)的USB設(shè)備幾乎都包含HID類,用以信號控制。比如一個USB揚(yáng)聲器,音量、音調(diào)控制用HID類,但音頻數(shù)據(jù)傳輸用音頻類。
通常情況下,USB設(shè)備與主機(jī)通信是經(jīng)過USB端口,類驅(qū)動程序無須擔(dān)心或考慮ISA總線、PCI總線、SCSI、IDE或ATAPI接口、串口、并口、鍵盤或鼠標(biāo)口、游戲接口及相關(guān)的一些東西。類驅(qū)動程序甚至不需要了解SUB端口,這個物理接口被USB主機(jī)驅(qū)動程序管理形成抽象層,也正因?yàn)檫@個抽象層及其他相應(yīng)層,使通用使驅(qū)動程序成為可能。每一層有自己的功能,并為上一層提供了API接口,上層沒有必要了解下一層如何工作及內(nèi)部體系結(jié)構(gòu),各層為一個封裝體。
圖2所示為USB各層之間通信流程。USB用明確定義了的層協(xié)議來減少復(fù)雜化且有利于標(biāo)準(zhǔn)化,各層均有連接,但大多為邏輯型的。最低層的是USB主機(jī)控制器和USB設(shè)備接口之間的物理連接,包括連接線、連接器、狀態(tài)機(jī)。其次在計(jì)算機(jī)方面為USB主機(jī)驅(qū)動程序,這是操作系統(tǒng)所必須的。在設(shè)備方是用于設(shè)備管理和請求的固件程序(Firmware),此層是配和和控制USB接口的邏輯連接。第三層
熱門點(diǎn)擊
- AMCCS5933在PCI板卡設(shè)計(jì)中的應(yīng)用
- USB端口的EMC解決方案
- 可編程多協(xié)議收發(fā)器MAX3160的原理與應(yīng)用
- HD7279A的原理與應(yīng)用
- 基于AVR單片機(jī)SPI的串行ADC接口設(shè)計(jì)
- 基于IP核的PCI總線接口設(shè)計(jì)與實(shí)現(xiàn)
- M-Bus終端收發(fā)芯片TSS721的原理及應(yīng)
- SN75176在微機(jī)多點(diǎn)通訊中的應(yīng)用
- USB總線的體系結(jié)構(gòu)
- 三電平SIM/SMART 卡接口電路
推薦技術(shù)資料
- iNEMO系統(tǒng)級封裝 (SiP
- 增強(qiáng)型模塊化輸入輸出系統(tǒng) (eMIOS)
- 最新60和100V器件FERD
- 32位汽車微控制器SPC5系列
- 新一代高性能接近和測距傳感器
- 新型場效應(yīng)整流二極管(FERD
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究