【问题标题】:USB host and device functionality on SBC 6845 board using kernel modules使用内核模块的 SBC 6845 板上的 USB 主机和设备功能
【发布时间】:2013-04-18 13:49:22
【问题描述】:

我正在从事 Linux 嵌入式开发中的 SBC 6845(Atmel 处理器)。我的内核版本是 2.6.30。

此板带有 2 个 USB 端口(均为 A 型),一个可配置为主机,另一个可配置为 USB 设备。

我已经在内核中配置了这些 USB 模块。我已经用包括 USB 模块在内的必要模块烧录了内核和文件系统。我已经通过 /init.d/rcS 文件加载了这些 USB 模块。

当板子打开并且我在控制台上输入 lsmod 时,它会显示这些模块已加载。 当我将开发板连接到计算机时,未检测到 USB(设备功能)。
当我将 pendrive 连接到板时,未检测到它(主机功能)。

/init.d/rcS 脚本

#install USB Gadgate mass_storage
modprobe g_file_storage file=/home/mass_storage/backed_storage_file stall=n
losetup -o 4096 /dev/loop0 /home/mass_storage/backed_storage_file

#install USB ehci-hcd
modprobe ehci-hcd

rcS 运行日志

g_file_storage gadget: File-backed Storage Gadget, version: 20 November 2008
g_file_storage gadget: Number of LUNs=1
g_file_storage gadget-lun0: ro=0, file: /home/mass_storage/backed_storage_file
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
atmel-ehci atmel-ehci: Atmel EHCI UHP HS
atmel-ehci atmel-ehci: new USB bus registered, assigned bus number 1
atmel-ehci atmel-ehci: irq 22, io mem 0x00800000
atmel-ehci atmel-ehci: USB 2.0 started, EHCI 1.00
usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: Atmel EHCI UHP HS
usb usb1: Manufacturer: Linux 2.6.30 ehci_hcd
usb usb1: SerialNumber: atmel-ehci
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected

lsmod 输出

Module                  Size  Used by    Not tainted
ehci_hcd               30132  0
g_file_storage         24260  0

欢迎任何帮助!

【问题讨论】:

    标签: linux linux-kernel usb


    【解决方案1】:

    您的驱动程序似乎安装得很好。我没有直接的答案,但我经常使用软硬件集成。这是我会做的以获得更多线索。这种处理器通常具有多用途的引脚。有时,在评估板上,默认情况下它们没有按照我们想要的方式进行配置。您可以查看文档,也可以使用示波器探测 USB 的 D+ 和 D-。他们在空闲时还好吗?当您在主机端口上连接设备时会发生什么?前几件事将由 USB 控制器完成,并且在配置控制器后几乎不需要与软件交互。如果您看到协商的开始(一堆 0 和 1),那么您就知道您的硬件配置正确,并且您的基本驱动程序已安装并正常工作。这样做的结果将缩小问题的范围。

    【讨论】:

      【解决方案2】:

      您缺少上层驱动程序。 EHCI 只是一个接口驱动程序,您需要在它之上的设备驱动程序。 BoardPC 通信通常通过 USB 上的串口完成,因此您需要 USB 串口驱动程序。在内核配置中,转到 Device Drivers -> USB Support -> USB Serial Converter support 并根据您的板/电缆上的芯片选择驱动程序。 这是当板连接到 Ubuntu 笔记本电脑时看到的示例 dmesg 转储:

      [ 3469.923779] USB 2-1.2:新的全速 USB 设备号 5 使用 ehci_hcd

      [3470.019145] cp210x 2-1.2:1.0:检测到 cp210x 转换器

      [ 3470.091614] usb 2-1.2:使用重置全速 USB 设备号 5 ehci_hcd

      [3470.184995] usb 2-1.2:cp210x 转换器现在连接到 ttyUSB0

      我相信 pendrive 也有类似的情况 - 缺少上层驱动程序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-11
        • 1970-01-01
        • 2015-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多