修复USB错误:device not accepting address

4星 · 超过85%的资源 需积分: 48 152 下载量 174 浏览量 更新于2023-03-16 5 收藏 80KB DOC 举报
"该问题涉及USB设备在Linux系统中无法正常枚举,出现错误-62,这通常意味着设备无法接受地址。这个问题出现在基于s3c2410-ohci控制器的USB主机端口上,可能的原因是硬件故障、驱动程序错误或系统配置问题。在解决这个问题时,可以通过修改内核源码来尝试修复。" USB错误- device not accepting address 是一个常见的Linux USB设备问题,主要表现为设备连接后,系统无法完成设备的枚举过程。在上述描述中,错误-62通常表示设备响应超时或者硬件没有正确响应。这种问题可能由多种因素导致: 1. **硬件问题**:检查USB端口的物理连接,确保设备插头与插座接触良好,无损坏或松动。如果其他设备在同一端口上正常工作,那么问题可能在于特定的USB设备。 2. **驱动问题**:如内容中所示,修改了`kernel26_h/drivers/usb/host/ohci-s3c2410.c`文件中的函数`s3c2410_start_hc`,通过调整USB锁相环(PLL)的设置来临时提高频率,以解决初始化过程中的问题。这种方法试图通过优化初始化阶段的时序来避免错误。在初始化完成后,频率恢复到正常值48MHz。 3. **电源问题**:USB设备需要足够的电源才能正常工作。如果设备功耗较大,而USB端口提供的电流不足,可能会导致设备无法正确枚举。检查设备的电源需求,并确认USB接口可以提供足够的电流。 4. **系统配置**:检查Linux内核配置,确保支持USB设备的正确驱动程序已启用。有时,更新内核或重新编译内核以包含特定的硬件支持可以解决问题。 5. **故障排查工具**:利用Linux命令行工具如`dmesg`来查看详细的设备日志,获取更多关于错误的线索。此外,还可以使用`lsusb`来检查系统是否能够识别到USB设备。 6. **设备兼容性**:有些USB设备可能不完全符合USB规范,导致与某些Linux内核版本存在兼容性问题。更新内核或者查找设备的特定驱动程序可能有所帮助。 7. **系统更新**:保持Linux系统和内核的最新状态,以获得对各种硬件的最新支持和修复。 在解决这类问题时,通常需要根据日志信息逐步排查,从硬件到软件,从简单到复杂。对于开发者来说,深入理解Linux内核的USB子系统以及设备驱动程序的工作原理是十分必要的。在修改内核代码时,必须谨慎操作,并确保改动不会影响系统的其他部分。同时,备份原有文件以便在出现问题时能够回滚。