欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
[z]OTG(usb2.0)強制Host調試全記錄

轉載請注明:http://blog.csdn.net/ccwwff/archive/2011/06/10/6537452.aspx

一、調試背景:

我所使用的處理器有一個(gè)USB1.1 host接口,但是速度太慢,最高速度12Mbps;另外還有一個(gè)OTG接口,兼容EHCI(host),device, OTG, 通常這個(gè)接口會(huì )用來(lái)處理MassstorageAndroidadb調試,作為slave接口,連接PC機。也可以用來(lái)連接如wifi,3G,無(wú)線(xiàn)電視等高速通信模塊,這里將作為host接口。因此,這里就需復用一個(gè)OTG接口,分別充當hostdevice的角色,目前實(shí)現方法有兩種:模擬開(kāi)關(guān)與hub連接。模擬開(kāi)關(guān)我認為控制簡(jiǎn)單,且不會(huì )影響連接速度。

 

二、調試的這些招數:

1.這行文字的出現,讓我看到了春天:

usb1-1: new high speed USB device using xxx9xx-ehci and address 2”

 

調試usbhost驅動(dòng),這行串口輸出的文字,一定能讓你興奮無(wú)比,因為這代表這你要的USBehci(host)設備驅動(dòng)已經(jīng)加載,至于成功不成功,還得往后看,如果后面再沒(méi)有錯誤信息出現,那么,恭喜你,你的USB設備已經(jīng)成功枚舉,后面就是加載廠(chǎng)商提供的設備驅動(dòng)了,如果您比較幸運,輕松就可以完成工作,拿到獎金。但是,不一定每一次都會(huì )這么的幸運,人總需要在逆鏡中成長(cháng),為了這一行文字,不幸的朋友和幸運的朋友都跟我一起來(lái)看看其中的奧妙吧。

 

1)首先我們來(lái)看看你的系統有幾個(gè)USB相關(guān)的驅動(dòng),分析你的USB驅動(dòng)架構;

 

xxx-otg

xxx-u2o

xxx-u2h

xxx-ehci-> 對應于 drivers/usb/host/ehci-xxx.c,drivers/usb/host/ehci-hcd.c中有對應注冊的模塊位置;

 

massstorage, adb驅動(dòng)通常都會(huì )在gadget驅動(dòng)中實(shí)現。

 

2)找到我們想要的USB模塊吧,如果沒(méi)有就自己依照現有例程編一個(gè)吧,EHCI有自己的標準驅動(dòng)函數結構,并在drivers/usb/host/ehci-hcd.c注冊你要的ehcihost驅動(dòng);

 

3)ehci-xxx.c中,通過(guò)usb_add_hcd()加載你想要的hcd驅動(dòng),也可通過(guò)usb_remove_hcd()移除hcd驅動(dòng),在probe加載hcd驅動(dòng)之后,就可以在設備啟動(dòng)上電后,檢測到,并打印出上面引號中的一行;

 

4)khubd是一個(gè)關(guān)鍵的內核進(jìn)程,USB設備的即插即用就全靠他了,在drivers/usb/core/hub.c中實(shí)現,系統啟動(dòng)后,用ps命令可以看到這個(gè)內核線(xiàn)程。

 

2. 這行文字一定讓你瘋狂,khubdtimed out,天哪。Hi,朋友,忍忍吧,看完所有的USB代碼,仍然不知所措,這時(shí)候,只能?chē)@息一下可憐的工程師命運,認命吧,這就是工程師的宿命,也難怪有兩下嘴皮子工夫的都不來(lái)干這苦哈哈事情,也不能寐的日子從此開(kāi)始了,可產(chǎn)生的原因和結果,往往讓你大跌眼鏡。不管怎么樣,還是先來(lái)分析一下產(chǎn)生的原因吧。

usb1-1: khubd timed out on ep0in len=18/64”

 

1)先看一看這行文字在哪里吧,find命令在drivers/usb/core/message.cusb_start_wait_urb()函數里發(fā)現了它,執行wait_for_complete_timeout()后出現超時(shí),而報錯;

2)再往下看吧,wait_for_complete_timeout()等待context->done的置位,如果在限定時(shí)間沒(méi)有置位,則出現超時(shí)錯誤,然后往上層函數返回錯誤,然后USB會(huì )嘗試再枚舉幾次,打印如下文字:

usb1-1: new high speed USB device using xxx9xx-ehci and address 2”

usb1-1: new high speed USB device using xxx9xx-ehci and address 3”

usb1-1: new high speed USB device using xxx9xx-ehci and address 4”

最后以無(wú)奈地失敗告終。我這里便跟系統開(kāi)了個(gè)玩笑,不管超時(shí)了,直接將其返回0(成功),哈哈,看來(lái)軟件沒(méi)有我想象想象的智能,居然顯示枚舉成功了,我不知道是該哭還是笑,是不是黎明前的黑暗呢,不管怎樣,生活還得繼續,堅持就會(huì )成功;

 

3)context->done到底在哪里置位呀,調查中發(fā)現,ehci_irq調用到了urb->complete(),context->done進(jìn)行置位,調試發(fā)現ehci中斷啟動(dòng)正常,ehci_irq()也會(huì )啟動(dòng),為什么就是不會(huì )調用到urb->complete()呢?天哪,中斷狀態(tài)寄存器狀態(tài)不正常呀,根本檢測不到是什么中斷,也就不對其中斷進(jìn)行處理了,系統認為已經(jīng)處理好了中斷,不理他了,讓khubd苦苦相等,愁白了頭呀,沒(méi)路了。這里還有一個(gè)奇怪的現象,系統啟動(dòng)里,設備ehci中斷狀態(tài)竟然正常,枚舉成功,再次啟動(dòng)USB設備,就會(huì )出現timeout的錯誤;

 

4)實(shí)在沒(méi)招,按照多年調試驅動(dòng)的直覺(jué)經(jīng)驗,開(kāi)始懷疑是不是USBreset不正常,開(kāi)始啃USBspecification, 研究USBreset, 發(fā)現除了SE0信號與PCreset信號有些差別外,沒(méi)什么本質(zhì)的差別,況且啟動(dòng)時(shí)的成功枚舉時(shí),reset信號也差不了太多呀,我只有無(wú)情地排除了這個(gè)假設;

 

5)山重水復疑無(wú)路”,也不知道那“一村”什么時(shí)候才能找到了,喝杯茶吧。之前也試了好多次,IDpin腳接地,以前也調過(guò),一般IDpin腳接地后,host驅動(dòng)加載都很正常,這次發(fā)現都不靈了。一杯茶水下肚,奇跡發(fā)生了,看來(lái)還是特級龍井的威力大呀,啟動(dòng)后,IDpin腳接地,再次加載驅動(dòng),中斷狀態(tài)正常,枚舉成功,這樣屢試不爽,次次成功。

 

3.看到類(lèi)似這一行文字,沒(méi)有別的錯誤出現,朋友,如果幾天沒(méi)睡個(gè)好覺(jué),那么什么也別想了,好好睡一覺(jué),再干吧。多少美好的青春歲月,流失到了這如煙如海的代碼之中,別迷失了自我,還有更多比這代碼更重要的東西在。痛苦在這里也暫告一段落,找個(gè)電影好好欣賞一下吧,忘記昨日的痛苦,享受一下成就,盡管明天還有痛。

usb1-1: configuration #1 chosen from 1 choice?!?/p>

 

如果打開(kāi)了調試用的宏定義,還會(huì )看到以下更詳細的枚舉信息。

usb1-1: New USB device found, idVendor=148f, idProduct=3070

usb1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3

usb1-1: Product: 802.11 n WLAN

usb1-1: Manufacturer: Ralink

usb1-1: SerialNumber: 1.0

 

4.世界永遠都不是千篇一率的,不要永遠期望自已掉進(jìn)的是同一個(gè)陷井,下一次你遇到的不一定是同樣的問(wèn)題,從原理上根本的掌握,才能真正的處變不驚,成為一個(gè)真正成熟而優(yōu)秀的BSP工程師。建議認真的通篇讀一讀第三部分提到的標準文檔,比看任何資料都有用,當然這要考驗你的英文功底了。真正優(yōu)秀的BSP工程師,不能僅僅是軟件,對硬件時(shí)序更應成竹在胸。這里所看的現象,不一定是您能遇上的,對設備時(shí)序的理解才是真正的王道。

我們不妨來(lái)看看幾個(gè)USB的時(shí)序吧,幾個(gè)經(jīng)驗跟大家分享一下吧。

 

1reset時(shí)序:

 

(

1)

 

(2)

 

如圖1,2, 兩根信號線(xiàn)分別是USBD+/D- pin腳,圖1是與PCUSB連接時(shí),產(chǎn)生的reset信號,SE0,KJKJKJ信號都非常清楚,圖2是我所調試的嵌入式USB設備連接時(shí),

產(chǎn)生的reset信號,SE0信號表現的不是很清楚,其實(shí)我后來(lái)發(fā)現,各種不同設備是有差異的,這也是正常的reset時(shí)序。

 

2)枚舉過(guò)程時(shí)序:

(3)

3是一個(gè)USBreset,設備枚舉的數據傳輸過(guò)程,USB插入后,D+拉低,然后reset,然后,開(kāi)始數據傳輸,USB2.0數據傳輸的脈沖比較低,一般只有500mV左右。

 

三、建議一定要看的參考資料:

 

1.Universal Serial Bus Specification, Rev. 2.0.

這個(gè)是對付USB必備的寶典,個(gè)人認為第七章和第九章是需要認真讀的,特別是第七章,主要是講接口的時(shí)序,不妨用示波器對照分析一下,一定收獲不小,哥們,行動(dòng)吧,別看著(zhù)問(wèn)題束手無(wú)策。

 

2.Enhanced Host Control Interface Specification for Universal SerialBus.

這個(gè)是USB補充標準文檔,如果你的USBhost也是EHCI標準的,那么跟你的CPUspec中描述的EHCI章節對照閱讀一下吧,有些不一定會(huì )是完全標準的EHCI接口,所以寄存器定義和配備都不會(huì )完全一樣,不過(guò)也都大同小異了。

 

3.On-The-Go Supplement to the USB2.0 Specification, Rev 1.0

這也是USB的增補文檔,OTG接口可以做host角色,也可以作device角色,但他不是Host,也不是device,在他確認自己的角色之前,一般有兩個(gè)硬件協(xié)議時(shí)序:HNP,SRP, 不過(guò)我遇到的真正支持OTG的設備不多,那最后,我只有強制將其設置為Host角色或者Device角色了,那么OTG接口的IDpin腳就可以實(shí)現你的愿望了,如果要強制為Host,ID pin腳就需要拉低,OTG文檔要求IDpin腳對地不能高于10Ω。詳細的自己去學(xué)習吧。

 

4.USBlyzer工具,PC上的好工具,學(xué)習分析USB協(xié)議的好工具,好好利用一下吧。

 

 

 

 

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
USB OTG插入檢測識別
兩種數據接頭進(jìn)行焊接,無(wú)需電腦也能讀取出U盤(pán)中的數據
給你的小米手機做一個(gè)OTG存儲如何?
usb otg 分析
RFID讀寫(xiě)器的PS/2接口電路設計
手機OTG有什么用?
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久