每次當(dāng)插上鼠標(biāo)或者U盤的時(shí)候,電腦是怎么知道是什么設(shè)備的呢?這里用到的就是枚舉了。枚舉,其實(shí)就是讓HOST認(rèn)識(shí)這個(gè)USB涉筆,并且為該設(shè)備準(zhǔn)備資源,建立好主機(jī)和設(shè)備之間的數(shù)據(jù)傳遞機(jī)制。USB設(shè)備枚舉過(guò)程可以分為8個(gè)部分:1、 獲取設(shè)備描述符2、 復(fù)位3、 設(shè)置地址4、 再次獲取設(shè)備描述符5、 獲取配置描述符6、 獲取接口、端點(diǎn)描述符7、 獲取字符串描述符8、 選擇設(shè)備配置
先看一下上篇文章看的USB鼠標(biāo)枚舉的包吧。那樣更加明顯易懂。
1、 獲取設(shè)備描述符
這次傳輸方式是控制傳輸,她由5個(gè)事務(wù)組成,分別是SETUP、IN、IN、IN、OUT。
首先看第一個(gè)事務(wù)即SETUP事務(wù)的data數(shù)據(jù),根據(jù)其數(shù)據(jù)再根據(jù)usb協(xié)議中的setup協(xié)議可以知道其含義了。下面按照自己來(lái)看協(xié)議
2、 復(fù)位
3、 設(shè)置地址
4、? 再次獲取設(shè)備描述符這個(gè)是第2部分是一樣的,就不再分析了。??
5、 獲取配置描述符
看第一行就知道了這個(gè)是GET_DESCRIPTOR,CONFIGURATION descriptor。下面還是看下具體的事務(wù)吧。
首先還是SETUP事務(wù)了,看數(shù)據(jù)80 06就可以知道了是設(shè)備要發(fā)描述符給主機(jī),而02就表示configuration,就是配置描述符了,
接著就是IN事務(wù),設(shè)備給主機(jī)發(fā)送數(shù)據(jù)了。具體的數(shù)據(jù)含義看下圖。
最后就是OUT事務(wù)。
6、 獲取接口、端點(diǎn)描述符
還是老方法,看SETUP事務(wù),和上一個(gè)一樣,是獲取配置描述符,這里的配置描述符。
具體含義,看下面的圖就明白了。
7、 獲取字符串描述符
這里就不多做分析了。8、 選擇設(shè)備配置
這里,SETUP事務(wù),主要是DEVICE的SET_CONFIGURATION。好了,差不多USB的枚舉就是這么回事了。
-
usb
+關(guān)注
關(guān)注
60文章
7876瀏覽量
263692 -
電腦
+關(guān)注
關(guān)注
15文章
1677瀏覽量
68606 -
Host
+關(guān)注
關(guān)注
0文章
31瀏覽量
34568
原文標(biāo)題:科普!插上USB設(shè)備后電腦是怎么識(shí)別的呢?
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論