大家好,三年來一直斷斷續續地寫了又停、停了又寫一直沒辦法定期來這裡更新。這次又立志至少每個禮拜寫篇新文章跟大家交流,不知道在現實環境下可以堅持多久?雖然過程中時有間斷,但目標主軸一直都沒變:這個網站就是要引發大家入門各種學科或技術的興趣及降低入門的門檻而已。實際上要如何精通與應用則是要看自己的興趣,當然也歡迎一起交流。
這次計畫將會將USB 中級心法寫好,並修正一下三年前寫的USB初級心法的內容。
同時為了讓大家能夠實際做實驗,這裡將會開闢一個一週入門單晶片系列。讓大家能夠利用手頭上可以找到的任何一顆買得到的微控制器來做USB系統實驗,或當看不懂外面賣的微控制的書時也可以過來瞄一眼看是不是換一種表達方式就容易懂了。
展開卷軸...
收藏卷軸...
這個作品使用了Cypress的無線模組, 只是它並沒有拿來傳資料. 而是利用模組原本的監聽功能來掃描2.4G頻帶內的無線信號.
正體中文翻譯
原文Handheld 2.4 GHz Spectrum Analyzer

展開卷軸...
收藏卷軸...
在同時講解USB中級心法時,這裡也會定期介紹USB裝置開發時會用到的工具。今天要介紹的是二個完全免費且開放原始碼的工具。
SnoopyPro和Linux 內建的 usbmon.
SnoopyPro已經好幾年沒有人在維護了,Vista之後的作業系統也不保證可以用。它最大的好處就是使用簡單且完全免費。使用方法如下:
1.執行 SnoopyPro.exe
2.按 F2 打開USB裝置視窗
3.從 File 選單裡選 'Unpack Drivers'
4.從 File 選單裡選 'Install Service'
5.在想要觀察的裝置上按滑鼠右鍵並選擇 'Install and Restart'
6.操縱被觀察的裝置(插拔,操作軟體,按鈕......)
7.作業系統收發的該裝置資料都會被記錄下來供後統分析
另外要介紹的是Linux 2.6. 內建的usbmon, 如果裝的是Ubuntu 9.10 那裝完之後直接可以用,只需在shell視窗裡打 'cat /sys/kernel/debug/usb/usbmon/0u > /tmp/1.mon.out' 再去操縱想要觀察的裝置就會記錄所有系統收發的USB資料。
實際錄下的記錄檔如下:
d187b000 1597420637 S Ci:1:004:0 s 80 06 0100 0000 0012 18 <
d187b000 1597423351 C Ci:1:004:0 0 18 = 12011001 00000008 6d0416c0 40030102 0001
d187b000 1597423501 S Ci:1:004:0 s 80 06 0200 0000 0009 9 <
d187b000 1597424980 C Ci:1:004:0 0 9 = 09021900 010100a0 32
看起來是不是跟USB中級心法前章的資料收掉Transaction和Packet很像呢?
這就是這種軟體監看工具最弱的一環,軟體只能記錄作業系統有辦法看到的資料。所以從主機板的南橋(或USB界面上)驅動程式->南橋晶片(USB卡)->USB cable->USB 周邊晶片 這條路上發生的問題,不論是要錢或免費的軟體工具全部都看不到。
展開卷軸...
收藏卷軸...
今天做了一個解說USB封包的工具,當做是USB中級心法系列的準備。有興趣學習USB的人可以自己先玩一下來熟悉所謂的3*3。(用IE來玩的速度較慢,建議換用其他瀏灠器)
| Get Device Descriptor - Index=0 Length=18 |
| SETUP txn - 80 06 00 01 00 00 12 00 |
| DATA |
| 80 06 00 01 00 00 12 00 |
| IN txn - 12 01 00 02 00 00 00 08 |
| DATA |
| 12 01 00 02 00 00 00 08 |
| IN txn - 6D 04 16 C0 40 03 01 02 |
| DATA |
| 6D 04 16 C0 40 03 01 02 |
| Get Configuration Descriptor - Index=0 Length=255 |
| SETUP txn - 80 06 00 02 00 00 FF 00 |
| DATA |
| 80 06 00 02 00 00 FF 00 |
| IN txn - 09 02 22 00 01 01 00 A0 |
| DATA |
| 09 02 22 00 01 01 00 A0 |
| IN txn - 32 09 04 00 00 01 03 01 |
| DATA |
| 32 09 04 00 00 01 03 01 |
| IN txn - 02 00 09 21 10 01 00 01 |
| DATA |
| 02 00 09 21 10 01 00 01 |
| IN txn - 22 34 00 07 05 81 03 04 |
| DATA |
| 22 34 00 07 05 81 03 04 |
展開卷軸...
收藏卷軸...