sunq2003
驱动牛犊
驱动牛犊
  • 注册日期2003-05-05
  • 最后登录2003-08-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1544回复:3

bulk-only传输协议的问题。

楼主#
更多 发布于:2003-06-17 11:20
偶考虑这样一个问题:
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
     )吗?
sunq2003
驱动牛犊
驱动牛犊
  • 注册日期2003-05-05
  • 最后登录2003-08-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于: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中情况比较合理,但是第一种情况似乎有问题,会引起混乱,但是协议中允许这种情况;
eyeszhu
驱动牛犊
驱动牛犊
  • 注册日期2003-05-14
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-17 16:12
我的理解是应该把全部的数据都发完,在返回
附件名称/大小 下载次数 最后更新
2003-06-17_USB存储类.doc (57KB)  15
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-17 15:47
host因该会将全部的数据重新发送!
游客

返回顶部