qianyu123
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2841回复:20

USB底层驱动(50分),高手帮忙!

楼主#
更多 发布于:2002-12-10 13:29
     向各位XDJM请教。
     我这里用8951控制SL811HS读写U盘,U盘为BULK―ONLY和SCSI协议。前期的枚举已经通过,设置地址为1;我现在完全按照CBW、数据、CSW的顺序操作。当枚举后直接用READ10命令(或INQUIRY)读U盘可以成功;在U盘状态正常的情况下WRITE10命令也成功。但还有以下几个问题:
   (1)、程序不能够循环读(READ10),必须重新对U盘复位和枚举;
   (2)、我原以为基本解决的WRITE10命令还没有完全好,具体现象是,第一次写完后,读取CSW成功,即使重新对U盘复位和枚举,也不能对U盘再次操作(写),必须通过计算机写一次(还必须是同一个逻辑块)。我做了一个实验,收到CSW后,又直接用BULK-OUT再发一次数据(不发CBW和CSW),把U盘发到STALL状态,第二次重新插上U盘,写操作还是不能成功,但第三次就可以,现象是隔一次会成功一次。
   (3)、有关零数据帧,我在写完整数个64字节后(如一个逻辑块512字节,我上面所有的操作都是这么多),发不发零数据帧现象相同。
    关键时候,请大家拉兄弟一把。谢谢!
  

最新喜欢:

litcrazylitcra... mapoflmapofl
飞天猩猩
驱动巨牛
驱动巨牛
  • 注册日期2001-09-24
  • 最后登录2008-06-17
  • 粉丝0
  • 关注0
  • 积分201分
  • 威望22点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-12-10 14:42
SL811HS是不是HOST芯片?
qianyu123
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-12-10 14:47
   YES。
飞天猩猩
驱动巨牛
驱动巨牛
  • 注册日期2001-09-24
  • 最后登录2008-06-17
  • 粉丝0
  • 关注0
  • 积分201分
  • 威望22点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-12-10 15:28
HOST端要做的事情很少,你的地址没有发错?
qianyu123
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-12-10 15:44
  好象没有错。每次复位枚举后均能READ10成功,就是不能循环读。
  写的时候,只要U盘状态正常也可以写成功,但不能循环,而且复位枚举都不起作用(复位枚举通过,写不行)。或者我故意再发一个命令(WRITE10),U盘回STALL。这样的话,隔一次会成功一次。
qianyu123
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-12-10 15:55
   还有一个现象,大家讨论一下:
   CBW采用DATA0发送31个字节,然后如果再用DATA0开始发512个字节(每帧64字节),那么第一个64字节不能够写入;数据从第二个64字节开始写入,CSW读不到。但前面提到的每个数据帧U盘都回ACK。如果从DATA1开始发512个字节(每帧64字节),才能够成功,包括读到正确的CSW。我如果在512字节后多发一个ZERO-LENGTH数据帧,效果相同。
   我对此有两个疑问:
  1、CSW和下面的数据的DATA0/DATA1是连续的吗?读是不是也这样,这才能解释我为什么循环读不行。(我还没试过)
  2、ZERO-LENGTH数据帧有用没有,有用的话什么时候用?
 
   抛砖引玉,大家指点。
qianyu123
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-12-11 08:14
   自己顶一下。
   我实在想不通,大家帮帮忙。
   :( 死不瞑目。。。。。。。。。。。。。。
qianyu123
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-12-11 10:13
   斑竹:救命啊!!!!!!!!
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-12-11 10:28
 :D

抱歉!俺还没有用过它呢!
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
qianyu123
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-12-11 10:37
   那些玩过的同志呢?
   ..........................
飞天猩猩
驱动巨牛
驱动巨牛
  • 注册日期2001-09-24
  • 最后登录2008-06-17
  • 粉丝0
  • 关注0
  • 积分201分
  • 威望22点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-12-11 13:49
  那些玩过的同志呢?
   ..........................

????
qianyu123
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-12-11 13:55
   9505104大佬:
   再提点建议。
   不辩不清啊。  
飞天猩猩
驱动巨牛
驱动巨牛
  • 注册日期2001-09-24
  • 最后登录2008-06-17
  • 粉丝0
  • 关注0
  • 积分201分
  • 威望22点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-12-11 14:00
  9505104大佬:
   再提点建议。
   不辩不清啊。  

你是在哪里?我在深圳。可能的话,电话交流更好,讲的比较清楚。
qianyu123
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-12-11 14:03
   OK,OK,OK!
   我在南京。025-3210548-8366  my name is qian yu.
   你呢?如何联系。

[编辑 -  12/11/02 by  qianyu123]
飞天猩猩
驱动巨牛
驱动巨牛
  • 注册日期2001-09-24
  • 最后登录2008-06-17
  • 粉丝0
  • 关注0
  • 积分201分
  • 威望22点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-12-11 14:07
现在上班。
我的邮箱:summer_xgp@hotmail.com
joyup
驱动牛犊
驱动牛犊
  • 注册日期2002-03-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-12-11 14:27
我想到了,不能循环读的问题,我猜一定是你的data toggle切换错了。
零数据帧的问题看我给你回的email。
TornadoII
驱动牛犊
驱动牛犊
  • 注册日期2002-10-15
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-12-12 08:59
Bulk Data: 我想也是Toggle的问题,每次应该都是Data0开始的。。

顺便问一个问题:你怎么计算硬盘的容量的?
qianyu123
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-12-12 09:31
   每次不能从DATA0开始。
   硬盘容量READ CAPACITY 里有定义。
TornadoII
驱动牛犊
驱动牛犊
  • 注册日期2002-10-15
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-12-12 10:27
硬盘容量READ CAPACITY 里,定义的是最后一个逻辑块地址,以及最后一个逻辑块的大小,按到里直接加上就是容量,那可差得远?我想我可能那儿错了。

BULK 传输不是规定了第一个Data必须用DATA0吗?
qianyu123
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2002-12-12 15:23
  大哥,是乘号!
上一页
游客

返回顶部