阅读:3373回复:4
Bulk_Only SCSI
用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的发送中断就有了。 哪位大侠能帮忙解释一下上述难题?不胜感激!不弟实在没辙了。。。。。。 |
|
|
沙发#
发布于:2004-11-25 18:05
我也不知道。
|
|
板凳#
发布于:2007-06-08 18:45
我也碰到了这个现象,请问楼主找到办法了吗
|
|
地板#
发布于:2008-10-22 18:36
我现在是PC送出INQUIRY命令后,我回复了,之后PC送出 read capacity命令,可是此时
在bus hound中,出现bus reset这是为什么呢? 想问一下,如果往FIFO里写数据,因为FIFO深度为64,如果只写36,那会不会有问题@@@ |
|
地下室#
发布于:2008-10-23 15:20
Inquiry命令要回传36Byte的数据,格式一定要正确!不然总线会发生Reset!
|
|