linux usb驱动学习,ubuntu linux3.16 USB驱动 学习及实践

本文详细介绍了在Linux系统下如何进行USB驱动的开发和调试。首先,需要检查内核源码中是否存在USB相关模块,然后在源码中找到并修改usb-skeleton.c文件,添加标志函数。通过makefile构建并编译驱动,接着卸载原有USB驱动,安装新编译的驱动。最后,插入U盘并查看日志确认驱动是否成功安装。这是一个实用的Linux驱动编程教程。
摘要由CSDN通过智能技术生成

boot权限下操作。

1、查看内核源码是否有USB

一般在/use/src/linux-?.?/drives/usb 下,应包含storage文件夹及usb-skeleten.c

没有的话版本升级

查看版本uname -a

625ce81ed88f7151cb346ad7e5f3977e.png

0818b9ca8b590ca3270a3433284dd417.png

2、查看文件usb-skeleten.c或vi 修改

找到

usb_register_dev 注册  在usb_driver结构体中,skel_probe中用了该函数。

usb_dergister_dev 注销 在usb_driver结构体中,在usb_disconnect实现了该函数。

309850e2b60a061f99e126c2c6bd95d8.png

0818b9ca8b590ca3270a3433284dd417.png

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

0818b9ca8b590ca3270a3433284dd417.png

8e9bd31d22569ae4e1340cf717f37d4d.png

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即可查看

0818b9ca8b590ca3270a3433284dd417.png

afe55ffc85b5652973d5351e10d123af.png

以上基本完成。

也可以自建usb.c文件实现该功能

参考http://www.redflag-linux.com/product/emb/resource/1000000825.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值