基於windows平台的USB驅動開發技術初步探密

2022-08-16 00:27:13 字數 1178 閱讀 9414

關鍵是首先你要讓usb裝置能work,讓pc機能識別你的裝置,usb開發的里程碑有三個,一是讓pc機發現未知裝置,二是讓pc機識別usb裝置,三是正確安裝usb驅動(當然要能正常工作)。

1、第一步讓usb識別你的裝置,這一步可以說是最難,也可以說是最容易的一步,說它最難是因為這一步和硬體的正常工作非常相關,如果硬體工作不正常或usb介面有物理故障,這一步都很難通過,所以在開發usb驅動之前,一定確保硬體裝置的usb能正常工作(比如在linux或wince環境下能正常工作)。說它容易是因為僅需要正確配置一兩個暫存器,不需要什麼程式設計就能實現這一步。這個過程不需要了解太多的usb相關知識,只需要精讀該晶元的英文技術文件即可。

2、第二步讓pc機識別你的usb裝置,這一步是最關鍵的一步,也是需要大量usb知識的一步。這一步僅需要實現usb的端點0(稱控制端點或缺省端點)相關的功能即可。

如果沒有usb基礎的人,這一步必須要充電,必須要知道usb相關協議規範,否則你就會寸步難行。我這裡推薦一下兩個人的blog,乙個是大名鼎鼎的usb研究專家圈圈,寫的關於usb的文章都非常透徹,相關鏈結( );另乙個是蔡軍生的關於usb的文章,寫的也非常好,對開發很有幫助( )。其次我推薦,如果大家有條件就要購買一本週立功編著的《usb 2.0與otg規範及開發指南》,這可以說是一本usb2.0英文協議文件的翻譯版,不過翻譯的還不錯(網上也流傳了不少usb2.0中文協議文件,不過有些差強人意),可以相對比較準確地理解usb術語。對我來說,還是比較習慣讀書的,在電腦上看大篇大篇的技術文件很容易看了後面忘了前面的。

這一步其實就是pc機對usb裝置的盤查工作,有點類似公安局審犯人,如你是誰?什麼背景?有什麼能力等等。其中最關鍵的要問到usb裝置的pid和vid,問到這乙個才能安裝相對應的驅動程式,當然獲得相關的介面和端點配置也是非常重要的。詳細的資訊互動,這一步我就不多說了,協議上都說的非常清楚。這一步要說一點,就是設定位址這個環節最容易出錯,pc機分配的位址收到後,一定要等返回相關ack響應後,再修改裝置的usb裝置位址,否則很容易出問題。

此外如果你手邊有usb協議分析儀,那麼你真是乙個非常幸福的人,這一步就需要這個東東(我不太幸運,我是在調通usb驅動之後,才有的usb協議分析儀),bus hound工具雖然好用,但是在這一步卻幫不上忙,它是要識別usb裝置後才能正常監控usb資料流的,這對第三步的工作非常有幫助。

基於Windows平台的PyTorch版本安裝

安裝平台 windows pytorch安裝 pytorch build 選擇的stable 作業系統 選擇的windows 根據自己的伺服器系統選擇 安裝方式 選擇的pip 第一次安裝使用conda方式,沒有安裝成功 語言 python cuda 要帶gpu加速的話,可以選擇。需要nvidia顯示...

攻擊基於Windows平台的MySQL系統一例

1.用mysql pwd crack.exe工具掃瞄對方mysql的使用者名稱和密碼 mysql pwd crack.exe 192.168.1.14 x 3306 a 字典檔案分別命名為 user.dic pass.dic 2.登陸對方的mysql 假設已經掃出使用者名為為abc 密碼為abc m...

基於OHCI的USB主機 USB裝置列舉

usb裝置接入以後,必須進行裝置列舉,得到裝置引數,設定裝置執行配置等引數,下面的 就是對u盤裝置進行列舉的過程。因為沒有使用作業系統,所以函式使用狀態遷移的方式完成列舉,該函式在主迴圈中被呼叫。usb裝置列舉處理 return 當前列舉處理的狀態 short usbenumdev void old...