2007年4月24日 星期二

又一個USB 奇怪問題


話說剛抓完人家一個在VISTA 上奇怪的測試問題後,

一位輾轉經由朋友介紹的台中朋友也有不同的USB 奇怪現象...

他的USB 平台是 Embedded system 執行  Windows CE 的!

Of Course ....人家是ARM9 平台的...這樣的組合不就是大家目前所最熱衷的嗎?!

版主只能說生不逢時,這種平台一直沒機會好好研究...

今天剛好有人願意把這東西分享給版主...版主就交個朋友吧!

------

這顆IC可不是我們台灣local 的IC 喔~否則,原廠早就被叫來罰站了囉!

人家可是鼎鼎有名的國外大廠--- xxx ,嘻...嘻...目前還不能講出來 ....

否則會被海K的!---不過,我們還是就事論事的看看他所發生的問題點...

功能很簡單:人家利用他的ARM9 接USB 滑鼠及讀隨身碟資料 ! ---夠稀疏平常了吧!

但很奇怪的是:隨身碟稍微讀一下就會死機....

人家好可憐喔~被人家怪說:版子硬體不乾淨,造成讀資料不穩...

已經重複洗了PCB好幾版...還是六層外加一片四層版....夠可憐了吧!

----

剛開始版主也是懷疑是板子的問題,因為,他們發現有些板子會發生問題,有些不會....

但經由USB Anaylser 分析後....

版主是越來越覺得這號稱 ARM9 IC的USB介面可能有問題...

------------------------------------------------------------------

大家都很想學USB的東西....但學東西容易,要會抓USB問題就沒那麼容易了...

就像許多人會寫程式,但是如何程式偵錯與除錯...呵...呵...就不容易啊!

------------------------------------------------------------------------------------

現象一:

    為何在讀隨身碟的 BOT 過程中,隨身碟突然收到一個 RESET ?

(一般這種RESET 大多是HOST 發出的!.. USB Device 端是不會發這種命令的!
原本以為是硬體的電路問題,但從USB Inspector 上來看這個訊號...
因為訊號是很漂亮的...為什麼?!因為沒有『紅紅的』啦!
----什麼是『紅紅的』?您看下圖就知道了...
版主開始是比較不覺得是硬體電路版的問題!)

上圖中的這個有錯誤的 Packet 的現象,這應該完全是 HOST 發出來的東西!
而且是CRC 值錯誤。....光這點就讓我越來越覺得這個USB HOST可能真的有問題?!
----
   這裡有一個很好玩的事:當您的USB裝置上有接高速裝置又接低速裝置
(像滑鼠這種東西時...) 您就會看到這些很討厭的  PRE 的東西...
什麼是討厭的?!因為您USB線上就有一大堆『閒雜人士』...
這對一些不是很熟練的USB工程師來說,是很辛苦的!

嘩~ 竟然有錯誤的Packet size.... 不過,這個問題很難說是 USB Device 的問題!

因為資料的錯誤是從USB 的Packet ID 就錯了~USB HOST 也有嫌疑...

然後在看到這個問題...呵...呵...呵...呵... 真的要懷疑USB HOST有問題了!

這個問題就更離譜了,為何 USB Device 已經回正確的  64 Bytes 資料,
為何 HOST 端卻沒有回 Ack 呢?!而且就直接重新發出Enumeration 命令?!
 
 看這個圖可以從兩個方向來判斷錯誤....(如果我是原廠的工程師的話...)
第一:會不會是啓B頻寬問題?!最後一筆64 bytes 會不會SOF的關係而造成ACK沒發?! 
第二:會不會是那個低速裝置造成USB控制錯亂?...
 
所以,我們就把SOF及NAk 打開看:

看來上述的兩個懷疑點不成立了.... 因為以BOT 來說 :兩個 SOF之間的頻寬還蠻充裕的...

而且那個低速裝置的Protocol 也是在五個SOF 才發出的!...

HOST  該回的ACK 真的"人間蒸發" 了?!
原本以為是是那個低速裝置的Protocol 所引起的...
但看到那個低速裝置的Protocol 是在五個SOF 後才發出的~
.....
這個ACK 為何HOST沒發出來?就真的要原廠好好的解釋一下了!
 
   光是這個現象,不要說怪板子硬體的問題...原廠得好好解釋一下這個問題了...
----
 
    後記:很好玩吧 ! 我們作系統應用的,往往拿了一個平台就拼命的往下作應用。
 
有時不會懷疑人家的平台有問題...尤其是國外來的『名牌』....
 
但是當您看到這個問題時,您要不要勇敢的去質疑人家的平台?!
 
.... 所謂的勇敢與勇氣就是來自於您的專業....
 
專業就是來自於您的學習與專注.... 或許,從這個小小的案例,
 
可以提供給時下作USB 的工程師們一個值得借鏡的學習典範!
 
若有任何問題,也歡迎隨時提出!
 
也分享給各位! 謝謝指教 !
 

2 則留言:

  1. 不知道版主說的這顆ARM9是不是這網址裡說的那顆?
    如果是的話,裡面的解決方案也許可供參考
    ARM9 USB

    回覆刪除
  2. 賈老師的真老公2007年5月7日 晚上8:02

    :-/   喔?!原來ARM9 USB 有Bug 還不只一家喔! :)

    而且還都是國際大廠喔...
    其實,也不意外,據說:連Intel 有些晶片也是有Bug 的。
     (我這裡說的不是Intel... Intel 已經把他的ARM 相關產品賣掉了)
    有Bug 晶片才有機會改版嘛!  :">   :))

    回覆刪除