阅读:1581回复:10
响应SCSI指令出现的奇怪问题
INQUIRY-->INQUIRY-->设备列举-->READ FORMAT-->READ FORMAT
-->设备列举-->READ CAPACITY-->READ CAPACITY-->设备列举-->READ10-->READ10 大家可以看到存在两个问题: 1.每个包HOST都发两次.我要响应两次(估计响应不对.但我不知道怎么才对) 2.响应两次后莫名其妙会重新列举. 望各位高手赐教. |
|
沙发#
发布于:2004-03-29 18:42
如果你是在Bushound办
|
|
板凳#
发布于:2004-03-29 18:53
只会响应一遍。如果是用BusHound的话,应该在Devices项只选择一个设备看看,很有可能是重复选了,比如说,既有Hub、又有Mass store,又有什么disk什么的。去掉试试看
|
|
|
地板#
发布于:2004-03-29 21:22
令人郁闷的是我偏偏不是用BUSHOUND查的。而是在开发机上跟踪的。
到了READ10后我也不知道该咋答了。反正就把BPB发过去。但是HOST 仍然使劲给我发READ10。。。。。 |
|
地下室#
发布于:2004-03-30 14:00
令人郁闷的是我偏偏不是用BUSHOUND查的。而是在开发机上跟踪的。 我也是在开发板上开发的,因为我在开发板上同时加了HOST和DEVICE,所以可以互相检查. 主机给你发什么命令其实你不用管,照着回答就行了,而且98/2000/xp各有不同,不能用INQUIRY-->INQUIRY-->设备列举-->READ FORMAT-->READ FORMAT-->设备列举-->READ一概而论. 第一个READ0也不能是强行返回BPB,你要看它是读那个扇区,应该是HOST读那个扇区你就返回那个扇区,什么BPB/MBR其实你都不用管. 如果机器老是重新枚举,你应该检查一下你返回的数据和你返回的CSW.估计有可能是CSW的问题. |
|
|
5楼#
发布于:2004-03-30 14:31
我的READ10是:
28 ;CODE 00 00 00 00 00;LOGICAL BLOCK ADDRESS 00 00 01 ;LENGTH 00 00 00 就是让我传第0个BLOCK。长度是256个字节。 我分四次传了。后面还带CSW。 但是由于CBW的LENGTH是00 02,所以CSW的RESIDUL为00 01 你觉得对吗?为什么HOST要反复的发READ10 |
|
6楼#
发布于:2004-03-31 08:32
你分析的可能不对,CBW_READ10要从你的装置里读(00 01 00 00)BYTE,即80Sector。
|
|
7楼#
发布于:2004-03-31 09:19
我咋不会遇到这么复杂的问题 呢
正是郁闷 大虾们 |
|
|
8楼#
发布于:2004-03-31 10:45
我的READ10是: 上述命令对应的操作是读一个扇区(512BYTE).你命令码的 BYTE[8-11]一般应该为00 02 00 00即表示512字节 如果为00 01 00 00即你所说的256字节了. BYTE[15]=28H BYTE[16]=00H BYTE[17-20]=00 00 00 00即扇区地址 BYTE[21]=00 BYTE[22-23]=00 01即扇区数 所以 (1)你应该检查一下到底是传256字节还是512字节 (2)如果是512字节,那你在传输完7次之后发送CSW再传输第8次 如果是256字节,那你在传输完3次之后发送CSW再传输第4次 经我验证CSW的确应该在发送最后一个数据包之前发送. |
|
|
9楼#
发布于:2004-03-31 11:18
太谢谢各位了。包括那位说了等于没说的SUNSHANGXIN兄弟
因为你的话让我明白其实很多问题其实只是由于某些小问题引起的。 我明白原来READ10中的长度是指SECTOR。等我再试试成功了再给各位加分。谢谢。。。。。 |
|
10楼#
发布于:2004-03-31 16:33
现在我改过来了。发512。分8次
但似乎没有碰到你讲的需要在第7次发CSW的问题? 还有就是接下来的是MODE SENSE。但是不是5A而是1A。这是什么问题? |
|