usbhost工作流程_第1頁
已閱讀1頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、USB枚舉步驟USB協(xié)議定義了設(shè)備的6種狀態(tài),僅在枚舉過程種,設(shè)備就經(jīng)歷了4個(gè)狀態(tài)的遷移:上電狀態(tài)(Powered),默認(rèn)狀態(tài)(Default),地址狀態(tài)(Address)和配置狀態(tài)(Configured)(其他兩種是連接狀態(tài)(Attached)和掛起狀態(tài)(Suspend))。Attached和Powered狀態(tài)不難理解:當(dāng)一個(gè)設(shè)備被正確插入到主機(jī)的USB接口時(shí),就處于Attached(連接)的狀態(tài)。設(shè)備連接好了,USB設(shè)備就處于Sus

2、pended(掛起)狀態(tài)。USB主機(jī)識(shí)別了設(shè)備,同時(shí)沒有對(duì)設(shè)備進(jìn)行請(qǐng)求,下面步驟是Windows系統(tǒng)下典型的枚舉過程,但是固件不能依此就認(rèn)為所有的枚舉操作都是按照這樣一個(gè)流程行進(jìn)。設(shè)備必須在任何時(shí)候都能正確處理所有的主機(jī)請(qǐng)求。1.用戶把USB設(shè)備插入U(xiǎn)SB端口或給系統(tǒng)啟動(dòng)時(shí)設(shè)備上電這里指的USB端口指的是主機(jī)下的根連接著的設(shè)備處于上電狀態(tài)。hub或主機(jī)下行端口上的hub端口。Hub給端口供電,2.Hub監(jiān)測它各個(gè)端口數(shù)據(jù)線上(DD)的電

3、壓在hub端,數(shù)據(jù)線D和D都有一個(gè)阻值在14.25k到24.8k的下拉電阻Rpd,而在設(shè)備端,D(全速,高速)和D(低速)上有一個(gè)1.5k的上拉電阻Rpu。當(dāng)設(shè)備插入到hub端口時(shí),有上拉電阻的一根數(shù)據(jù)線被拉高到幅值的90%的電壓(大致是3V)。hub檢測到它的一根數(shù)據(jù)線是高電平,就認(rèn)為是有設(shè)備插入,并能根據(jù)是D還是D被拉高來判斷到底是什么設(shè)備(全速低速)插入端口(全速、高速設(shè)備的區(qū)分在后面的章節(jié)中描述)。檢測到設(shè)備后,hub繼續(xù)給設(shè)備

4、供電,但并不急于與設(shè)備進(jìn)行USB傳輸。3.Host了解連接的設(shè)備每個(gè)hub利用它自己的中斷端點(diǎn)向主機(jī)報(bào)告它的各個(gè)端口的狀態(tài)(對(duì)于這個(gè)過程,設(shè)備是看不到的,也不必關(guān)心),報(bào)告的內(nèi)容只是hub端口的設(shè)備連接/斷開的事件。如果有連接/斷開事件發(fā)生,那么信息。host會(huì)發(fā)送一個(gè)Get_Pt_Status請(qǐng)求(request)以了解更多hub上的Get_Pt_Status等請(qǐng)求屬于所有hub都要求支持的hub類標(biāo)準(zhǔn)請(qǐng)求(stardhubclass

5、requests)。4.Hub檢測所插入的設(shè)備是高速還是低速設(shè)備hub通過檢測USB總線空閑(Idle)時(shí)差分線的高低電壓來判斷所連接設(shè)備的速度類型,當(dāng)host發(fā)來Get_Pt_Status請(qǐng)求時(shí),hub就可以將此設(shè)備的速度類型信息回復(fù)給host。(USB2.0規(guī)范要求速度檢測要先于復(fù)位(5.hub復(fù)位設(shè)備當(dāng)主機(jī)獲悉一個(gè)新的設(shè)備后,Reset)操作)。主機(jī)控制器就向hub發(fā)出一個(gè)Set_Pt_Feature請(qǐng)求讓hub復(fù)位其管理的端口。

6、hub通過驅(qū)動(dòng)數(shù)據(jù)線到復(fù)位狀態(tài)(D和D全為低電平),并持續(xù)至少10ms。當(dāng)然,hub不會(huì)把這樣的復(fù)位信號(hào)發(fā)送給其他已有設(shè)備連接的端口,的設(shè)備自然看不到復(fù)位信號(hào),不受影響。6.Host檢測所連接的全速設(shè)備是否是支持高速模式所以其他連在該hub上因?yàn)楦鶕?jù)USB2.0協(xié)議,高速(HighSpeed)設(shè)備在初始時(shí)是默認(rèn)全速(FullSpeed)狀態(tài)運(yùn)行,所以對(duì)于一個(gè)支持USB2.0的高速hub,當(dāng)它發(fā)現(xiàn)它的端口連接的是一個(gè)全速設(shè)備時(shí),會(huì)進(jìn)行高速

7、檢測,看看目前這個(gè)設(shè)備是否還支持高速傳輸,否則就一直在全速狀態(tài)下工作。7.Hub建立設(shè)備和主機(jī)之間的信息通道主機(jī)不停得向hub發(fā)送Get_Pt_Status請(qǐng)求,以查詢?cè)O(shè)備是否復(fù)位成功。Hub返回的報(bào)告信息中有專門的一位用來標(biāo)志設(shè)備的復(fù)位狀態(tài)。當(dāng)hub撤銷了復(fù)位信號(hào),設(shè)備就處于默認(rèn)/空閑狀態(tài)(求。設(shè)備和主機(jī)之間的通信通過控制傳輸,默認(rèn)地址Defaultstate),準(zhǔn)備著主機(jī)發(fā)來的請(qǐng)0,端點(diǎn)號(hào)0進(jìn)行。在此時(shí),設(shè)備能從總線上得到的最大電流

8、是100mA。8.主機(jī)發(fā)送GetDe請(qǐng)求獲取默認(rèn)管道的最大包長度默認(rèn)管道(DefaultPipe)在設(shè)備一端來看就是端點(diǎn)端點(diǎn)0,雖然所有位分配地址的設(shè)備都是通過地址0。主機(jī)此時(shí)發(fā)送的請(qǐng)求是默認(rèn)地址0來獲取主機(jī)發(fā)來的信息,但由于枚舉過0,程不是多個(gè)設(shè)備并行處理,響應(yīng)主機(jī)發(fā)來的請(qǐng)求。而是一次枚舉一個(gè)設(shè)備的方式進(jìn)行,所以不會(huì)發(fā)生多個(gè)設(shè)備同時(shí)設(shè)備描述符的第8字節(jié)代表設(shè)備端點(diǎn)0的最大包大小。對(duì)于Windows系統(tǒng)來說,GetDe請(qǐng)求中的wLeng

9、th一項(xiàng)都會(huì)設(shè)為64,雖然說設(shè)備所返回的設(shè)備描述符(DeviceDe)長度只有18字節(jié),但系統(tǒng)也不在乎,此時(shí),描述符的長度信息對(duì)它來說是最重要的,其他的瞄一眼就過了。Windows系統(tǒng)還有個(gè)怪癖,當(dāng)完成第一次的控制傳輸后,也就是完成控制傳輸?shù)臓顟B(tài)階段,系統(tǒng)會(huì)要求hub對(duì)設(shè)備進(jìn)行再一次的復(fù)位操作再次復(fù)位的目的是使設(shè)備進(jìn)入一個(gè)確定的狀態(tài)。(USB規(guī)范里面可沒這要求)。9.主機(jī)給設(shè)備分配一個(gè)地址(Address)主機(jī)控制器通過Set_Addr

10、ess請(qǐng)求向設(shè)備分配一個(gè)唯一的地址。在完成這次傳輸之后,設(shè)備進(jìn)入地址狀態(tài)(Addressstate),之后就啟用新地址繼續(xù)與主機(jī)通信。是終生制的,設(shè)備在,地址在;設(shè)備消失(被拔出,復(fù)位,系統(tǒng)重啟)個(gè)設(shè)備當(dāng)再次被枚舉后得到的地址不一定是上次那個(gè)了。10.主機(jī)獲取設(shè)備的信息主機(jī)發(fā)送Get_De請(qǐng)求到新地址讀取設(shè)備描述符,這次主機(jī)發(fā)送這個(gè)地址對(duì)于設(shè)備來說,地址被收回。同一Get_De請(qǐng)求可算是誠心,它會(huì)認(rèn)真解析設(shè)備描述符的內(nèi)容。設(shè)備描述符內(nèi)信

11、息包括端點(diǎn)0的最大包長度,設(shè)備所支持的配置(Configuration)個(gè)數(shù),設(shè)備類型,VID(VendID,由USBIF分配),PID(ProductID,由廠商自己定制)等信息。Get_De請(qǐng)求(Devicetype)和設(shè)備描述符(已抹去VID,PID等信息)。之后主機(jī)發(fā)送Get_De請(qǐng)求,讀取配置描述符(ConfigurationDe),字符串等,逐一了解設(shè)備更詳細(xì)的信息。事實(shí)上,對(duì)于配置描述符的標(biāo)準(zhǔn)請(qǐng)求中,有時(shí)wLength一項(xiàng)

12、會(huì)大于實(shí)際配置描述符的長度(9字節(jié)),比如255。這樣的效果便是:主機(jī)發(fā)送了一個(gè)Get_De_Configuration的請(qǐng)求,設(shè)備會(huì)把接口描述符,端點(diǎn)描述符等后續(xù)描述符一并回給主機(jī),主機(jī)則根據(jù)描述符頭部的標(biāo)志判斷送上來的具體是何種描述符。11.主機(jī)給設(shè)備掛載驅(qū)動(dòng)(復(fù)合設(shè)備除外)主機(jī)通過解析描述符后對(duì)設(shè)備有了足夠的了解,會(huì)選擇一個(gè)最合適的驅(qū)動(dòng)給設(shè)備。在驅(qū)動(dòng)的選擇過程中,Windows系統(tǒng)會(huì)和系統(tǒng)inf文件里的廠商ID,產(chǎn)品ID,有時(shí)甚至

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論