<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

文章分类

导航

订阅

使用USB3.0调试Windows 8

Windows 8,成也,败也?众说纷纭。但无论如何,我很喜欢它所作出的如下改变:

- 开发语言回归C++

- 旧的Win32与新的WinRT两套API的“双头”模式

- 重视内核调试,引入两种新的连接方式,并将内核调试支持纳入徽标测试

当然,也有不喜欢的地方,首当其冲的就是新的启动选项界面——居然是一个应用程序,需要内核先起来才能运行,如果内核起不来,那么这个启动选项根本没办法出来,想靠它抢救起不来的系统,基本没指望,真是十足“脑残”的设计。

真的不愿意看Windows走下坡路,还是回过来说它的优点吧,今天就聊一下新的USB3调试。

主机端要求:

H.1 支持USB 3的端口;

H.2新版本的WinDBG6.2.9200或者更高;

H.3 Windows 8系统。

 

前两项是必须的,没得商量,第3项按理说Windows 7也可能成功,但是官方的说法要求Windows 8。笔者曾经在Windows 7上试验过,有USB 3硬件,USB 3的驱动和USB2DBG驱动也都安装成功了,但是还是没能建立起调试连接,原因应该是和总线驱动有关,内建的USB 3驱动是从Windows 8才开始的。

 

目标机的要求:

T.1 Windows 8系统;

T.2 有可用的USB 3端口,下面详细描述。

T.3 USB 3的控制器是支持调试的,与此前的USB 2调试类似,调试痛信是一种特殊的简单通信,要求USB 3控制器特别支持才行,但与此前USB 2的控制器只有0号口支持调试不同,USB 3的控制器的所有3.0口都是支持调试的,因此这个要求一般都满足,可以使用USBView工具检查是否支持Debug,如图1所示;

T.4 启用内核调试。

图1 UsbView

USB 3的端口有很多种,PC上常见的有AB两种,A与以前的USB 1.0/2.0端口看起来很像,物理属性是兼容的,每部的信号线有不同,识别是否是USB 3端口的简单方法就是看是否是有SS标记,SS代表Super Speed,如果标记是SS,那么就是USB 3端口。

USB 3B端口是长相很特别,一道沟槽/凸起将端口分为不对称的两个部分。图2照片中的线是把B口转成A口的,通过这个图,大家就可以知道AB两种口的长相了。

图2 USB 3的B-A转接电缆(和黑布林在一起,压缩算法把bitrate似乎都分在布林身上了,线不大清楚)

 

接下来该说电缆了,与USB 2调试所需的中间带有设备的特别电缆不同,USB 3调试需要的是一条真正的线。哪里能买到这种线呢?国外有公司卖。经过一番调查和尝试,其实也可以从国内买,然后略微加工一下就可以了。这种方法是由一位聪明的同事试验成功的,我亲自尝试了一下,确实简单有效。

从淘宝买一根USB 3AA连线,有时也称公对公连线,很便宜。这根线需要加工一下才可以支持调试,加工的方法是选取线的某个位置,剥开外皮,然后把其中的红绿白三根线剪断,然后包上就可以了。USB 3电缆的线是有固定颜色的,如图3所示,

图3 花花绿绿的USB 3线缆

 

其中SDPShielded Differential Pair的缩写,即屏蔽起来的差分信号线,是USB 3.0的数据线,UTPUnshielded Twisted Pair的缩写,即未屏蔽的双绞线,是USB1/2使用的数据线,所谓的D+D-。要做的加工其实就是把2.0的三根弦剪断。剥开后,很容易找到红绿白三根,胆大心细,下剪子吧:-)

图4,看准下剪子 (照片不大清楚,剪错了责任自负哦)

 

线做好后,用它来接主机和目标机。

然后需要在目标机上启用调试。打开一个有管理员权限的控制台窗口,执行如下命令:

bcdedit /dbgsettings usb targetname:<名字>

bcdedit /debug on

设置好后需要重启

最后再说一下主机端,安装好新版本的WinDBG后,以管理员身份启动运行,File  > Kernel Debugging,选择USB ,然后指定名称(上面bcdedit里设置的名字)。第一次使用的话,WinDBG会自动安装驱动,这也是要以管理员启动的原因。需要说明的是,在主机端,USB 2.0调试和3.0调试使用的是一个驱动Usb2DBG,不必怀疑。

 

好了,主机端就绪后,按Ctrl + Break,目标机应声断下,设置符号,开始开Windows 8的代码或者找Bug吧!

posted on 2013年8月21日 21:13 由 Raymond

Powered by Community Server Powered by CnForums.Net