1. 程式人生 > >第三十二篇:Windbg中USB2.0除錯環境的搭建

第三十二篇:Windbg中USB2.0除錯環境的搭建

2011年的時候,為了開發USB Mass storage -- UASP (USB attached SCSI Protocol)的裝置驅動程式,從米國買了兩個USB2.0的除錯小裝置(如下圖,每個似乎80美刀,賊貴的東西)。

主要是用來替代串列埠115200波特率的響應速度慢,以便解決除錯效率的問題。

當時,根據WINDBG的HELP文件,而且也GOOGLE了一些網上的相關參考內容,硬是沒有把USB2.0的除錯環境搭建起來。

後來有一段時間,朋友要開發驅動程式,他原來一直用一臺配有PCI轉1394卡來除錯,但現在要用筆記本,卻又不帶1394介面,所以,問我借了這個USB2.0除錯裝置一用,但這個驅動高手,搞了半天,也硬是沒把USB2.0除錯環境搭建起來。

於是,這個小玩意兒,就一直躺在實驗室的角落裡,我還是照舊,在Win7上用串列埠除錯,在Win8上用NET除錯。

最近在開發顯示相關的DLL時,也一直在Win8/8.1/10系統上用NET除錯。

為了將Win7的除錯環境搭起來,加上這個平臺沒有串列埠,所以,又想到了這個USB2.0除錯裝置。

根據WDK8.1 Windbg的幫助文件,先在第一類平臺上試著搭建。

但是沒有成功,原因很簡單,該USB2.0除錯裝置只能直連HOST與TARGET上的EHCI HOST。

而第一類平臺的調除錯機,任何一個EHCI HOST的PORT1, 都嵌入了一個GENERIC USB HUB。

既然這個ROOT HUB下面的PORT1被佔用了,不符合環境搭建的要求,那自然連線不起來了。

USB debugging does not work over a hub or docking station. (from help documents)


PCI to USB host controller      

<span style="white-space:pre">	</span>Root Hub            

<span style="white-space:pre">		</span>Port1: Generic usb hub                     

<span style="white-space:pre">			</span>Port 1 --plug physical port of the debug cable                     

<span style="white-space:pre">			</span>Port 2            

<span style="white-space:pre">		</span>Port2

之後,就換了一臺被測試機,根據幫助文件,前後花了不到十分鐘,就把除錯環境搭建成功了。

下面,就是幾個主要步驟:

在被除錯機上:

1. bcdedit /debug off

2. 重啟

3. 通過USBView找到ROOT HUB PORT1

4. 找到後, 通過Device Manager記錄這個EHCI HOST的PCI bus, device, and function numbers

5. 

  1. Windows 7系統上設定
  1. bcdedit /debug on
    bcdedit /dbgsettings usb targetname:someName
    bcdedit /set "{dbgsettings}" busparams x.y.z

    where x, y, and z are the bus, device, and function numbers for the host controller. The bus, device, and function numbers must be in decimal format (for example, busparams 0.29.7).

6. 重啟

在除錯主機上:

只要將該裝置接到EHCI HOST下,同時安裝驅動就可以了。

建立除錯會話:

File-->Kernel Debug-->usb2.0 tab-->enter the target name-->ok

或者是在COMMAND PROMPT WINDOWS中:

windbg /k usb2:targetname=TargName


事實上,並不是每一臺PC都能作為USB2.0的除錯方式的除錯機的:

  • The target computer must have a USB 2.0 controller that is compatible with the EHCI specification and that supports kernel debugging. Not all EHCI-compatible controllers have this support. 


相關推薦

:WindbgUSB2.0除錯環境搭建

2011年的時候,為了開發USB Mass storage -- UASP (USB attached SCSI Protocol)的裝置驅動程式,從米國買了兩個USB2.0的除錯小裝置(如下圖,每個似乎80美刀,賊貴的東西)。 主要是用來替代串列埠115200波特率的響應

mysql 文章~並發導致的從庫延遲問題

efault nbsp 記錄 文章 定位 如果 增刪查改 mysql binlog 一 簡介:今天來聊聊周期性從庫延遲的問題 二 背景:近期每天的指定時間段,收到從庫延遲的報警,然後過一段時間恢復.由於從庫是提供讀服務的,所以需要解決 三 分析思路:

玩轉數據結構——AVL樹

ces this true 函數 port ide cep row ger 1.. 平衡二叉樹 平衡二叉樹要求,對於任意一個節點,左子樹和右子樹的高度差不能超過1。 平衡二叉樹的高度和節點數量之間的關系也是O(logn) 為二叉樹標註節點高度並計算平

Spring Boot 基礎系列教程 | :使用@Async實現非同步呼叫:自定義執行緒池

推薦 Spring Boot/Cloud 視訊: 在之前的Spring Boot基礎教程系列中,已經通過《Spring Boot中使用@Async實現非同步呼叫》一文介紹過如何使用@Async註解來實現非同步呼叫了。但是,對於這些非同步執行的控制是我們保障自身

孤荷凌寒自學python天python的程式碼塊的異常的捕獲

孤荷凌寒自學python第三十二天python的程式碼塊中的異常的捕獲 (完整學習過程螢幕記錄視訊地址在文末,手寫筆記在文末)   今天簡單瞭解了Python的錯誤陷阱,瞭解到其與過去學過的其它語言非常類似,也是使用try……catch……語句塊來實現的。 在程式碼編寫過程中,由於人的思維的

Android探索之旅()Android使用者反饋需要開發?不存在的

作為一個合格的Android開發者,我們時不時會碰到產品給使用者反饋功能需求,你大概需要一天?兩天?三天?請求介面?NO NO NO~~~不存在的 下面介紹一個平臺叫吐個槽官網 1. 進入平臺後需要建立產品,建立好之後會為你分配APPID 2.

elasticsearch的mapping透徹理解

首先插入幾條資料,讓es自動為我們建立一個索引 PUT /website/article/1 { "post_date": "2017-01-01", "title": "my first article", "content": "this

愛創課堂每日一題天-談談浮動和清除浮動?

前端 前端學習 前端入門浮動的框可以向左或向右移動,直到他的外邊緣碰到包含框或另一個浮動框的邊框為止。由於浮動框不在文檔的普通流中,所以文檔的普通流的塊框表現得就像浮動框不存在一樣。浮動的塊框會漂浮在文檔普通流的塊框上。愛創課堂每日一題第三十二天-談談浮動和清除浮動?

mysql 文章~mysql5.7的安裝

kcon pre default one show hang 數據 c++ ica 一簡介:今天閑來無事,寫一篇基礎的 二 目的:給非DBA普及安裝mysql 5.7的源碼包安裝 三 步驟: 1安裝基礎環境 yum -y install gc

mysql 文章~xtarbackup增量備份以及策略

判斷 config 服務器 dir 難度 修改 初始 一周 -a 一 簡介: 今天咱們來探討下增量備份的策略 二 背景: 隨著數據量的日益增長,全備已經不現實了,所以探討並測試了增量備份策略 三 具體策略: 1 一周為界限,一天做全備,其他時間以全備為基礎進行增量備份

mysql 文章~mysql慢日誌方案解讀1

日誌 iges add 代碼 bytes 周期 缺省 port 同學 一 慢日誌的相關參數 long_query_time : 設定慢查詢的閥值,超出次設定值的SQL即被記錄到慢查詢日誌,缺省值為1s log_slow_queries :1/0

學習筆記節課

作業iptables規則備份和恢復。 service iptables save 會把規則保存到 /etc/sysconfig/iptables配置文件中,但是有時候不想保存這個位置。 可以用命令 iptables-sabe > 到你想保存的位置。 恢復備份的規則的話 是iptables-re

Numpy的基本操作——索引相關

發生 max .com alt png 原來 轉化 img nbsp No.1. 使用np.argmin和np.argmax來獲取向量元素中最小值和最大值的索引 No.2. 使用np.random.shuffle將向量中的元素順序打亂,操作後,原向量發生改變;使用

SpringBoot | 章:事件的釋出和監聽

前言 今天去官網檢視spring boot資料時,在特性中看見了系統的事件及監聽章節。想想,spring的事件應該是在3.x版本就釋出的功能了,並越來越完善,其為bean和bean之間的訊息通訊提供了支援。比如,我們可以在使用者註冊成功後,傳送一份註冊成功的郵件至使用者郵箱或者傳送簡訊。使用事件其實最

Python之路() 網路程式設計:簡單的tcp套接字通訊、粘包現象

  一、簡單的tcp套接字通訊 套接字通訊的一般流程 服務端 server = socket() #建立伺服器套接字 server.bind() #把地址繫結到套接字,網路地址加埠 server.listen() #監聽連結 inf_loop:

-AppBarLayout的使用

wpa tools sequence 文件中 sch info size position behavior 效果圖: 添加appbarlayout到xml文件中,然後在toolbar下面添加一個imageview並設置居中放置,我放置的是上面那個安卓的圖標。 根據之前

-BottomNavigationVIew底部導航的使用

效果圖:  新增底部導航和viewpaper 設定底部導航在底部 app:layout_constraintBottom_toBottomOf="parent" 新建四個fragment和四個layout,並將它們和viewpaper聯絡起來,方法toolbar那一章講過 view

C++筆記 課 初探C++標準庫---狄泰學院

如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第三十二課 初探C++標準庫 1.有趣的過載 操作符<<的原生意義是按位左移,例:1<<2; 其意義是將整數1按位左移2位,即:0000 0001 -

Scrum立會報告+燃盡圖(十一月二十四日總次):視訊剪輯

此作業要求參見:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2284 專案地址:https://git.coding.net/zhangjy982/QuJianBang.git Scrum立會master:李文濤   一、小組介

Scrum立會報告+燃盡圖(十一月二十四日總次):展示部落格

此作業要求參見:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2413 專案地址:https://git.coding.net/zhangjy982/QuJianBang.git Scrum立會master:段曉睿 一、小組介紹 組長:付佳