端點
端點是一個USB設(shè)備唯一可以確認(rèn)的部分,他是主機和設(shè)備之間的通信流的重點。每一個USB邏輯設(shè)備都包含了一個相當(dāng)獨立的進(jìn)行操作的端點的集合。軟件只能夠通過一個或者多個端點與一個USB設(shè)備通信。在設(shè)備接入的時候,每一個邏輯設(shè)備都有一個由系統(tǒng)分配的唯一的地址。而一個設(shè)備上的任意一個端點都有一個由設(shè)備而定(設(shè)計時)唯一的標(biāo)識和端點號。利用設(shè)備的地址和端點號就可以唯一的指定任意一個端點。
端點可以決定端點和客戶軟件之間通信所需要的傳輸服務(wù)類型。一個端點可以由一下的幾個內(nèi)容來描述:
- 總線訪問頻率/延時要求
- 帶寬要求。
- 端點號。
- 差錯控制要求。
- 端點可以接收或者傳遞的最大分組包。
- 端點的傳送類型。
- 對于同步傳輸而言,還要包括端點和主機之間的數(shù)據(jù)傳輸方向。
一個端點只有在對其進(jìn)行配置以后才能夠被使用。包括端點0在內(nèi)的所有端點,都作為設(shè)備配置過程中的普通部分來對其進(jìn)行配置。
管道
一個USB管道是設(shè)備上的一個端點和主機上的軟件的聯(lián)合體。管道表示經(jīng)過一個存儲器緩沖區(qū)和一個設(shè)備上的端點,可以在主機上的軟件之間傳送數(shù)據(jù)的能力。管道類型分為:流管道和消息管道。但是USB并不對通過一個管道傳遞的數(shù)據(jù)內(nèi)容進(jìn)行翻譯,即使是消息管道要求根據(jù)USB的規(guī)定對數(shù)據(jù)進(jìn)行打包,USB也不會翻譯這些數(shù)據(jù)內(nèi)容。另外,管道還需要確定一下的三個參數(shù):
- 對USB總線訪問和帶寬使用的聲明。
- 傳輸?shù)念愋汀?/li>
- 所對應(yīng)的端點的特征,如方向和最大數(shù)據(jù)負(fù)載尺寸等。其中數(shù)據(jù)負(fù)載是指總線操作當(dāng)中,一個數(shù)據(jù)分組的數(shù)據(jù)域當(dāng)中所攜帶的分組。
一個客戶軟件通常是通過向一個管道發(fā)出IRP來要求傳送數(shù)據(jù),發(fā)出IRP之后客戶軟件就等待或者是得到指示。IRP定義的細(xì)節(jié)由具體的操作系統(tǒng)而定。當(dāng)與一個IRP相對應(yīng)的總線操作完成以后,無論其是成功還是由于出錯而結(jié)束,這個客戶軟甲都會被告知IRP已經(jīng)處理完成。
為通過總線來傳輸數(shù)據(jù),一個IRP可能需要多個數(shù)據(jù)負(fù)載。對于一個需要多個數(shù)據(jù)負(fù)載的IRP來說,其分組的數(shù)據(jù)域應(yīng)該具有最大的尺寸。直到最后一個數(shù)據(jù)載荷中包含該IRP中的剩余的部分。
控制傳輸
控制傳輸允許對一個設(shè)備的不同部分進(jìn)行訪問,他用于支持客戶軟件和功能模塊之間的配置/命令/狀態(tài)等類型的通信流。一個控制傳輸由以下的幾個部分構(gòu)成;
- 總線建立操作,負(fù)責(zé)將請求信息由主機送到功能模塊;
- 零個或者是多個數(shù)據(jù)處理操作,傳輸方向由建立操作指定。
- 狀態(tài)處理操作,用于功能模塊向主機返回狀態(tài)信息。
當(dāng)一個端點成功的完成了請求操作的處理時,狀態(tài)處理操作就返回成功狀態(tài)。控制傳輸只能由消息管道來實現(xiàn)。控制傳輸?shù)臄?shù)據(jù)流必須按照一定的數(shù)據(jù)結(jié)構(gòu)來進(jìn)行。一個功能模塊及其軟件不能夠請求某個訪問頻率或者是帶寬。USB系統(tǒng)軟件將對一個設(shè)備所要求的控制傳輸?shù)目偩€訪問和帶寬加以限制。
控制傳輸最少具有兩個處理階段:創(chuàng)建和狀態(tài)。一個控制傳輸可以選擇在創(chuàng)建和狀態(tài)階段之間再包含一個數(shù)據(jù)階段。在創(chuàng)建階段,一個創(chuàng)建處理操作用于向一個功能設(shè)備的控制端點傳送信息。創(chuàng)建處理操作所具有的格式與一個out處理相似。但是他使用的是SETUP而不是OUT PID。一個創(chuàng)建處理操作總是對其數(shù)據(jù)域使用一個DATA0 PID。接受一個創(chuàng)建處理操作的功能設(shè)備必須接受創(chuàng)建處理數(shù)據(jù)并使用一個ACK握手分組來響應(yīng),或者是如果這個數(shù)據(jù)被破壞了,它必須要丟棄該數(shù)據(jù)并且不返回任何握手分組。
如果一個控制傳輸內(nèi)有數(shù)據(jù)階段的話,那么這個數(shù)據(jù)階段就包含了一個或者是多個IN或OUT處理。并且要遵循和批量傳輸一樣的協(xié)議原則。在數(shù)據(jù)階段所有的處理操作都必須具有同樣的方向,即全部是IN或全部是OUT。在數(shù)據(jù)階段傳輸?shù)臄?shù)據(jù)量及其方向都是在創(chuàng)建階段加以說明了的。若數(shù)據(jù)量超過了預(yù)先確定的數(shù)據(jù)分組的大小,那么數(shù)據(jù)就會在多個裝載了最大分組大小的處理操作內(nèi)傳送(IN或OUT).任何剩余的數(shù)據(jù)都將作為剩余量而在最后一個處理操作內(nèi)發(fā)送。
一個控制傳輸中的狀態(tài)階段是該序列中的最后一個操作。一個狀態(tài)階段由相對于前一個階段數(shù)據(jù)流方向的變化來描述,并且總是使用一個DATA1 PID。例如,若一個數(shù)據(jù)階段包含有OUT,那么狀態(tài)就是一個單一的IN處理操作。若一個控制序列沒有數(shù)據(jù)階段,那么它就包括一個創(chuàng)建階段,再跟上一個包含了一個IN處理的狀態(tài)階段。下圖說明了處理順序、數(shù)據(jù)序列比特值和用于控制讀和寫序列的數(shù)據(jù)PID類型。序列的比特號在括號內(nèi)給出:
- 報告狀態(tài)結(jié)果:狀態(tài)階段向主機報告該傳輸中前一個創(chuàng)建和數(shù)據(jù)階段的輸出??赡艿姆祷赜腥N:命令序列成功完成/ 命令序列未能完成/ 功能設(shè)備正在忙著完成命令。
報告狀態(tài)總是具有從功能設(shè)備到主機的方向。下圖對每一種結(jié)果所要求的響應(yīng)類型作了總結(jié):
控制寫傳輸在該傳輸中的數(shù)據(jù)階段返回狀態(tài)信息。在前一個數(shù)據(jù)階段內(nèi)主機發(fā)送了一個長度為0的數(shù)據(jù)之后,控制讀傳輸將在握手階段返回狀態(tài)信息。
對于控制讀,主機向控制端點發(fā)送一個零長度的數(shù)據(jù)分組。端點作出握手響應(yīng)說明狀態(tài)階段的結(jié)束。NAK說明該功能設(shè)備仍處在處理命令,而主機應(yīng)該繼續(xù)狀態(tài)階段。ACK說明該功能設(shè)備已經(jīng)完成了這一命令,并為接收一個新的命令做好了準(zhǔn)備。而STALL則說明該功能設(shè)備出現(xiàn)了一個阻礙其完成命令的錯誤。
對于控制寫而言,功能設(shè)備不是用一個握手,就是用一個0長度的數(shù)據(jù)分組來響應(yīng),以指出其狀態(tài)。一個NAK說明該功能設(shè)備仍然在處理命令,而主機應(yīng)該延續(xù)狀態(tài)階段。返回一個0長度分組則說明命令已經(jīng)完成,而STALL則說明該功能設(shè)備出現(xiàn)了錯誤。在數(shù)據(jù)階段返回一個0長度數(shù)據(jù)分組的控制寫傳輸,會使主機向該功能設(shè)備返回一個ACK握手分組。
在一個數(shù)據(jù)或者是狀態(tài)階段,如果向一個命令端點發(fā)送了或者是要求一個命令端點返回多于在創(chuàng)建階段所指明的數(shù)據(jù),它就應(yīng)該返回一個STALL。如果一個控制端點在數(shù)據(jù)階段返回了STALL,那么該控制傳輸就沒有狀態(tài)階段。
5.7.3 控制傳輸
用于實現(xiàn)一個一個中斷管道的某一個端點要說明它將要傳輸?shù)淖畲髷?shù)據(jù)負(fù)載。全速率設(shè)備<=64字節(jié),低速率設(shè)備<=8字節(jié)。這個最大值將用于數(shù)據(jù)分組,既這個尺寸限制只對分組中的數(shù)據(jù)域有限制。并不包括其他的協(xié)議要求的信息。
在設(shè)備的配置操作中,USB系統(tǒng)軟件將決定一個中斷管道可以利用的最大數(shù)據(jù)負(fù)載尺寸。USB軟件不會像對待控制管道一樣,為一個中斷管道調(diào)整其可用的總線時間。在USB子系統(tǒng)的配置過程中,一個中斷管道要么可以支持,要么不可以支持。一個客戶端軟件可以通過用于要求多個總線處理操作的中斷傳輸?shù)囊粋€IRP來接收數(shù)據(jù),而不需要每一個IRP都有完整的IRP指示。通過申明一個可以存儲所需大小的緩沖區(qū)可以達(dá)到這一目的。緩沖區(qū)的大小是MaxPacketSize規(guī)定值的倍數(shù)再加上一定的的剩余量。若一個中斷傳輸端點要傳輸?shù)臄?shù)據(jù)量小魚客戶軟件的預(yù)計值,那么主控制器將會收到一個數(shù)據(jù)負(fù)載小魚最大值的數(shù)據(jù)。這一個分組將會使得主機廢除當(dāng)前的IRP而轉(zhuǎn)向下一個IRP。
5.8 批量傳輸
申請一個批量傳輸類型的管道需要提供下列條件:
- 根據(jù)可用帶寬對USB進(jìn)行訪問。
- 如果由于總現(xiàn)上的錯誤而出現(xiàn)偶然的傳輸失敗,需要重試。
- 保證對數(shù)據(jù)的傳輸,但是不對帶寬或者是時延提供保證。
批量管道之中的數(shù)據(jù)流不具有USB規(guī)定的數(shù)據(jù)結(jié)構(gòu)。批量管道是一個流管道,一個管道只能傳輸一個方向的數(shù)據(jù)。
批量傳輸?shù)臄?shù)據(jù)順序:批量處理操作的數(shù)據(jù)觸發(fā)比特僅僅在處理操作完成時進(jìn)行觸發(fā),利用數(shù)據(jù)觸發(fā)比特可以在出現(xiàn)差錯之后撤銷處理操作時,保護(hù)發(fā)送器和接收器之間的同步關(guān)系。在由一個適當(dāng)?shù)目刂苽鬏攲δ骋粋€端點進(jìn)行配置的時候,批量處理操作被初始化為DATA0,主機同樣會以DATA0開始第一個批量處理操作。
一個端點不能指出一個批量管道所要求的總線訪問頻率,USB將負(fù)責(zé)平衡所有的批量管道和某些未處理的IRP的總線訪問請求。經(jīng)過總線進(jìn)行批量傳輸具有比進(jìn)行批量傳輸更高的優(yōu)先權(quán)。
為了讓處理操作通過總線,傳輸管理包括幾個不同對象進(jìn)行操作的實體:
- 客戶軟件:通過調(diào)用/回調(diào)(callBack)來向USBD接口請求IRP,使用/產(chǎn)生某個來自或是送往一個功能端點的功能數(shù)據(jù)。
- USB驅(qū)動程序(USBD):通過適當(dāng)?shù)腍CD的調(diào)用/回調(diào),對客戶IRP中來自或者是送往設(shè)備端點的數(shù)據(jù)交換。
在客戶軟件為其功能模塊請求了一個傳輸并且該請求得到了服務(wù)之后,客戶軟件會得到IRP已經(jīng)完成的通知,如果傳輸中包含了向主機傳輸數(shù)據(jù)的功能,客戶軟件就會訪問與某個完成了的IRP相對應(yīng)的數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)。
HCD負(fù)責(zé)在操作過程跟蹤IRP,并且保證不超過USB帶寬和幀時間的最大原因,當(dāng)為一個管道建立IRP時,HCD會將它們添加到處理操作列表。如果一個IRP完成了,HCD會通知發(fā)出請求的客戶軟件,該IRP已經(jīng)完成。如果這個IRP包含從功能模塊到客戶軟件的數(shù)據(jù)傳輸,那么數(shù)據(jù)將會被放置在客戶軟件指定的數(shù)據(jù)緩沖區(qū)中。
USB 驅(qū)動程序
在一個接入總線的配置操作和正常的傳輸中,USBD通常要對總線訪問進(jìn)行兩次斡旋,檔一個設(shè)備插入并對其進(jìn)行配置的時候,需要USBD來保證總線上可以容納所要求的設(shè)備的配置操作。USBD從用來說明所需要的設(shè)備配置操作的配置軟件中接收配置請求,其內(nèi)容包括端點、傳輸類型、傳輸周期、數(shù)據(jù)大小等。根據(jù)可用的帶寬和總線上對于請求類型的容納能力,USBD將接受或者拒接一個配置請求。若它接受了該請求,USBD將會為發(fā)出請求的設(shè)備創(chuàng)建一個所需要類型的管道。該管道具有這種傳輸類型所定義的適當(dāng)?shù)南拗啤R坏σ粋€設(shè)備進(jìn)行了配置,客戶軟件就可以為在它和它的功能端點之間傳輸數(shù)據(jù)而請求IRP。
計算功能模塊/軟件中的緩沖區(qū)的大小
客戶軟件和功能模塊都需要為那些在總線上等待的未處理的數(shù)據(jù)處理操作提供緩沖區(qū)。對于非同步管道而言,緩沖區(qū)空間只需要足夠容納下一個數(shù)據(jù)分組。若對于某一個端點有多個處理操作請求等待處理,就必須要為每一個待處理操作提供緩沖處理。一個功能模塊可能需要能夠用來絕對精確的計算最小緩沖時間的方法,這是因為USB規(guī)范并未對功能模塊及其客戶軟件的交互進(jìn)行規(guī)定。
9.3 USB設(shè)備請求
所有的USB設(shè)備都會對設(shè)備缺省管道上來自于主機的請求作出響應(yīng),這些請求是利用控制傳輸而產(chǎn)生的。請求和請求參數(shù)則是在建立分組中傳送到設(shè)備的。主機將會負(fù)責(zé)建立在下列域中傳送的數(shù)值。每一個建立分組都有8個字節(jié),如下如所示:
該請求在Vxworks中對應(yīng)的已定義好的代碼部分如下:
10.1.2 數(shù)據(jù)流
主控制器負(fù)責(zé)在主機和USB設(shè)備之間傳輸數(shù)據(jù)流。這些數(shù)據(jù)流將被作為一個連續(xù)的字節(jié)流來對待。每一個設(shè)備都實現(xiàn)了一個過著是多個接口,一個客戶利用這些接口來同設(shè)備通信。每一個接口都包括0個或更多的管道,這些管道可以在客戶和設(shè)備上的某個端點之間分別傳輸數(shù)據(jù)。USBD會在主機軟件的明確要求之下創(chuàng)建接口和管道。當(dāng)發(fā)出配置請求的時候,主控制器根據(jù)主機軟件所提供的參數(shù)來提供服務(wù)。
根據(jù)將要傳輸?shù)臄?shù)據(jù)的傳遞要求,一個管道有幾種特性。這些特性包括:數(shù)據(jù)傳輸所要傳輸?shù)乃俾?,是以穩(wěn)定的數(shù)率或是以變化的數(shù)率來提供數(shù)據(jù),在傳輸之前數(shù)據(jù)可以被延遲多久和所傳輸?shù)臄?shù)據(jù)丟失是否會是災(zāi)難性的。
10.3.1 設(shè)備配置
不同的操作系統(tǒng)環(huán)境使用不同的軟件元件和不同的事件序列來進(jìn)行設(shè)備配置。USB系統(tǒng)不會假定某個操作系統(tǒng)所使用的方法。但是,任一USB系統(tǒng)的實現(xiàn)都必須要遵循一些基本的要求。USB系統(tǒng)采用了一個稱為集線器驅(qū)動程序的一個USBD的專門的用戶,由它作為一個用于向某個集線器添加設(shè)備和從某個集線器拆除設(shè)備的處理中心。一旦集線器驅(qū)動程序接到了這樣的指示,它就會以某一個操作系統(tǒng)所特定的方式,利用另外的主機軟件和其他USBD客戶來識別和配置設(shè)備。對于每一個設(shè)備而言,必須要在三種類型的配置操作完成以后,它才能為使用做好準(zhǔn)備:
- 設(shè)備配置:包括建立設(shè)備的所有USB參數(shù)和使用該設(shè)備可見的主機資源。這些工作是通過在設(shè)備上設(shè)置配置而完成的。不用對設(shè)備全部重新配置,也可以允許像使用交替的設(shè)置這樣的有限的配置變化存在。一旦一個設(shè)備被配置以后,從他(設(shè)備)的觀點而言它已經(jīng)為使用做好了準(zhǔn)備。
- USB配置:為了實際建立一個準(zhǔn)備有一個客戶來使用的USBD管道,客戶還必須要說明另外的USB信息,而這些信息對于設(shè)備來說是不可見的。這一信息稱為管道原則,描述客戶會如何使用管道。它包括了客戶利用一個IRP所能傳輸肚餓最大數(shù)據(jù)量,客戶可以使用的最大服務(wù)時間間隔和客戶的指示標(biāo)識等項。
- 功能配置:一旦配置類型1和2完成之后,從USB的觀點來看管道已經(jīng)完全為使用做好了準(zhǔn)備。但是,在客戶可以實際使用管道之前,可能還需要額外的由供應(yīng)商或者是設(shè)備類型而定義的建立操作。這一配置是在設(shè)備和客戶之間所進(jìn)行的獨立操作,并沒有被USBD對其進(jìn)行標(biāo)準(zhǔn)化。
配置軟件首先讀取設(shè)備描述符,然后會要求對每一個可能的配置加以說明。它可能使用所提供的信息來裝載一個客戶,例如一個設(shè)備驅(qū)動程序,最初要由它來和設(shè)備進(jìn)行聯(lián)系。配置軟件也許還要加上來自于該設(shè)備驅(qū)動程序的輸入,將為該設(shè)備選擇一個配置方案。啟動一個設(shè)備的配置操作會建立該設(shè)備上的所有端點,并返回一個用于USBD客戶的數(shù)據(jù)傳輸?shù)慕涌诩?。每一個接口都是單個客戶所擁有的管道的集合。最初的配置操作會使用接口的缺省設(shè)置和每一個端點的缺省帶寬。另外,當(dāng)選擇最初的配置方案時,一個USBD實現(xiàn)可以允許客戶說明可以替換的接口。USB系統(tǒng)可以保證有可用的資源來支持該端點,并且如果是這樣的話,就會為其分配所需要的帶寬。
現(xiàn)在,設(shè)備配置已經(jīng)完成,但是所創(chuàng)建的管道并沒有為使用而做好準(zhǔn)備。當(dāng)客戶利用設(shè)置一個原則來說明它是如何同管道進(jìn)行交互的方法來初始化每一個管道時,USB配置操作就可以完成了。說明的信息中有客戶的最大服務(wù)時間間隔和指示信息。作為設(shè)置一個策略后的結(jié)果,USB系統(tǒng)所采取的操作之一就是確定所要求的緩沖區(qū)工作空間比客戶所提供的數(shù)據(jù)緩沖區(qū)空間要大多少。所要求的緩沖區(qū)尺寸根據(jù)客戶所選擇的使用方式和USB系統(tǒng)的每一個傳輸要求為基礎(chǔ)。
當(dāng)IRP完成以后,客戶可以成功的收到指示,或者是出現(xiàn)差錯??蛻粢部梢元毩⒌貑拘裊SB標(biāo)志信息來檢測未被處理的IRP的狀態(tài)。客戶也可以選擇諸如為一個接口啟動一個可交替的設(shè)置或者是改變?yōu)槟硞€管道所分配的帶寬等等配置修改操作。為了實現(xiàn)這些改變,管道或接口必須分別處于空閑狀態(tài)。
10.3.4 公共數(shù)據(jù)定義
為了允許客戶可以盡可能直接地從其設(shè)備接收請求結(jié)果,就要求將處理數(shù)量和設(shè)備同客戶之間所要求的復(fù)制操作減至最低。為了簡化這一過程,IRP的某些控制方面得到了標(biāo)準(zhǔn)化,從而使得客戶所提供的信息可以由堆棧中的不同層次來直接使用。用于對著一個數(shù)據(jù)的特殊格式依賴于操作系統(tǒng)中USBDI的實現(xiàn)。實際上某些數(shù)據(jù)單元對客戶而言根本就不可見,但卻是作為客戶請求的結(jié)果而產(chǎn)生的。接下來的數(shù)據(jù)單元為一個請求定義了有關(guān)的信息:
- 對與這個請求相對應(yīng)的管道的標(biāo)識。標(biāo)識一個管道也包括對用于這一請求的傳輸類型等信息的說明。
- 對某個客戶的指示標(biāo)識。
- 用于傳輸或者是接收的數(shù)據(jù)緩沖區(qū)的位置或是長度。
- 提供該請求的完整狀態(tài)。根據(jù)要求,簡要狀態(tài)和詳細(xì)的有關(guān)于每個處理的狀態(tài)都應(yīng)該提供。
- 工作空間的位置和長度。這與實現(xiàn)方式有關(guān)。
用于將請求傳送給USBD的實際機制與操作系統(tǒng)有關(guān)。但是,除了上述對必須可以使用的與請求相關(guān)的信息所提出的要求之外,還有對如何來處理這些請求的要求。另外,USBD提供了一種機制來為一個缺省管道選擇一個不會被中斷、由供應(yīng)商或者是類型而定的請求集。對于這樣一個不會被中斷的請求集,其他任何請求,包括標(biāo)準(zhǔn)、類型或者是供應(yīng)商請求都不會被插入到操作流中。若這一請求集中的任一請求失敗,那么整個請求集都會被重試。
10.5 通用串行總線驅(qū)動程序(USBD)
USBD的客戶可以向設(shè)備發(fā)出命令,或者是向管道傳輸數(shù)據(jù)流或從管道那里接收數(shù)據(jù)流。USBD為客戶提供了兩組軟件機制:命令機制和管道機制。
命令機制允許客戶對USBD操作進(jìn)行配置和控制,也允許對一個USB設(shè)備進(jìn)行配置和通常的控制。更為特殊的是,命令機制提供了對設(shè)備缺省管道的所有訪問。(缺省管道經(jīng)常被用來實現(xiàn)由命令機制來進(jìn)行中繼的用戶請求的某些部分,但是它卻不能被用戶直接訪問。)
管道機制允許一個USBD客戶來管理某個設(shè)備數(shù)據(jù)和控制傳輸。管道機制不允許一個客戶直接對設(shè)備的缺省管道進(jìn)行尋址。
- 缺省管道:USBD負(fù)責(zé)分配和管理適當(dāng)?shù)木彌_操作,用來支持缺省管道上的傳輸,而這些操作同設(shè)置一個設(shè)備的地址一樣,對于用戶而言是不可見的。對于那些用戶可以直接見到的傳輸而言,例如發(fā)送供應(yīng)商和類型命令或者是讀取一個設(shè)備描述符,該用戶必須提供所需要的緩沖作用。
- 客戶管道。任何一個不為USBD所擁有和管理的管道都可以由一個USBD客戶來擁有和管理。從IUSBD的觀點而言,管道只會為單個客戶所擁有。實際上,當(dāng)使用該管道的時候,只要用戶可以像一個協(xié)調(diào)的組織一樣運轉(zhuǎn),一個合作用戶組就可以管理該管道。
用戶負(fù)責(zé)在其可以獲得的服務(wù)時間內(nèi),提供為該管道的數(shù)據(jù)傳輸速率服務(wù)所需的緩存操作。對工作空間內(nèi)的其它緩存要求則由USB系統(tǒng)來說明。
10.5.4 利用USBD機制來管理USB
配置操作是以每個設(shè)備為基礎(chǔ)而進(jìn)行的,USBD在配置軟件的指揮之下進(jìn)行設(shè)備的配置操作。
初始設(shè)備配置:當(dāng)一個集線器通過其狀態(tài)變化管道報告一個新的USB設(shè)備已經(jīng)接入時,設(shè)備的配置過程就開始了。配置管理服務(wù)允許配置軟件從設(shè)備中所列出的配置集合中挑選出一個USB設(shè)備配置方式。在啟動設(shè)備配置之前,USBD將核實,在配置過程中向所有的端點提供的數(shù)據(jù)傳輸速率不超過根據(jù)當(dāng)前的進(jìn)度表所確定的USB能力。
修改一個設(shè)備配置:配置管理服務(wù)允許配置軟件從設(shè)備所列出的配置集合中挑選出另外一個配置方案來取代一個USB設(shè)備配置。若在新配置過程中向所有端點提供的數(shù)據(jù)傳輸速率同根據(jù)當(dāng)前的進(jìn)度表所確定的USB能力相適應(yīng),該操作就能夠完成,若新的配置被丟棄,則會保留前一個配置。


