一、Linux下的USB驱动程序
分离和分层是Linux下驱动程序开发采用的最基本的形式,USB驱动开发在主机端主要涉及两个部分:主机控制器驱动和设备驱动。
主机控制器驱动主要是和具体的Soc相关的,它来识别USB设备,安装对应的设备驱动程序,提供对USB设备的读写函数。
设备驱动主要是根据具体的USB设备对USB主机驱动提供的读写函数获得的数据进行处理,实现这种USB设备特有的功能。具体的层次结构如下所示:
基本的开发环境:
操作系统:Ubuntu12.04
内核:Linux-3.0.86
GUI :Qtopia2.2.0
交叉编译工具gcc版本 : 4.5.1
二、USB鼠标设备驱动的实现
这一部分主要完成的功能是:实现一个简单的USB鼠标的设备驱动程序,读取鼠标进行操作所产生的原始的数据。
1、准备工作
默认的在Linux内核当中已经配置上了USB鼠标相关的驱动,所以为了自己编写的驱动程序能加载进内核和使用,先要去掉内核上的USB鼠标驱动。进入内核目录,执行make menuconfig,执行如下配置:
-> Device Drivers
-> HID Devices
[ ]USB Human Interface Device (full HID) support
2、设备驱动编写
a、分配、设置、注册一个usb_driver的结构体变量,为了方便定义了如下一个结构体: