boot权限下操作。
1、查看内核源码是否有USB
一般在/use/src/linux-?.?/drives/usb 下,应包含storage文件夹及usb-skeleten.c
没有的话版本升级
查看版本uname -a
2、查看文件usb-skeleten.c或vi 修改
找到
usb_register_dev 注册 在usb_driver结构体中,skel_probe中用了该函数。
usb_dergister_dev 注销 在usb_driver结构体中,在usb_disconnect实现了该函数。
3、在注册函数和中注销函数中 做标志
如printk("hello"); 成功后可用cat /var/log/kern.log命令查看
4、进入storage 修改 makefile 空格都是tab键
ifneq ($(KERNELRELEASE),) obj-m := xxx.o else KERNELDIR ?= /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) default: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules endif clean: rm -rf *.mod.* *.o *.ko .*.ko.* .tmp* .*.mod.o.* .*.o.*
5、将修改好的usb-skeleten.c文件与makefile文件一起放在storage 文件夹下
运行命令make
make成功
6、到 /lib/modules/3.16.0/kernel/drivers/usb/storage 下执行rmmod usb-storage 卸载原usb驱动(U盘等设备应拔出)
将usb-storage.ko改名usb-storage.ko.bak 避免自动加载
将刚才编译的usb-skeleton.ko文件复制到该文件夹下,执行insmod usb-skeleton.ko完成驱动安装
7、插入U盘 执行cat /var/log/kern.log即可查看
以上基本完成。
也可以自建usb.c文件实现该功能
参考http://www.redflag-linux.com/product/emb/resource/1000000825.html