albue
驱动牛犊
驱动牛犊
  • 注册日期2007-05-09
  • 最后登录2009-07-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望16点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
阅读:9096回复:2

求助:Linux下USB设备枚举失败,提示"device not accepting address"

楼主#
更多 发布于:2007-07-31 17:11
我在装有Linux系统的PC机上开发一USB设备的固件升级程序时,发现在较老的Linux版本中接入USB设备时,系统无法枚举该设备,用dmesg查看出错信息如下:
usb 2-1: new full speed USB device using address 5
usb 2-1: device not accepting address 5, error -71
usb 2-1: new full speed USB device using address 6
usb 2-1: device not accepting address 6, error -71

去网上搜索,得到结果是:“主机HUB监视着每个USB口,当有新的USB设备接入时它便会通知主机,然后主机会发送SET_FEATURE请求给HUB,请求重置该端口;在端口重置之后,对USB设备发出命令之前,USB 2.0规范中需要10毫秒重置恢复时间(TRSTRCY);然而Linux的核心在2.6.11版本以前没有执行这个恢复时间,导致USB 2.0设备枚举的失败。”
经过我的试验,在2.6.11内核(含2.6.11)之后的Linux系统中都可以正常枚举该设备,而在2.6.11之前的Linux,枚举时便会失败,验正了上面那段话的正确性;于是我的固件升级程序在2.6.11之前的Linux系统中便没办法用了(连该USB设备都没办法枚举到,自然就无法对它进行读写了),除非将老的版本升级到2.6.11之后版本。问题是我的程序面向的是普通用户,我希望能够在不更新内核、不更换Linux发行版的情况下,在老版本(2.6.11内核之前)中也可以使用我的固件升级程序,各位大虾可有解决的方法????
albue
驱动牛犊
驱动牛犊
  • 注册日期2007-05-09
  • 最后登录2009-07-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望16点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-07-31 18:11
呃。。。没人回答么!! 我自己顶一下~~~
albue
驱动牛犊
驱动牛犊
  • 注册日期2007-05-09
  • 最后登录2009-07-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望16点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-08-01 09:33
有没哪位大虾来指定一二,给点建议啊~~~~ newbird我在线等了~~~
游客

返回顶部