SCSI指令格式详解

20 篇文章 0 订阅
  USB Mass Stroage Class --- Bulk Only Transport
5  命令/数据/状态
  命令、数据、状态相关的流程图如下:
          
    Host端发送的数据必须符合CBW格式(31byte,小端模式),而Mass Storage设备的应答,其格式必须符合CSW格式(13byte,小端模式)。至于中间过程传输的数据,根据不同的命令,格式也有不同地要求。
5.1.1 CBW命令块(Command Block Wrapper)
 
dCBWSignature:常数0x43425355,标识为CBW命令块。
dCBWTag: 由主机发送的CBW标签。设备应该在相关的CSW的dCSWTag以相同的值应答主机。
dCBWDataTransferLength: 在本命令执行期间,主机期望通过Bulk-In或Bulk-Out端点传输的数据长度。如果为0,则表示这之间没有数据传输。
bmCBWFlags: 定义如下
    Bit7 Direction(dCBWDataTransferLength为0时,该值无意义) :
        0= DataOut,数据从主机到设备
        1= DataIn, 数据从设备到主机
    Bit6 Obsolete 0
    Bits 5..0 Reserved 0
bCBWLUN: 表示正在发送命令字的设备的逻辑单元号(LUN)。对于支持多个LUN的设备,主机设置相对应的LUN值。否则,该值为0。
bCBWCBLength: CBWCB的有效字节长度。有效值是在1到16之间。
CBWCB: 被设备解析执行的命令块。

5.1.2 CSW状态块(Command Status Wrapper)
 
dCSWSignature:   常数0x53425355,标识为CSW状态块
dCSWTag:   取相对应的CBW的dCBWTag值。
dCSWDataResidue:实际传输的数据个数和期望要传输的数据个数之差。
bCSWStatus:命令执行情况,相关值如下:



 SCSI 格式文档下载地址:scsi指令格式及使用方法

  这里有个工具有提一下,Bus Hound 是一套专门用于电脑外设与主机数据通讯捕捉的工具,可用于捕捉USB数据传输的检测。还可用于捕捉键盘串口等的传输数据。下载地址:Bus hound 6.01 完全破解版

Mass Storage设备所使用的SCSI命令集

指令代码

指令名称

指令说明

0x00  

Test Unit Ready

查询设备是否ready

0x03

Request Sense

主机请求设备返回执行结果,及获取状态信息

0x12

Inquiry

获取设备信息

0x1A 

Mode Sense(6)

host传输参数

0x5A  

Mode Sense(10)

host传输参数

0x25

Read Capacity(10)

读取设备容量

0x28  

Read(10)

Host从设备读取数据

0x2A  

Write(10) 

Host写数据到存储设备

0x23  

Read Format Capacity

查询当前容量及可用空间 

0x15 

Mode Select(6)

允许Host对外部设备设置参数

0x55 

Mode Select(10)

允许Host对外部设备设置参数

0x1E  

Prevent/Allow Medium Removal 

禁止/允许存储介质移动

0x1B  

Start/Stop Uint

启动/停止存储单元电源(写保护)

0xA0

Report LUNs

索取设备的LUN数和LUN清单

0x2F

Verify 

在存储中验证数据

 

相关操作可以查看这两篇文章:① SCSI命令传输过程分析   ② usb_scsi之旅

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值