close

好吧,我們接下來就實際把原廠所附的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-- 自學計畫(五)







 

arrow
arrow
    全站熱搜

    賈老師的真老公 發表在 痞客邦 留言(1) 人氣()