Bikky
驱动牛犊
驱动牛犊
  • 注册日期2003-12-01
  • 最后登录2017-02-21
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望11点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:3373回复:4

Bulk_Only SCSI

楼主#
更多 发布于:2004-11-11 17:43
用ISP1581做U盘时,上电后枚举成功了,微软自带的驱动找到了,再接下来就是主机通过Bulk_OUT端点发SCSI命令,每一个是INQUIRY命令,下位机收到了,我用串口打印出来看到的,但我再往Bulk_IN端点写数据回复主机时,就出问题了,在主机端用BusHound看不到上传的数据,下位机也没给出发送中断,但下位机的Bulk_IN端点是肯定没问题的,因为这个板子我前不久做过数据采集卡,是用Bulk传输方式,双向通讯过的。我收到INQUIRY命令后,是随便回复的几个数据,是不是主机收到的不是有效的SCSI命令回复,所以BusHound就不显示了?我想不应该这想吧?还有就是,BusHound里其它枚举命令都能显示出来,就是Set_Address这个命令没有捕获到,但的确设置地址成功了,不知为何?

另还有一现象,我在收到INQUIRY命令后,不往Bulk_IN端点写任何数据,这时主机就停止往下位机发SCSI命令了,超时时间约10 秒,然后又发INQUIRY命令,如再收不到回复,则超时后又发,连试三次后将总线挂起,这可能是正常现象吧?

在上面的现象中,当主机发INQUIRY命令后正在等待回复时,我通过串口给下位机发命令,让下位机通过Bulk_IN端点随便发几个数,此后,主机马上开始下一次重试,而超时时间还未到,说明主机是通过Bulk_IN端点收到数据了,但为何不在BusHound里显示出来,我一开始还以为是Bulk_IN端点出问题了呢,看来我的SCSI命令回复是传上去了,但主机不管是否收到得正确与否,都应在BusHound里显示出来啊?还有就是,我通过Bulk_IN端点发数据后,但一直没收到发送中断,说明主机是取走了几个数,但没取完,我在做数据采集卡时驱动是自己写的,每次取数都是取最大包数目,然后Bulk_IN的发送中断就有了。

哪位大侠能帮忙解释一下上述难题?不胜感激!不弟实在没辙了。。。。。。
百克
MoonRiver
驱动牛犊
驱动牛犊
  • 注册日期2003-06-17
  • 最后登录2005-02-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-11-25 18:05
我也不知道。
taylor821031
驱动牛犊
驱动牛犊
  • 注册日期2006-07-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分240分
  • 威望25点
  • 贡献值0点
  • 好评度24点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-06-08 18:45
我也碰到了这个现象,请问楼主找到办法了吗
lyzc11
驱动牛犊
驱动牛犊
  • 注册日期2006-09-02
  • 最后登录2016-01-09
  • 粉丝2
  • 关注0
  • 积分17分
  • 威望94点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-10-22 18:36
我现在是PC送出INQUIRY命令后,我回复了,之后PC送出 read capacity命令,可是此时
在bus hound中,出现bus reset这是为什么呢?
想问一下,如果往FIFO里写数据,因为FIFO深度为64,如果只写36,那会不会有问题@@@
win847
驱动牛犊
驱动牛犊
  • 注册日期2005-11-04
  • 最后登录2009-02-04
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望79点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-10-23 15:20
Inquiry命令要回传36Byte的数据,格式一定要正确!不然总线会发生Reset!
游客

返回顶部