|
我的开发板是 Omap5912(TI ARM9 + DSP), 嵌入式系统采用免费的MontaVista linux。板子上有一个串口和一个USB口,内核编译时将USB口编译进了内核(一些主要的USB配置项都选了,这里就不一一道来了),用U-Boot 启动过程中可以看到以下几项:
usb.c : registered new driver usbdevfs;
usb.c : registered new driver hub;
usb.c : registered new driver serial;
usbserial.c : USB Serial support registered for Generic;
usbserial.c : USB Serial support Driver core v1.4;
启动完毕后,偶用命令 dmesg 再次查看系统的驱动信息中也有以上信息。
在根文件系统下可以看到 /dev 目录下多了一个 /usb的空目录,并没有我们在 X86平台下的
/dev/sda1 这个目录( 平常偶使用PC机的U盘功能时,直接敲 "mount -t vfat /dev/sda1 /mnt/usb" )
以下是偶所碰到的问题描述:
1. 将一个U盘接到开发板的U口上,看不到U盘的灯闪。是没有枚举过程? 还是板子没有给U口供电? 还是内核编译时需要设置系统给电或接入的设备自己给电?
2. 偶照着上面的 mount 命令依葫芦画瓢,敲入: mount -t vfat /dev/usb /mnt/usb 结果提示:
mount : Mounting /dev/usb on /mnt failed: Block device required
3. 敲 mount -t usbdevfs none /proc/bus/usb , 结果发现原来空的 /usb 目录下多了/devices 和 /drivers 两个目录,其中 /drivers 目录下有三个文件: usbdevfs, hub 和 serial,而 /devices 目录下面是空的
想请问有类似经验的兄弟,以上问题如何解释,是不是USB的驱动没有挂上, 开发板的 USB 功能应该如何一步步进行测试和验证,以确保USB功能的正确性。
另外,系统内核的默认配置 make menuconfig 中是将USB以模块方式编译的,在 /kernel/drivers 下可以看到一些关于 usb的 *.o 驱动文件,但是系统本身的 busybox 命令中又没有提供 insmode 命令,这些驱动又有什么用呢? |
|