解决USB设备 descriptor read/64, error -62 错误

4星 · 超过85%的资源 需积分: 48 583 下载量 64 浏览量 更新于2024-09-15 11 收藏 80KB DOC 举报
"本文主要探讨如何解决USB设备在插入时出现的'device descriptor read/64, error -62'错误,特别是在Linux环境下,针对s3c2410-ohci控制器的设备。该问题通常与USB主机控制器的初始化和设备枚举过程中的时序或配置错误有关。" USB设备在插入时遇到的错误`device descriptor read/64, error -62`表明设备描述符读取过程中发生了问题。设备描述符是USB设备向主机报告其功能和能力的数据结构,如果无法正确读取,主机将无法识别和配置设备,导致连接失败。错误-62通常表示硬件故障或驱动程序错误。 在Linux内核中,特别是针对s3c2410-ohci(Open Host Controller Interface)的驱动,这个问题可能源于USB主机控制器的时钟配置。s3c2410-ohci驱动用于管理Samsung的S3C2410微处理器上的USB 1.1主控制器。当设备无法接受地址分配时,这可能是因为控制器没有正确设置或时钟频率不稳定。 在给出的代码片段中,可以看到针对`s3c2410_start_hc`函数的修改。这个函数负责启动USB控制器,并对其进行初始化。在修改后的版本中,首先设置了较高的时钟频率`upllvalue`和`upllvalue1`,然后在完成USB设备初始化后再恢复到正常频率48MHz。这种做法的目的是确保在设备枚举期间有足够的时钟稳定性,从而避免因时钟问题导致的错误。 修复步骤如下: 1. 找到内核源码中对应的`kernel26_h/drivers/usb/host/ohci-s3c2410.c`文件。 2. 修改`s3c2410_start_hc`函数,按照提供的代码增加高时钟频率的设置。 3. 重新编译并加载修改后的内核模块,或者在系统中更新内核以应用更改。 4. 重启系统,测试USB设备是否能被正确识别和枚举。 此外,还需要检查其他可能的原因,如USB总线的电源问题、硬件接触不良、USB驱动程序的兼容性问题以及内核版本与硬件之间的兼容性。如果问题仍然存在,可以尝试回退到已知良好的内核版本,或者查找与s3c2410-ohci相关的更新和补丁。 在处理这类问题时,日志分析是非常重要的,可以提供关于错误发生时的详细信息。通过观察`dmesg`命令的输出,可以获取更多有关USB控制器和设备交互的实时信息,帮助定位问题的根源。 解决USB设备的`device descriptor read/64, error -62`错误通常需要深入理解USB协议、内核驱动工作原理以及特定硬件的时序要求。通过调整时钟设置、排查硬件问题以及更新或修复驱动程序,大多数情况下都能找到解决方案。