笔记性质的文章。
其实,我是想在ARM开发板上实现我的FW150US-USB无线网卡功能,所以测试下USB接口。
1、配置内核
Device Drivers --->
SCSI device support --->
<*> SCSI device support
[*] legacy /proc/scsi/ support
<*> SCSI disk support
<*> SCSI tap support
<*> SCSI CDROM support
[*] USB support --->
<*> Support for Host-side USB
[*] USB device filesystem
<*> OHCI HCD support
<*> USB Mass Storage support
File Systems --->
DOS/FAT/NT Filesystems --->
<*>VFAT (Windows-95) fs support
(936) Default codepage for FAT
(iso8859-1)Default iocharater for FAT
[root@lnx /]# ls /dev/插入U盘后会发现该目录下多了sda1(对于有的U盘,并不是这个名字,所以在自动加载脚本里要注意区别对待)节点,这个就是我们系统识别到U盘后分配的。
3、手动挂载U盘到指定目录/udisk
[root@lnx /]# mount /dev/sda1 /udisk/ [root@lnx /]# [root@lnx /]# ls /udisk/ images images____ 完了之后,卸载之: [root@lnx /]# umount /udisk/
sda1 0:0 0600 =udisk */bin/hotplug_usb.sh如果无法确认是否是[sda1(默认是这个)],让系统自动判断:
sd[a-z]*[0-9] 0:0 0600 =udisk */bin/hotplug_usb.sh至于为何这么写,参见结尾处关于配置文件mdev.comn
#!/bin/sh
# 为了方便,shell 的环境变量 $MDEV 会被设置成设备名。 例如 the device 'hdc' was matched, MDEV would be set to "hdc"
case $MDEV in
udisk | sda1)
DEVNAME=udisk
MOUNTPOINT=/udisk
;;
sdcard | mmcblk0p1)
DEVNAME=sdcard
MOUNTPOINT=/sdcard
;;
*)
exit 0
;;
esac
# 若不存在/dev/null节点,创建之
test ! -c /dev/null && mknod -m 0666 /dev/null c 1 3
# 热插拔实现原理及过程:
# 在/etc/init.d/rcS文件中有句:echo /sbin/mdev > /proc/sys/kernel/hotplug
# 那么当有热插拔事件产生时,内核就会调用位于/sbin目录的mdev
# 这时mdev通过环境变量中的 ACTION 和DEVPATH(这两个变量是系统自带的)来确定此次热插拔事件的动作以及影响了/sys中的那个目录
# 接着会看看这个目录中是否有“dev”的属性文件,如果有就利用这些信息为这个设备在/dev 下创建设备节点文件。
case $ACTION in
remove)
/bin/umount $MOUNTPOINT || true
rmdir $MOUNTPOINT >/dev/null 2>&1 || true
;;
*)
/bin/mkdir $MOUNTPOINT > /dev/null 2>&1 || true
/bin/mount -t vfat -o codepage=936 -o iocharset=utf8 -o sync -o noatime -o nodiratime /dev/$DEVNAME $MOUNTPOINT > /dev/null 2>&1 || true
;;
esac
exit 0sd[a-z]*[0-9] 0:0 0660 @(mount /dev/$MDEV /udisk) sd[a-z]*[0-9] 0:0 0660 *(umount /udisk)
原文地址:http://blog.csdn.net/u013686019/article/details/44924327