USB開發(fā)步驟之標(biāo)準(zhǔn)篇
USB的設(shè)備類型(device class)
雖然USB設(shè)備都會表現(xiàn)USB的一些基本的特征。但是,USB的設(shè)備還是可以分成多個不同類型,同類型的設(shè)備可以擁有一些共同的行為特征和工作協(xié)議,從而使設(shè)備的驅(qū)動程序的書寫變得簡單一些。下表中就給出一些基本的USB的設(shè)備類型分類。
設(shè)備類型(device class) 設(shè)備舉例 類型常量(Class constant)
音頻(audio) 揚(yáng)聲器 USB_DEVICE_CLASS_AUDIO
通信 MODEM USB_DECICE_CLASS_COMMUNICATIONS
HID 鍵盤 鼠標(biāo) USB_DEVICE_CLASS_HUMAN INTERFACE
顯示 監(jiān)視器 USB_DEVICE_CLASS_MONITOR
物理回應(yīng)設(shè)備 動力回饋式游戲操縱桿 USB_DEVICE_CLASS_PHYSICAL_INTERFACE
電源 不間斷電源供應(yīng) USB_DEVICE_CLASS_POWER
打印機(jī) USB_DEVICE_CLASS_PRINTER
大量的存儲器 硬盤 USB_DEVICE_CLASS_STORAGE
HUB USB_DEVICE_CLASS_HUB
USB的基本特性
每一個設(shè)備(device)會有一個或者多個的邏輯連接點(diǎn)在里面,每個連接點(diǎn)叫 endpoint.每個endpoint有四種數(shù)據(jù)傳送方式:控制(Control)方式傳送;同步(isochronous)方式傳送;中斷 (interrupt)方式傳送;大量(bulk)傳送.但是所有的endpoint0都被用來傳送配置和控制信息。
在host和設(shè)備的endpoint之間的連接叫作管道"pipe",endpoint0叫做缺省(default pipe)。
對于同樣性質(zhì)的一組的endpoint的組合叫做接口(interface),如果一個設(shè)備包含不止一個的接口就可以稱之為復(fù)合設(shè)備(composite device)。
同樣的道理,對于同樣的類型的接口的組合可以稱之為"配置"(configuration)。但是每次只能有一個配置是可用的,而一旦該配置激活,里面的接口和endpoint就都同時可以使用。
host從設(shè)備發(fā)過來的描述字(descriptors)中來判斷用的是哪個配置,哪個接口等等,而這些的描述字通常是在endpoint0中傳送。
Windows USB 驅(qū)動程序接口
系統(tǒng)中的USB的驅(qū)動程序完成許多的工作。
實(shí)際上對于一些HID的USB設(shè) 備,象鍵盤,鼠標(biāo)和游戲操縱桿之類的設(shè)備可以自動的被系統(tǒng)識別并且支持.而除此之外的設(shè)備就需要自己寫一個驅(qū)動程序來完成硬件和軟件之間的聯(lián)系。在核心模 式(kernel mode)下,驅(qū)動程序用IOCTL來組織和操作一些由其他部分發(fā)過來的要求和命令。而IOCTL又是通過URB(USB request blocks)來實(shí)現(xiàn)數(shù)據(jù)的傳送的。
在正式的介紹USB的驅(qū)動程序之前,先還是來看看USB的物理和邏輯結(jié)構(gòu)。
傳輸方式
在USB的數(shù)據(jù)傳送的方式下,有四種的傳輸方式:控制(Control)同步 (isochronous)中斷(interrupt)大量(bulk)。如果你是從硬件開始來設(shè)計整個的系統(tǒng),你還要正確選擇傳送的方式,而作為一個驅(qū) 動程序的書寫者,就只需要弄清楚他是采用的什么工作方式就行了。
通常所有的傳送方式下的主動權(quán)都在PC邊,也就是host邊。
控制(Control)方式傳送:控制傳送是雙向傳送,數(shù)據(jù)量通常較小。USB系統(tǒng)軟 件用來主要進(jìn)行查詢、配置和給USB設(shè)備發(fā)送通用的命令??刂苽魉头绞娇梢园?、16、32和64字節(jié)的數(shù)據(jù),這依賴于設(shè)備和傳輸速度??刂苽鬏?shù)湫偷?用在主計算機(jī)和USB外設(shè)之間的端點(diǎn)(Endpoint)0之間的傳輸,但是指定供應(yīng)商的控制傳輸可能用到其它的端點(diǎn)。
同步(isochronous)方式傳送:同步傳 輸提供了確定的帶寬和間隔時間(latency)。它被用于時間嚴(yán)格并具有較強(qiáng)容錯性的流數(shù)據(jù)傳輸,或者用于要求恒定的數(shù)據(jù)傳送率的即時應(yīng)用中。例如執(zhí)行 即時通話的網(wǎng)絡(luò)電話應(yīng)用時,使用同步傳輸模式是很好的選擇。同步數(shù)據(jù)要求確定的帶寬值和確定的最大傳送次數(shù)。對于同步傳送來說,即時的數(shù)據(jù)傳遞比完美的精 度和數(shù)據(jù)的完整性更重要一些。
中斷(interrupt)方式傳送:中斷方式傳輸主要用于定時查詢設(shè)備是否有中斷數(shù) 據(jù)要傳送。設(shè)備的端點(diǎn)模式器的結(jié)構(gòu)決定了它的查詢頻率,從1到255ms之間。這種傳輸方式典型的應(yīng)用在少量的分散的、不可預(yù)測數(shù)據(jù)的傳輸。鍵盤、操縱桿 和鼠標(biāo)就屬于這一類型。中斷方式傳送是單向的并且對于host來說只有輸入的方式。
大量(bulk)傳送:主要應(yīng)用在數(shù)據(jù)大量傳送傳送和接受數(shù)據(jù)上,同時又沒有帶寬和間隔時間要求的情況下,要求保證傳輸。打印機(jī)和掃描儀屬于這種類型。這種類型的設(shè)備適合于傳輸非常慢和大量被延遲的傳輸,可以等到所有其它類型的數(shù)據(jù)的傳送完成之后再傳送和接收數(shù)據(jù)。
USB將其有效的帶寬分成各個不同的
評論