阅读:1544回复:3
bulk-only传输协议的问题。
偶考虑这样一个问题:
host发送一个CDB:write(LBA=02h,transferlength=2blocks), 1block=512bytes; 该CDB交给bulk-only transport layer时变成了CBW,其中有个字段dCBWDataTransferLength表明需要传输的字节数,应该等于1024bytes 然后是1024bytes的数据传输,如果成功收到并执行成功,返回CSW表示 ok即可; 但是如果DEVICE只收到了512bytes+256bytes,则应该在返回的CSW的 dCSWDataResidue设为256bytes,bCSWStatus此时可设为00h or 01h, case 01h 则host会重发CDB:write(LBA=02h,transferlength=2blocks), (对吗?) case 00h 则host会重发CBW,其dCBWDataTransferLength设为256bytes吗? CBW中的CDB保持不变(write(LBA=02h,transferlength=2blocks )吗? |
|
沙发#
发布于:2003-06-17 17:10
偶的意思是:
case 00h,即good status则host会发一个CBW,transferlength为256bytes,这个CBW中的CDB等同于上一个CDB,这256字节的数据成功 接受后,device将整个1024字节的数据写入flash成功后返回CSW为ok; case 01h,即failed status,则host会重发一个CDB,然后重传1024bytes的数据; 第2中情况比较合理,但是第一种情况似乎有问题,会引起混乱,但是协议中允许这种情况; |
|
板凳#
发布于:2003-06-17 16:12
我的理解是应该把全部的数据都发完,在返回
|
|
|
地板#
发布于:2003-06-17 15:47
host因该会将全部的数据重新发送!
|
|