mini2440插入usb设备出现: unable to enumerate USB device on port问题的解决,以及使用super vivi对nand flash进行分区

本文详细介绍了在Mini2440开发板上使用新版本U-boot解决USB设备连接问题及NAND分区重新配置的过程。通过修改U-boot设置、重新编译并下载至开发板,最终成功解决了设备识别错误和NAND分区不兼容问题。

mini2440,使用2.6.32.2内核,插入usb设备(u盘,usb camera,usb wifi)均后出现该问题:

 usb 1-1: new full speed USB device using s3c2410-ohci and address 2
usb 1-1: device descriptor read/64, error -62
usb 1-1: device descriptor read/64, error -62
usb 1-1: new full speed USB device using s3c2410-ohci and address 3
usb 1-1: device descriptor read/64, error -62
usb 1-1: device descriptor read/64, error -62
usb 1-1: new full speed USB device using s3c2410-ohci and address 4
usb 1-1: device not accepting address 4, error -62
usb 1-1: new full speed USB device using s3c2410-ohci and address 5
usb 1-1: device not accepting address 5, error -62
hub 1-0:1.0: unable to enumerate USB device on port 1


搜索资料:http://hi.baidu.com/meakhella/item/4578125d7d12883432e0a955

说是 原因是uboot的Upll设置有问题

因此放弃了原先的uboot,使用Tekkaman

u-boot-2010.03 for mini2440 链接:http://blog.chinaunix.net/uid-20543672-id-94379.html

从新编译u-boot,下载到开发板,问题解决。

----------------------

在mini2440中,由于bin文件大小已经大于了0x40000,所以我也修改了ENV的 OFFSET。现在的分区是这样的:
U-boot        :0x0~0x60000
u-boot参数区  : 0x60000~0x80000
内核和文件系统 :0x80000之后


使用新的uboot后,要求对nand flash进行从新分区。

我使用的是nor flash中的super vivi ,进入cmd模式,输入help part,完成分区。

然后对nand flash进行格式化(x),使用usb下载线和SuperVivi-USB-Transfer-Tool从新下载u-boot.bin(n命令),uImage,rootfs(yaffs2对应y命令),需要注意的是,在下载uImage的时候,会出现问题(使用的k命令),可能的原因是k命令对应下载的是zImage而不是uImage,所以使用uboot从新烧写了uImage到nand flash ,问题解决


--------------------

nand flash 分区表(上旧,下新)

name            :       offset          size            flag
------------------------------------------------------------
vivi            :       0x00000000      0x00040000      0
param           :       0x00040000      0x00020000      0
kernel          :       0x00060000      0x00500000      0
root            :       0x00560000      0x3fa80000      0
Supervivi> help part








name            :       offset          size            flag
------------------------------------------------------------
vivi            :       0x00000000      0x00060000      0
param           :       0x00060000      0x00020000      0
kernel          :       0x00080000      0x00500000      0
root            :       0x00600000      0x3fa80000      0


在麒麟操作系统中,遇到 `USB4-port3` 无法枚举 USB 设备问题,通常与硬件兼容性、驱动程序状态、内核模块加载情况、设备状态迁移失败或系统配置错误有关。以下是解决此类问题的详细方法和排查步骤: ### 1. 检查硬件连接和设备状态 确保 USB 设备正常连接,且设备本身没有硬件故障。可以尝试以下操作: - 更换 USB 线缆或端口,排除线缆或端口损坏的可能性。 - 在其他操作系统或设备上测试该 USB 设备,确认其功能正常。 - 检查设备是否进入正确的 USB 状态迁移流程,例如设备是否成功完成上电、地址分配和配置状态[^1]。 ### 2. 查看系统日志 使用 `dmesg` 命令查看内核日志,确认系统是否识别到设备插入,以及是否在枚举过程中出现错误: ```bash dmesg | grep -i usb ``` 重点关注与 `USB4-port3` 相关的日志信息,例如是否存在链路训练失败、设备未响应或地址分配失败等问题[^2]。 ### 3. 检查 USB 驱动和模块加载状态 确保必要的 USB 驱动模块已加载。可以使用以下命令查看当前加载的 USB 模块: ```bash lsmod | grep usb ``` 如果发现关键模块(如 `xhci_hcd` 或 `ehci_hcd`)未加载,可尝试手动加载: ```bash sudo modprobe xhci_hcd ``` ### 4. 更新或回滚内核 某些 USB4 设备可能需要较新的内核版本才能正确支持。可以通过以下命令查看当前内核版本: ```bash uname -r ``` 如果当前内核版本较低,建议升级到最新稳定版。也可以尝试使用较新的内核进行测试,以确认是否为内核兼容性问题。 ### 5. 检查设备描述符和配置描述符 USB 设备的描述符信息(如设备描述符、配置描述符)在枚举过程中起关键作用。若描述符读取失败,可能导致枚举中断。可以通过 USB 抓包工具(如 `Wireshark` 或 `usbmon`)监控控制传输过程,确认是否成功获取配置描述符(`USB_CONFIGURATION_DESCRIPTOR`)[^3]。 ### 6. 使用 USB 工具诊断 安装并使用 `lsusb` 和 `usbutils` 工具查看 USB 设备树: ```bash sudo apt install usbutils lsusb ``` 如果设备未出现在列表中,说明枚举未成功。可以尝试重置 USB 子系统: ```bash echo 1 | sudo tee /sys/bus/usb/devices/usb4-port3/authorized ``` ### 7. 修改设备策略和权限 某些 USB 设备可能因权限问题无法被用户空间访问。可以尝试修改设备节点权限: ```bash sudo chmod a+rw /dev/bus/usb/004/003 ``` 其中 `004` 是总线号,`003` 是设备号,需根据实际情况调整。 ### 8. 固件更新和 BIOS 设置 - 更新主板 BIOS,确保其支持 USB4 功能。 - 检查 BIOS 中 USB4 端口是否启用。 - 更新设备固件,确保其与主机控制器兼容。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值