USB 作为 SCSI READ 命令的主机数据传输问题
USB as a host Data Transfer problems for SCSI READ command
我正在使用 OHCI 将 USB 实现为主机。并使用 SCSI 读取大容量存储设备。
我所有的控制权转移 运行 成功。我已经使用控制传输完成了所有初始化,但是我遇到了数据传输问题。
我无法在 SCSI 中成功执行 READ 命令,无论是 READ(6)、READ(10) 等。
以下是命令方块包装器 (CBW) 的快照-
突出显示的部分是 SCSI 命令。
如您所见,我请求了 512 字节 - 这是我的大容量存储设备的 1 LBA 的大小。
以下是来自设备的 512 字节缓冲区中的内容-
仅供参考-缓冲区已初始化为 0xff
这 512 个字节不存在于我的大容量存储设备上。我在 HXD 上打开大容量存储设备并检查字节,发现我收到的块在我的大容量存储设备上不存在!
我得到的命令状态包装器(CSW)如下-
CSW 中的最后一个字节是0x01,表示命令失败。
我有 3 个问题
1- READ 失败的原因可能是什么?我是否应该出于任何原因在此之前 运行 任何其他 SCSI 命令?
2-我请求 512 个字节,我什至得到了,但 CSW 中显示剩余的字节 8-11 仍然显示某个值 a,该值恰好大于 512(因为这是小端格式)。这怎么可能?
3- 我从设备收到的 512 个字节可能是什么?
任何帮助我现在已经被困在这里太久了而且我没有 USB 分析仪。
数据传输的伪代码-
设置端点描述符(ED)1(表示OUT端点)
设置传输描述符 (TD) 1(发送 SCSI 命令)
将 BulkHead ED 设置为 ED 1
启动描述符处理
接着
停下来
设置端点描述符(ED)1(表示IN端点)
设置传输描述符(TD)1(读取512字节)
设置传输描述符 (TD) 2(读取 13 个 CSW 字节)
将 BulkHead ED 设置为 ED 1
启动描述符处理
接着
停下来
These 512 bytes are not present anywhere on my mass storage device.
不,对我来说这看起来很像一个有效扇区 0
。
您可能错过的是 Windows 根本不允许非管理员用户查看此扇区。 HXD因此向您显示分区的第一个扇区,即非扇区0
。只有管理员权限和打开相应的物理磁盘时,您才会看到它。
I request for 512 bytes and I even get that but the bytes 8-11 in CSW which show residue still show a certain value a which happens to be greater than 512
不,您请求 256*512
字节。这些 SCSI 长度字段的字节顺序是 AFAIK 大端。
我正在使用 OHCI 将 USB 实现为主机。并使用 SCSI 读取大容量存储设备。 我所有的控制权转移 运行 成功。我已经使用控制传输完成了所有初始化,但是我遇到了数据传输问题。
我无法在 SCSI 中成功执行 READ 命令,无论是 READ(6)、READ(10) 等。
以下是命令方块包装器 (CBW) 的快照-
突出显示的部分是 SCSI 命令。
如您所见,我请求了 512 字节 - 这是我的大容量存储设备的 1 LBA 的大小。
以下是来自设备的 512 字节缓冲区中的内容-
仅供参考-缓冲区已初始化为 0xff 这 512 个字节不存在于我的大容量存储设备上。我在 HXD 上打开大容量存储设备并检查字节,发现我收到的块在我的大容量存储设备上不存在!
我得到的命令状态包装器(CSW)如下-
CSW 中的最后一个字节是0x01,表示命令失败。 我有 3 个问题 1- READ 失败的原因可能是什么?我是否应该出于任何原因在此之前 运行 任何其他 SCSI 命令? 2-我请求 512 个字节,我什至得到了,但 CSW 中显示剩余的字节 8-11 仍然显示某个值 a,该值恰好大于 512(因为这是小端格式)。这怎么可能? 3- 我从设备收到的 512 个字节可能是什么?
任何帮助我现在已经被困在这里太久了而且我没有 USB 分析仪。
数据传输的伪代码- 设置端点描述符(ED)1(表示OUT端点) 设置传输描述符 (TD) 1(发送 SCSI 命令)
将 BulkHead ED 设置为 ED 1 启动描述符处理 接着 停下来
设置端点描述符(ED)1(表示IN端点) 设置传输描述符(TD)1(读取512字节) 设置传输描述符 (TD) 2(读取 13 个 CSW 字节)
将 BulkHead ED 设置为 ED 1 启动描述符处理 接着 停下来
These 512 bytes are not present anywhere on my mass storage device.
不,对我来说这看起来很像一个有效扇区 0
。
您可能错过的是 Windows 根本不允许非管理员用户查看此扇区。 HXD因此向您显示分区的第一个扇区,即非扇区0
。只有管理员权限和打开相应的物理磁盘时,您才会看到它。
I request for 512 bytes and I even get that but the bytes 8-11 in CSW which show residue still show a certain value a which happens to be greater than 512
不,您请求 256*512
字节。这些 SCSI 长度字段的字节顺序是 AFAIK 大端。