我的开发板是 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 命令,这些驱动又有什么用呢?
219.142.230.* 于 2007-06-29 14:44:31发表:
feildingellen@163.com mail to me some of your problems we can discuss.
Regards
yours
kinger 于 2007-05-29 09:56:19发表:
busybox 命令中可以使用 insmode 命令, 但是关于usb的几个模块中,只有 usbcore.o 和 usbnet.o 可以加载
而 usb-ohci.o 和 usb-ohci-omap1510.o 加载时都会报错(原文件一些符号未定义之类的).
另外,系统/lib/modules/2.4.X.X/下面没有 usb-storage.o 这个模块,那么普通
的u盘不就不能用了吗? 是不是需要将字符设备转为SCSI 磁盘的块设备才可以使用? 如果是,该怎么样转?
并且内核编译时还需要将支持SCSI这一项加入内核编译才行?