(版本:1.0)
编制:古道热肠
版权所有:21IC侃单片机板块
完成日期:2007年7月
一,功能介绍
BusHound软件是由美国perisoft公司研制的一种专用于PC机各种总线
数据包监视和控制的开发工具软件,其名"hound"的中文意思为"猎犬",即
指其能敏锐地感知到总线的丝毫变化.
Bus Hound的最新版本为6.0已上市,但考虑到目前广泛使用的为5.0版
本,故本说明书以其5.0作为蓝本,进行功能说明.
Bus Hound是一个超级软件总线协议分析器,用于捕捉来自设备的协议包
和输入输出操作,其优良特性如下:
支持所有版本的IDE,SCSI,USB,1394总线
支持各类设备如硬盘库,DVD,鼠标,扫描仪,网络照相机等
支持Windows9X,WindowsMe,NT4.0,2000,2003,XP和嵌入式XP操作系统
捕捉数据的总量仅受机器内存限制
可以设置触发信号自动停止捕获操作
测试读取,同步等设备性能
捕获设备驱动包,例如IRP
捕获任意数量的并行设备,而不管其总线类型
身材苗条,易于交换与下载
捕获的数据易于拷贝到其它环境生成Html格式
捕获的数据能保存为文本文件或ZIP文件
所有的可捕获设备以树形结构列出,让选择设备来得更轻松些
可捕获设备的启动过程
用户爱好设定功能,如用户可调整捕获到的数据显示宽度,更宜于查看和使用.
查看底层协议包括SCSI的sense数据和USB的设置包
查看每阶段的时间变化精确到微秒
将输入输出发生的操作实时显示到屏幕上
纯软件解决方案,你不需要对硬件进行任何变更,一些依旧
Bus Hound有如此强大的功能,首先让我们一睹其界面风采,启动界面如下:
二,捕获窗口操作指南
单击主界面窗口上部命令按钮区的Capture按钮进入捕获操作主视窗.
一个命令发送到设备通常由1个或几个阶段来完成,例如,一个典型的命令由命令字
节阶段,数据字节阶段和状态字节阶段来完成,Bus Hound在捕获显示窗口中将显示出
阶段完成的时间信息和详细的数据内容.
捕获数据列表,以下将描述捕获窗口中每一列的功能
1,设备列
设备ID,每个设备分配了一个数字,第1个设备从0开始,第2个设备为1,依此
类推,这项功能对于软件同时捕获多个并行设备非常有用,设备的ID分配在Device窗口
中完成.
对于USB设备,设备的端点同时显示出来(例如4.1表示ID为4的设备的1号端点)
2,阶段列
阶段类型,请参考下表为每个阶段缩写获知详细的细节信息
阶段 功能描述
ADDR 8 byte 1394 transfer address
ATI 7 byte ATA task file returned from an IDE device
ATO 7 byte ATA task file sent to an IDE device
ATP Windows ATA_PASS_THROUGH data structure
CDB SCSI command descriptor block
(Known as a packet command for ATAPI devices)
CTL 8 byte setup packet of a USB control transfer
DI Data In (Device to PC transfer)
DO Data Out (PC to device transfer)
IOR Windows VXD I/O Request data structure
IRB Windows 1394 I/O Request Block data structure
IRP Windows I/O Request Packet data structure
ISOC Isochronous transfer data bytes
LEN Data transfer length of a DI,DO, or ISOC phase in
decimal units. This field is off by default and can be
turned on from the settings Window
LOCK 1394 lock transaction
NSTS Windows 4 byte kernel mode NTSTATUS field
RSET Bus or device reset
RSTS Windows VXD IOR status
SNS SCSI request sense data
SPT Windows SCSI Pass Through data structure
SRB Windows SCSI Request Block (SRB) data structure
SSTS Windows 1 byte SCSI Request Block (SRB) status
STAK Windows IO_STACK_LOCATION data structure
URB Windows USB Request Block (URB) data structure
USTS Windows 4 byte USBD_STATUS code
3,数据列
与每个阶段对应的数据显示在此列中,例如命令字节,数据传输字节,和状
态字节都能在此窗口中显示出来.
4,描述列
与每个阶段对应的文本说明给你带来极大的便利
5,时间微分值Delta(dt)
从前一阶段到当前阶段所花费的时间均显示在此列中,时间单位的缩写对照表
见下表:
Name Units
us Microseconds
ms Milliseconds
sc Seconds
mn Minutes
hr Hours
dy Days
6,命令.相位.
1个数据组合体用来的标识当前捕获的数据的确切阶段,所有值均为十进制
CMD是命令数,命令计数从1开始,当有新命令发送到设备时进行加1操作
Phase是命令中的阶段数,1个命令通常由许多阶段组成,例如数据传输阶段和状态
反馈阶段,阶段计数值从1开始,在命令中当有新的阶段产生时进行加1操作
Ofs每个阶段中字节的偏移量,计数值从0开始,数据传输过程中的每个新的数据字
节时进行加1操作.
Rep指示命令重复发布数,重复计数特性能在系统设定窗口中进行开启和关闭设定.
7,日期
阶段发生的日期在这一列中进行显示,格式为:年/月/日
8,时间
阶段发生的时间在这一列中进行显示,格式为:小时:分钟:秒.毫秒,小时范围为0-23
捕获系统启动过程
当退出Bus Hound应用程序时,Run按钮处于按下状态时,设备驱动部分继续捕获数
据,当系统进行重启时,它将早于系统启动过程进行数据捕获操作.
当退出Bus Hound应用程序时,Stop按钮处于按下状态时,启动过程不会发生数据捕
获操作,直到按下了启动按钮.
捕获数据显示窗口的用户爱好设定
数据列表的列顺序能通过拖拉列顶部到合适位置进行改变.每行字节显示宽度能被修
改为1,2,4,8,16,或者32,这些设定被保存.
查找功能
能够在捕获窗口中进行数据查找操作,输入查找的字符串在窗口左下部的文本窗
口中,然后按向上或向下箭头完成查找操作,如果未查找到字符串,光标位置不做改
变,注意查找时不区分大小写.
窗口支持拖选操作,首行点击起始所在的行,再按下Shift按钮不放,单击结尾
行,选中的数据能用鼠标拖拉到另外的软件中使用(就是拷贝操作),也可以按Ctrl+C
将选中的数据先拷拷贝到剪贴板,再在其它软件中用Ctrl+V粘贴完成数据拷贝操作.
命令交迭
交迭的命令被标识,当发送到设备的一个新的命令启动先于前一个命令时,这种
情况在输入输出子系统是有可能发生的,这种交迭现象Bus Hound能够显示出来,当
然这种情况不会出现的硬件抽象层.
多输入输出阶段
这种情况仅在Windows 9X操作系统发生,同一命令的多输入输出阶段被列表显
示时,指示传输被分割通过许多存储空间来完成的.
PS2鼠标数据格式
以下是PS/2鼠标返回的数据格式,这就是众所周之的在Windows DDK中定义的
MOUSE_INPUT_DATA结构体:
Offset Length Content
0 2 Not used
2 2 Position type:
0000h = relative position
0001h = absolute position
4 2 Button flags:
0001h = left button down
0002h = left button up
0004h = right button down
0008h = right button up
0010h = middle button down
0020h = middle button up
0040h = button 4 down
0080h = button 4 up
0100h = button 5 down
0200h = button 5 up
0400h = mouse wheel
6 2 Mouse wheel data
8 4 Not used
12 4 X position
16 4 Y position
20 4 Device specific information
PS2键盘数据格式
以下是PS/2键盘返回的数据格式,这就是众所周之的在Windows DDK中定义的
KEYBOARD_INPUT_DATA结构体:
Offset Length Content
0 2 Not used
2 2 Scan code of key
4 2 Flags:
0000h = key pressed
0001h = key released
0002h = extended scan code E0
0004h = extended scan code E1
6 2 Not used
8 4 Device specific information
三,保存数据窗口
单击启动窗体界面上的Save按钮将所有捕获到的数据保存到指定的文件中,文件
格式可选为TXT格式或ZIP格式,保存到文件中的数据格式与屏幕保持一致.
1个附加的数据说明将被放置在数据文件的头部,当前日期与时间也包含在说明
中,通过插入%c转义字符来完成,如果保存的是ZIP格式文件,说明内容也被压缩成
ZIP格式.
四,系统设定窗口
系统设定窗口提供用户进行参数设置.复选框选中后立即生效,数字输入需按压应用
按钮或切换到另一个窗体时或退出Bus Hound 时生效.
Buffer Size(缓冲区大小)
指示用于捕获数据缓冲区的RAM大小,以K为单位,设置上限仅受系统内存限制,
如果出现内存不够,缓冲区尺寸将缩减到可用RAM的大小.如果想获得更多的空间用
来缓存数据,除了增加系统内存外,也可以在其它程序运行之前设置较大的缓冲区尺
寸.
注意:申请1个比较大的缓冲区在Windows9X 和Windows Me可能会花费一小段时
间.
Max Phase(最大阶段)
指定每阶段捕获数据的最大数量,例如:当设定值为32时,发生了一个64K的读操
作,仅仅前32个读取到的字节被捕获到,这个选项对于保持一个捕获数据量的最小值是非
常有用的.
Stop When...(停止条件)
设定用于停止捕获操作的触发条件,可对触发条件进行任何组合,只要有一个触发条
件满足时,捕获操作将停止,屏幕上将用高亮红色显示对应的触发数据.
Any Other Error(任何错误发生) 当系统遇到任何种类的错误发生时停止数据捕获
操作
Buffer Full(缓冲区满) 当缓冲区满时停止操作,如果未选中此选项,系统将采用滚
动覆盖模式保存最近捕获到的数据.
Bus Reset(总线复位) 遇到总线复位操作时停止捕获操作
Data Overrun(数据过载)当发生数据过载或数据欠载时,停止捕获操作.
Hardware Error(硬件错误)当发生硬件错误时停止捕获操作
Invalid Command(非法命令)当发现非法的命令时停止捕获操作
Media Error(媒体错误) 当设备返回一个媒体错误时,停止捕获操作,典型情况是
报告发现扇区错误.
No Media(没有媒体),当设备返回没有媒体时,停止捕获操作
Not Ready(没有准备好)遇到设备未准备好,超时,或忙的情况时停止捕获操作
Text Pattern / Hex Pattern(文本式样)当出现定义的特殊式样的文本数据时,
停止捕获操作,对于文本式样,区分大小写,检查过程遍及数据传输的每个阶段,包
括命令,数据和状态阶段.
Vendor Error(厂商错误)当一个独特的厂商错误出现时停止捕获操作
Windows Error(操作系统错误)当出现一个操作系统类型的错误时停止捕获操作
Phases to Capture(选择阶段)
这个选项包括了Bus Hound所有能捕获的阶段列表,复选对应的选项表示进行捕获操
作,清除复选框时表示不进行捕获,这个选项对于用于过滤不感兴趣(无用数据)阶段或者
启动系统默认关闭了阶段尤为有用.
选项框右边,1个白色的圆将出现,这将指示用于捕获操作的阶段,如果圆出现绿色闪亮,
指示此阶段正在发生并被捕获到.
Merge Repeated Commands(合并重复命令)
选中此项后,如果出现命令与前一命令相同的状况时,新命令将不独记录,取而代之
的是,前一命令的数量值加1,这项功能尤其适用于当与设备进行同一命令通讯时将捕获到
的数据进行简约化处理.
Enable SoundS
选中此项后,在执行捕获,设定,或遇到触发条件弹出设备窗口时,Bus Hound
将发出"呯"的一声.
Columns To Display
复选列表框中的选项,表示想将对应的列显示在捕获窗口中,选中的列将能执行
拖选和保存操作,详细情况见"捕获窗口"章节关于每一列的介绍.
五,设备窗口
设备列表指示出Bus Hound能支持的当前系统中的每一个设备,列表自动更新,反映
出是否插入或移除设备.选择复选框表示选中或取消选中设备进行捕获操作.选中操作立
即生效.
每个设备被指定一个数字绑定到设备名的前面,这个数字在捕获窗口中将显示在设备
列下,这个数字用来指示设备加入系统顺序.
当出现设备以亮字体显示时,指示设备不在当前的系统中.
Capture new deviecs(捕获新设备)
选中此项将自动捕获检测到的新设备的数据,这项特色功能尤其适用于发送到热拔插
设备的第1个命令.
Device Properties(设备属性)
这个面板将显示设备的一些细节特性,比如"传输性能表现",性能表现是通过完成
命令过程中总的传输字节数除上总的花费时间来得到的.当捕获窗口中的运行按钮按下时,
性能表现统计数据将被清除掉.
Send Command(发送命令)
使用此命令,您能发送您自已的命令到设备,启用发送命令功能,只需在高亮选择一
个设备后,用鼠标单击"Send Command"按钮或简单地双击设备.发送命令到设
备的功能是一个非常强大的辅助工具,让你提交命令到USB,1394,ATA和SCSI设
备易于反掌.你也可以用它来完成一些其它的特殊操作,例如总线复位,执行硬件端
口的输入输出.
注意:硬件端口的输入输出操作可以会导致系统崩溃,清谨慎使用.
六,文件安装列表
BUSHOUND.EXE - Bus Hound 可执行文件
BUSCMDR.EXE - Bus Commander 执行文件
BHUNINST.EXE - 反安装文件(卸载文件)
BHLOG.EXE - 将数据捕获到磁盘的工具 (仅注册版有此文件 )
BHOUND3.VXD - Windows 95, 98, Me 设备驱动程序
BHOUND4.SYS - Windows NT 4.0设备驱动程序
BHOUND5.SYS - Windows 98, Me, 2000, 2003, XP设备驱动程序
HELP.RTF - 帮助文件 (也就是本文件)
Site License
注册版的Bus Hound 在其安装目录下包含了bhlog.exe命令行工具.Bhlog将捕获
到的实时数据存放到磁盘文件中,这将解除捕获数据存放空间受机器内存限制的束缚.
让你实现磁盘有多大空间,我Bun Hound就有多大能耐的功能.Bhlog在系统冻结(休眠)
甚至重启时仍能将捕获到的数据存放到1个网络驱动器的文件中的功能.
七,FAQ(常见问题解答)
使用过程中遇到问题可查看软件的帮助系统,也可以去Perisoft软件公司的网
站获得最新的信息.
Bus Hound软件的帮助系统主界面如下:
1, 什么类型的输入输出操作能被捕获
Bus Hound捕获经由总线传输的数据包,这包括命令,数据,状态,和时序.
Bus Hound并不监视独立的硬件信号.
2, Bus Hound会改变我的设备的工作方式吗
答案是不会改变,因为 Bus Hound仅仅是完成"侦听"数据包的工作,它不会改
变命令,更不会发送它自已的命令,也不会替代任何系统设备,不会存取硬件.总之
系统和设备的操作不必在乎bus Hound软件是否在运行或停止运行,就当它不存在似
的.
3, Bus Hound会影响到系统的性能吗
用户捕获数据是来自速度极快的并行设备,因而感觉不到它对系统性能的
影响,换句话说,给使用者的印象是对性能没有影响.当处于停止状态时,Bus
Hound也是不会损伤系统.
4, Bus Hound 支持哪些设备
所有的IDE,SCSI,USB和1394设备都得到支持,包括磁盘驱动器,鼠
标,扫描仪,网络摄像头,等等.只要是枚举成以上所列的总线类型的设备均
能够得到支持,例如一些USB转并行口的设备就能捕获.
5, 为何有3个重复的设备
对于某些设备,Windows操作系统建立了更高层的数据包然后传输到底
层的包最终送往硬件,Bus Hound显示了几个设备,如此你能选择在哪个层
次进行捕获操作.
6, 对于控制能捕获到什么呢
有些控制能收到命令,有些却收不到,你可以对一个控制尝试进行捕获操
作,并查看数据是否为有用的.
7, 为什么bus Hound 没有显示一个设备
当系统以安全模式启动时,将没有设备显示,这是由于安全模式下系统为
了清洁,将系统置于安全模式的特性决定的.
当设备未正常安装时,不会显示出来,即启动控制面板的设备管理器,当
出现带问号的设备是不能进行捕获操作的.
SCSI 适配卡在win95/98/Me下不能显示,除非其附属于某设备.
8, 为什么有些设备会出现灰色的
灰色的设备指示它目前未处于系统管理范围之内.
9, 当启动系统进行捕获操作时,系统出现冲撞,我该怎么办呢
这种情况归根到底是Window9X系统架构的限制造成的,如果有太多的
设备驱动要求接收输入输出是否完成的通告,系统就会发生冲撞,甚至崩溃.
微软设备驱动和其它安装的软件如Bus Hound也需要通告,解决这类问题的
办法是移除原驱动软件用附加的软件为设备进行安装操作,例如CD/DVD设
备,一个简易的解决办法就是重命名传统的SCSI1Hlp.Vxd 为
SCSI1Hlp.bak,该文件存在windows/system/iosubsys目录下.
10, 为有何我不能捕获所有的1394的事件
有些1394设备,Bus Hound显示的是逻辑设备例如AV/VHS设备,选择
这些设备的上一层节点进行捕获操作能解决问题.
当Bus Hound 记录同步传输时,没有可行的办法去解决查看每一同步传
输过程.如果想捕获到1394设备的更多信息,升级系统到Windows XP或者
更高级的版本就得到更多.
11, 对于IDE硬盘设备,为何我无法看到task file(任务文件)命令
Bus Hound 仅仅在应用程序或驱动明确地发送一个ATA命令(如:
SMART,IDENTIFY等),完成捕获ATA命令.对于通常的文件系统请求,Bus
Hound 捕获SCSI CDB'S 代替ATA命令.注意 CDB'S命令和ATA命令有相
关性而且很容易转换成与之相关的ATA命令.还要注意到的是CDB是ATA数据
传输的等同体.
12, 在哪儿我可以得到捕获数据的详细信息
你可访问以下站点 得到参考数据和详细的说
明,也可以参考以下资源
Specification Location
USB USB官方网站
SCSI
IDE, ATA, ATAPI
1394, Firewire 或
Windows DDK 微软DDK专栏
13, 如何获得技术支持
请访问网站Bus Hound 官方网站得到问题答案,详细文档,及Bug报导以及共
享和完整版的相关信息.