2008年11月26日 星期三

USB DIY-- 自學計畫(二)

好吧,我們接下來就實際把原廠所附的USB原始程式給跑起來,

然後實際的操作一遍。....以利我們觀察一下結果。

原則上,我們都不對原廠所附的程式作任何修改,直接組譯下載。

結果呢,我們可以很快到的看到在電腦裝置裡,出現該USB 裝置。

(圖)

我們用的USB 驅動程式也是原廠所給的....不過呢?!原廠也有附上

驅動程式的原始碼,可以供使用者自行修改之。

只不過,使用者要有Window XP DDK 2600 ,才能完成組譯。

我把他所附的驅動程式組譯之後,竟然發現兩者之間的程式大小不一樣!!

先不管了...我們還是先採用原廠的驅動程式...

-----------------
當我們看到電腦出現USB 裝置時,一般的初學者,都會有一股小小的成就感,

覺得好像學USB 就是這麼簡單嘛!....我也會了....

這好像一般時下一些菜鳥工程師常犯的毛病,大陸工程師也是如此,

只不過,寫過一兩個程式,或是向這般跑一次範例程式,就到處炫耀跟別人說:

USB 這種東西很簡單啊... 我也做過....就是怎樣?怎樣的簡單啊....)

但事實真的如此嗎?!....我們把原廠所給的韌體程式所產生的Enumeration過程給抓下來看:

(圖)

乖乖....我們這種老鳥明眼人一看就發現不對勁?!

不對...缺一個ACK Token ...這鐵定有問題,跟您們說:別想騙Microsoft 的OS...

雖然微軟的OS常讓別人罵爽的...但是您也別想呼籠他...

這個原廠的韌體在回 Enumeration 是不對的....否則 OS 不可能不回ACK 的!

再仔細一看:人家系統USB 明明要 0x0A 個Bytes 資料,

USB 韌體竟然回個 32 Bytes ....而且還是亂碼....太離譜了!

雖然外表好像煞有其事的正常顯示出USB 裝置...但不代表您的USB 韌體是對的 !

夠詭異吧 ....這是要玩USB 要先有的心理建設,您不要以為原廠給的東西就是對的!

因為原廠的工程師也是人啊...也有菜鳥工程師啊...也有摸魚打混的人啊!

我們就查了一下:這個Setup Token 是要Device Description中的 Device Qualifier 。

這是USB 2.0 才有的東西 ...USB 1.1 沒有支持這個東西 。

但人家微軟的作業系統一定很清楚是USB 1.1 或是2.0 的東西 ...

人家OS 會來問,一定是USB 韌體本身自己搞的鬼....

往USB Enumeration前面一點看: 果然不錯...自己在USB 的宣告中:自稱USB 2.0 。

(圖)

這叫白癡啊...明明自己韌體程式不支援USB 2.0 的這個命令,

自己還擺爛的回人家說自己是 USB 2.0 !這不是找罪受?!耍白癡嗎?!

這果然跟我們台灣政治人物一般...只是喊爽的而已...又不是真正的 USB 2.0 !

又再一次的證明版主常掛在嘴邊的一句話:不是最好,最快的就是好東西!

只有適合自己用的,才是好東西---才更能凸顯自己的價值啊 !

(像我們這老鳥工程師們平時打屁時說的:在硬體設計時,

所有的元器件都用最好,最貴的...做出來的東西跟人家說自己多會設計電路...

我們常開玩笑說:他應該生在美國,長在美國才對啊! ...這樣的東西有什麼好炫耀的!)

----
好吧 ...我們就原廠的程式把他修改宣告為 USB 1.1 後,再試一次!

(圖)

從上圖中我們發現我們已經回USB 1.1了 !

我再看一次相關的 USB Enumeration 過程.....

(圖)

看到沒?!...漂漂亮亮的完成 USB Get Device Description...

再 Set Configuration....完成整個USB Enumeration 。

完美的Touch-down !--- USB 2.0 有什麼用?!錯的啦...

人家USB1.1 雖然笨一點,老一點...但人家微軟給一百分滿分啊...

------
沒想到,才一開始想用原廠的 程式來修改USB 的應用程式,竟然一開始就發生這種烏龍事件。

當然啊...如果是您呢?!...只要電腦Show出您的 USB 裝置時,

您就高興的非常有成就感?!....您在被陷害您不知道而已. !

等下回人家微軟嚴謹的抓您的USB Bug 時,您該不會一句說:不會啊!

以前我都用得很順利啊...怎麼會有問題呢?!這是一些工程師常慣用的藉口啊

您我捫心自問....我們真的有真正的去面對這種類似的問題嗎?! ...我們真的很有用心的去學習嗎?!

這真的需要花您好幾天的時間嗎?!....而您卻想百般的逃避與不想面對他?!...

這真的不是學技術好的態度的....

-----
接下來呢?!...很不幸的,我RUN 原廠的應用程式,來實際 USB Bulk In/Out...

答案想當然爾---- 也是不對的啦....唉...這到底我比較賤手呢?!

還是真的原廠也是在耍白癡嗎?!...要讓學習者從抓他們的Bug 來學習嗎?!

雖然學技術,是從抓Bug 基礎扎根起來的....這的確是不諱言的。

但看樣子...接下來還有得玩呢!....

(待續)
-------------------

1. 改寫原廠的USB應用程式


2. 改寫原廠的USB應用程式(續一

3.改寫原廠的USB應用程式(續二)

4.USB DIY-- 自學計畫(一)

6.USB DIY-- 自學計畫(三)

7.USB DIY-- 自學計畫(四)

8.USB DIY-- 自學計畫(五)






 

1 則留言:

  1. 我一直以為那的標榜規格的描述元可以亂填耶~原來是不可亂填的.因為我一直認為電氣特性決定了一切, 所以才會覺得描述元的某些欄位是沒意義的..亂填也可以.剛剛仔細看了規格書,才發現描述元型態除了1~5, 還有 678..看樣子我資掉k的不夠熟...需再加強..
    USBLAB Miller

    回覆刪除