jerry_yang
驱动牛犊
驱动牛犊
  • 注册日期2002-10-15
  • 最后登录2005-05-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1242回复:10

又发现有的u盘居然不支持setInterface(),这不都是标准规定了的吗?

楼主#
更多 发布于:2004-05-26 14:45
  呵呵,不解?
智者当借力而行
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-26 18:54
 呵呵,不解?

俺见了很多都不支持的,还有一个不支持ReadCapacity的呢:)
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-05-26 21:02
你给我的email已回了,没征求你的意见就贴出来了,不会怪我吧?
兼容性方面可以如下考虑:
根据所得到的接口描述符,倒数第2个数就表示U盘传输遵循的协议,其值为:01、02或50其中50是最常见的。兼容性好首先要支持他们。其实这3种在实际传输中基本上差不多

对于set config、set interface、还有获得字符串描述符等信息都有可能会出现stall、timeout等情况。在windows下也可以看到这一点,尤其是字符串描述符的获得,可能因为U盘本身没有做好导致timeout的现象比比皆是。

对于UFI命令集对于U盘来说它也是不可能全部都支持的,所以它选择它必须得完成的,如read10、write10等。

对于出现了stall或timeout问题的处理,比较复杂,可以参考协议和Linux下的代码。并且对于不同的通道的处理都应该是不同的。比如说:在setup包建立的过程中出现了stall,而stall的出现在token、 data in、data out等条件下均应该处理,处理有重发、多次重发后如果仍然这样就查看状态,如果状态良好就可能要略过往下继续,或者换其它方式;如果状态有问题,可能就要clearfeature了。再比如:在mass storage枚举的时候,你要先发一些你需要的命令,如读命令就有好几个,U盘可能就实际支持一个,但你host就不能,必须全部支持,一个接一个的测试,发现可以的就记录下来,以后就用它来做读了。
至于mode sense/select都有很多U盘不支持,不做也没什么关系。

另外协议是死的,做出来东东才是关键,其实主要是选你要实现的几个关键命令就好了。

关于这方面的资料我没有,都是自己琢磨。如果你有的话,记得发给我一份,谢谢。

个人我认为如果是做产品的话,做OTG可能已经慢了,其实你只要能支持市面上95%的u盘就够了。

以后再聊吧。





>Subject: 我是驱动开发网网友,想和你交流一下
>Date: Wed, 26 May 2004 20:25:23 +0800 (CST)
>
>   你好,十分高兴你回复我的帖子.
>   我正在做u盘兼容性方面的工作,发现了很多问题,有的u盘不支持
>setInterface,有的u盘不支持getCapacity,还有的u盘居然不支持clear_feature().那样的话,端点如果STALL的话,我怎么办?
>   你有这方面的资料吗?
>
>
>发件人:  jerry_yang
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
jerry_yang
驱动牛犊
驱动牛犊
  • 注册日期2002-10-15
  • 最后登录2005-05-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-05-27 08:54
十分感谢!
祝你早日成功!
智者当借力而行
seu_zhufeng
驱动牛犊
驱动牛犊
  • 注册日期2004-01-02
  • 最后登录2006-07-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-05-27 09:30
真是好帖子,。。。
seu_zhufeng
驱动牛犊
驱动牛犊
  • 注册日期2004-01-02
  • 最后登录2006-07-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-05-27 09:34
问一个问题:
setup阶段的data out(状态阶段),大家是怎么处理的啊? 需要软件干预么?
jerry_yang
驱动牛犊
驱动牛犊
  • 注册日期2002-10-15
  • 最后登录2005-05-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-05-27 13:28
是的,需要你发一个空包
智者当借力而行
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-05-27 16:03
一般需要处理,data 阶段就是发数据或者读数据
问一个问题:
setup阶段的data out(状态阶段),大家是怎么处理的啊? 需要软件干预么?
 
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-05-27 16:03
问一个问题:
setup阶段的data out(状态阶段),大家是怎么处理的啊? 需要软件干预么?
 
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
seu_zhufeng
驱动牛犊
驱动牛犊
  • 注册日期2004-01-02
  • 最后登录2006-07-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-05-27 19:08
疑惑啊,例如说响应get descriptor命令,发完描述府后,应该由主机往slave发状态包啊。状态阶段的方向应该和数据阶段相反。协议上是这么说得啊。
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-05-27 19:19
对,协议上有这么说。但是目前市面上的USB芯片已经由硬件完全实现了USB协议层,而不需要你固件的参与。
在发完数据之后,你只需检测寄存器的状态来判断你的传输是否正常
疑惑啊,例如说响应get descriptor命令,发完描述府后,应该由主机往slave发状态包啊。状态阶段的方向应该和数据阶段相反。协议上是这么说得啊。
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
游客

返回顶部