首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >USB作为SCSI读取命令的主机数据传输问题

USB作为SCSI读取命令的主机数据传输问题
EN

Stack Overflow用户
提问于 2016-03-26 21:39:25
回答 1查看 923关注 0票数 1

我正在实现USB作为主机使用人权高专办。并使用SCSI读取大容量存储设备。我所有的控制传输都成功运行了。我已经完成了所有的初始化使用控制传输,但我面临的问题,数据传输。

在SCSI中成功地实现READ命令,无论是读(6),读(10),等等,我都遇到了麻烦。

以下是命令块包装器(CBW)的快照-

突出显示的部分是SCSI命令。

正如您所看到的,我已经请求了512字节--对于我的海量存储设备来说,这相当于1LBA的大小。

以下是设备中512字节缓冲区中的内容-

FYI-缓冲区被初始化为0 0xff,这512字节在我的海量存储设备上没有出现。我打开了HXD上的大容量存储设备,并检查了字节,以确定我收到的块在我的大容量存储上不存在!

我得到的命令状态包装器如下-

CSW中的最后一个字节是0x01,这意味着命令失败。我有三个问题1- -为什么这篇文章会失败?出于任何原因,我应该在此之前运行任何其他SCSI命令吗? 2-我请求512字节,甚至得到它,但是CSW中显示残留的字节8-11仍然显示某个值a,它恰好大于512 (因为这是小endian格式)。这怎么可能? 3-我从设备接收到的512字节可能是什么?

任何帮助,我已经被困在这里很长时间了,我没有USB分析仪。

数据传输伪代码-设置端点描述符(ED) 1(指示出端点)设置传输描述符(TD) 1(发送SCSI命令)

将BulkHead ED设置为ED 1,启动描述符处理,然后停止它

设置端点描述符(ED) 1(指示IN端点)设置传输描述符(TD) 1(读取512字节)设置传输描述符(TD) 2(读取13个CSW字节)

将BulkHead ED设置为ED 1,启动描述符处理,然后停止它

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-26 23:46:54

在我的海量存储设备中,这512字节不在任何地方。

不,在我看来,这很像一个有效的扇区0

您可能错过的是,Windows根本不允许非管理员用户查看这个扇区。因此,HXD将显示分区的第一个扇区,而不是扇区0。您只会在管理私密性和打开相应的物理磁盘时看到这一点。

我请求512字节,甚至得到它,但是CSW中的字节8-11 (显示残差)仍然显示某个值a,该值恰好大于512。

不,您请求256*512字节。这些SCSI长度字段的字节顺序是AFAIK大端。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36241201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档