久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: USB開發(fā)中的幾個問題學(xué)習(xí)與總結(jié) [打印本頁]

作者: 15546636181    時間: 2018-9-10 11:40
標(biāo)題: USB開發(fā)中的幾個問題學(xué)習(xí)與總結(jié)
最初買了北通25塊錢的小手柄,然后通過USBVIEW軟件觀察到了如下信息:

這些信息是當(dāng)手柄插入電腦USB時,主機請求手柄發(fā)送它的各方面信息,手柄回傳給電腦的。
對于一個可編程的USB設(shè)備,我們將這些信息封裝到一個數(shù)據(jù)機構(gòu)中,當(dāng)電腦詢問時,我們回傳給電腦,電腦有了這些信息之后我們就可以和電腦進行通信了。(參見本文件下的《USB的八個問題和答案》中第八個問題)


USB基礎(chǔ)到完整驅(qū)動開發(fā)...
1 USB標(biāo)準(zhǔn)
在新的USB2.0標(biāo)準(zhǔn)中,USB1.1的說法已經(jīng)不復(fù)存在了,都被統(tǒng)稱為USB2.0,在它下面又細(xì)分三種規(guī)格:Low-speedFull-speedHigh-speed 。乍一看這三種接口都是USB2.0但他們的傳輸速率相差甚遠(yuǎn),USB2.0 Low-speed主要用于鍵盤,鼠標(biāo)等設(shè)備,它的傳輸速率只有1.5MbpsUSB2.0 Full-speed就是曾經(jīng)的 USB1.0,他的傳輸速率理論上可以達到12Mbps,適用于一些對數(shù)據(jù)傳輸要求不高的設(shè)備的接口; USB2.0 High-speed 才是真正意義上的USB2.0,他的傳輸速率理論上可達到480Mbps
2. USB中斷傳輸?shù)木视懻?/font>
Escape
呵呵。大家好! ;)
我想請教一個問題:

usb中斷傳輸,調(diào)用函數(shù)UsbBuildGetInterrupt orBulkTransferRequest

后,數(shù)據(jù)是怎樣通過底層軟件的輪詢,被傳輸?shù)骄彌_區(qū)的。
是不是上層驅(qū)動程序完全不需要關(guān)心這個輪詢的過程?
輪詢過程已經(jīng)被完全封裝了?
Jinghuiren
  對的,當(dāng)你調(diào)用了IoCallDriver()后,底層驅(qū)動會按照你設(shè)置的輪詢間隔(比如1ms),向設(shè)備發(fā)送in或者out令牌,直到本次調(diào)用的數(shù)據(jù)全部完成(比如64k)后返回操作方式和批量傳輸完全一樣。
  
Pengenwen
在中斷傳輸中,驅(qū)動一般需要維持一個永不完成的URB,以便驅(qū)動不斷地從固件查詢數(shù)據(jù),然后通過事件方式通知應(yīng)用程序。
Windrv
pengenwen 說的不對。
USB是共享總線,如果在USB HUB上有多個設(shè)備同時進行大數(shù)據(jù)量傳輸。例如設(shè)備A在傳輸4MB的數(shù)據(jù),那么設(shè)備B在設(shè)備A數(shù)據(jù)傳輸期間有可能得不到響應(yīng)。如何保證設(shè)備B在其它設(shè)備傳輸數(shù)據(jù)時也能及時得到響應(yīng)?設(shè)備B可以設(shè)立中斷傳輸端口,這樣Host Controller會每隔一定的時間間隔(例如1ms),保證向設(shè)備B發(fā)出IN令牌,使得B有機會發(fā)出數(shù)據(jù)。

所以中斷傳輸?shù)臄?shù)據(jù)量不能太大,在USB1.1中最多只能16bytes.

USB 2.0的協(xié)議作了一些修改,中斷傳輸與Bulk傳輸?shù)膮^(qū)別不大,數(shù)據(jù)量的限制也沒有了。不過,中斷傳輸?shù)纳鲜鰴C制還是在的。
如果USBhost controller總是被一個設(shè)備獨占,那也就沒有中斷傳輸與Bulk傳輸?shù)膮^(qū)別了。
至于pengenwen說的是USB設(shè)備驅(qū)動程序上的實現(xiàn)技術(shù),與中斷傳輸?shù)奶攸c無關(guān)。事實上,這個永不完成的URB”也可以用來讀Bulk傳輸。
Lejianz
請教windrv一個問題,在固件編程時,USB通信一般通過外部中斷來實現(xiàn),如果我在做某些工作時,不能及時響應(yīng)此中斷,那么不響應(yīng)這個中斷的時間有多長?我知道總線如果在3ms里沒響應(yīng),將會掛起,這段時間是否跟中斷傳輸有關(guān)?
Jinghuiren
對于控制傳輸,通常沒有數(shù)據(jù)階段傳輸?shù)囊?/font>50ms內(nèi)完成,如果有數(shù)據(jù)階段則第一個數(shù)據(jù)包要在500ms內(nèi)發(fā)送給主機,之后的一次增加500ms
對于批量傳輸,如果驅(qū)動程序沒有超時控制,則什么時候響應(yīng)都行
如果有則要在超時控制的時間范圍內(nèi)完成
對于中斷傳輸,和批量傳輸基本一樣
對于ISO傳輸,應(yīng)該是立即響應(yīng)吧,要不然怎么能保證同步數(shù)據(jù)流呢?
Escape
對于控制傳輸,通常沒有數(shù)據(jù)階段傳輸?shù)囊?/font>50ms內(nèi)完成,如果有數(shù)據(jù)階段則第一個數(shù)據(jù)包要在500ms內(nèi)發(fā)送給主機,之后的一次增加500ms
對于批量傳輸,如果驅(qū)動程序沒有超時控制,則什么時候響應(yīng)都行
如果有則要在超時控制的時間范圍內(nèi)完成
對于中斷傳輸,和批量傳輸基本一樣
對于ISO傳輸,應(yīng)該是立即響應(yīng)吧,要不然怎么能保證同步數(shù)據(jù)流呢?
有道理。
iso傳輸在競爭帶寬的時候,容易獲得成功。iso傳輸
最大可獲取90%的可用帶寬。在這種情況下,需要iso傳輸
的另外一個設(shè)備的傳輸請求有可能會失敗。
Windrv
USB是主從通訊模式,由Host controller控制何時與哪個設(shè)備的哪個端口通訊。當(dāng)它需要從某個EP讀入數(shù)據(jù)時,它會發(fā)一個IN令牌給此端口。端口收到令牌后,必須在某一時間間隔內(nèi)把數(shù)據(jù)發(fā)給Host Controller然后返回一個"OK"令牌;如果端口在此時間內(nèi)無法返回數(shù)據(jù),也必須返回一個NAK令牌,那么Host Controller下次會繼續(xù)發(fā)IN令牌給此端口。如果端口在此時間間隔內(nèi)沒有任何令牌返回,Host Controller會把這端口標(biāo)為STALL,下次不再查詢此端口。
對于lejianz所說的問題,我覺得firmware在做某些工作時,在3ms內(nèi)沒有返回NAK token以響應(yīng)總線的IN token,所以被總線掛起,即STALL 不過,掛起了也還可以用ResetPipe()恢復(fù)此端口。
EZUSB做的比較好,它的USB core在數(shù)據(jù)沒有Ready的時候會自動返回NAK令牌,不占CPU的資源。所以,在批量/中斷傳輸時,什么時候響應(yīng)都行。
不過,對于這類總線掛起的問題,最好用總線分析儀去監(jiān)測一下。Host Controller的生產(chǎn)廠商不一樣,有時候是USB卡的問題。
Lejianz
謝謝windrv大俠的精彩答復(fù),按大俠所說,如果EZUSB設(shè)備的一個IN令牌包傳輸過程中,SIE能自動發(fā)也NAK,而不是STALL,那么我可以在很長一段時間里不響應(yīng)此IN中斷,因為有NAK說明設(shè)備在忙。這也印證我在ICE仿真時,當(dāng)在中斷里下斷點時,設(shè)備管理器里的設(shè)備不會消失。但我想這段時間并不是jinghuiren大俠所說的500ms時間,我一直沒有找到相關(guān)的敘述。windrv大俠能否再看一下。
Windrv
只要設(shè)備能回應(yīng)NAK 讀數(shù)的URB等多長時間都沒有問題,通訊不會斷掉。在我們的應(yīng)用中,讀數(shù)的URB經(jīng)常會等好幾個小時。
不過,你說的設(shè)備在設(shè)備管理器里消失是另外一個問題。即使EPSTALLUSB 的設(shè)備對象還是在Windows系統(tǒng)里的,不會消失。
Mboma
windrv,我覺得pengenwen說的"在中斷傳輸中,驅(qū)動一般需要維持一個永不完成的URB,以便驅(qū)動不斷地從固件查詢數(shù)據(jù),然后通過事件方式通知應(yīng)用程序"沒有什么不對的啊,通常在usb驅(qū)動中處理中斷傳輸都可以用這種實現(xiàn)方式的啊。我覺得他說的東西跟你說的不是一個側(cè)重點。在Oney的書中也是用的這種方式。
想請教您一個問題,中斷傳輸只能獲取in的數(shù)據(jù)么?如果我有hostusb設(shè)備發(fā)出的用戶數(shù)據(jù),但是usb設(shè)備只有一個控制端點和2interrupt端點,能否實現(xiàn)out數(shù)據(jù)?謝謝!
Metalwing
WINDRV又見你了,想問你個問題.
我的板子在20MHZ(DMA讀寫)頻率下很正常,可是我把頻率提到40MHZ就不行了,無法接到總線上DMA數(shù)據(jù)傳輸?shù)降闹袛?/font>,也無法接到DMA傳輸完成的中斷(DMA一直在傳輸),我用的是ISP 1581芯片.是否是51的處理頻率(12MHZ,一個工作周期是1微秒)跟不上?



全部資料51hei下載地址:
USB開發(fā)中的幾個問題.rar (1.07 MB, 下載次數(shù): 14)



作者: xikree    時間: 2020-5-26 19:59
資料很不錯!!正在搞USB,使用的是ST的芯片,但是發(fā)現(xiàn)device->host 控制傳輸大于32字節(jié)的數(shù)據(jù)就收不到了,或者說發(fā)不出去了。不知道什么原因,bushound抓包什么都抓不到。
作者: ioriysu    時間: 2020-5-27 07:24
這個資料很不錯,學(xué)習(xí)了。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 在线看亚洲 | 亚洲天堂精品久久 | 久久久久久久夜 | 亚洲精品一区二区三区四区高清 | 国产一区二区高清在线 | 99re66在线观看精品热 | 日日天天| 亚洲视频欧美视频 | 97精品超碰一区二区三区 | 一区二区三区在线免费观看 | 国产精品一区二区三区免费观看 | 日日夜夜天天 | 999精品视频 | 国产精品久久久久婷婷二区次 | 久久人体视频 | 国产真实精品久久二三区 | 天天天天操| 国产二区视频 | 精品久久久久久18免费网站 | 日本激情视频中文字幕 | 91精品国产手机 | 荷兰欧美一级毛片 | 毛片视频免费观看 | 欧美一区二区三区在线播放 | 高清久久 | 精品久久一区二区三区 | 色妞av| 精品国产欧美一区二区 | 最新黄色在线观看 | 国产精品久久久久久久久久免费看 | 男人的天堂视频网站 | 黄色片大全在线观看 | 日韩在线精品强乱中文字幕 | 粉嫩国产精品一区二区在线观看 | 手机三级电影 | 99精品久久久久久 | .国产精品成人自产拍在线观看6 | 欧美成人免费在线视频 | 91看片免费 | 久久久91精品国产一区二区三区 | 亚洲精品一区二区三区 |