linux设备驱动——USB

系统内核中有USB总线驱动程序,作用是识别设备,查找并安装设备驱动程序,提供读写函数

当一个USB设备插入时,会有以下操作:

1.某条线被拉低,硬件感知有设备接入

2.USB总线驱动程序为设备分配新地址,并告诉USB设备

3.获取描述符

4.根据获取的设备描述符中的信息在USB总线中添加device,此时如果总线中有同名的driver就会调用driver中的probe函数


usb描述符在usb.h中定义,有很多

struct usb_device {

struct usb_device_descriptor descriptor;    //设备描述符

struct usb_host_config *config;                  //配置描述符

......

struct usb_interface {

struct usb_interface_assoc_descriptor *intf_assoc;       //描述设备特有描述符属性

struct usb_host_interface *cur_altsetting;                      //存有设备特有的描述符

......

}

等......




设备驱动程序

1. 分配/设置usb_driver

2.注册usb_driver

在usb_driver的probe函数中我们可以做想做的事情,比如说注册一个字符设备驱动程序,,或者直接用输入子系统做一些事情。不同的地方在于,以前用输入子系统的时候是在中断函数中读寄存器,根据寄存器中的数据来上报事件。USB是没有的中断,也读不了寄存器,那怎么办???USB总线驱动程序中有读数的函数,会定时去读数据,读完会调用一个完成函数相当于中断函数。那么怎么使用USB总线驱动中那些现成的东西???

1. 分配usb_buffers
2. 分配urb
3. 设置urb
4. 提交urb



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值