USB驱动程序开发

0 views
Skip to first unread message

bobdylan

unread,
Oct 29, 2007, 4:14:36 AM10/29/07
to vxworks应用及实践
1、 初始化USBD
调用usbdInitialize函数初始化USBD的内部数据结构和调用USB驱动堆栈的其他模块,系统只能够调用一次usbdInitialize
函数,每多调用一次,会给USBD内部调用计数器加一。
调用usbdShutdown函数,每调用一次,内部调用计数器减一,如果内部调用计数器为零时,卸载USBD模块。
2、 连接至少一个HCD(USB主机控制器)到USBD上。
使用usbdHcdAttach函数,一般在vxWorks启动时调用该函数。在连接HCD到USBD时,调用者传递HCD的HCD执行入口函数和
HCD的自定义参数给usbdHcdAttach函数。
3、 针对每一个连接好的主机控制器HCD,USBD启动一个总线任务来监听总线事件,任务名称为tUsbdBus。
4、 注册设备模块
调用usbdClientRegister函数注册设备模块。注册成功以后,USBD返回一个句柄,用于设备操作中调用USBD时使用。
当一个设备不再使用USBD时,调用usbdClientUnregister函数,释放自己的设备数据和回调任务,这是所有为执行完成的设备的USB
请求被取消。
5、 动态链接和注册
调用usbdDynamicAttachRegister函数,一个设备可以指定一个动态连接或者移除设备时间的处理函数

6、 UsbTool模块命令
usbTool:入口命令
UsbInit:初始化USBD
Attach uhci:连接HCD
UsbEnum:枚举连接到系统的USB设备

7、 USB安装流程
配置Host Stack
配置Host Controller
配置usbTool
配置设备Device

8、设备驱动程序组成
设备的注销和注册
usbdClientRegister
usbdClientUnregister

回调任务
Callback tUsbdCln

设备连接,创建控制管道
然后创建usbdPipeCreate
获取描述符usbdDescriptorGet
获取特性usbdFeatureGet

设备动态注册
UsbdDynamicAttachRegister

数据传输
创建管道
usbdPipeCreate
定义回调函数
初始化IRP
发送IRP usbdTransfer


9、 USB鼠标驱动程序分析
usbMouseDevInit函数初始化USB鼠标设备
首先检查有没有重复创建设备
调用usbdClientRegister函数注册USB设备驱动程序
调用usbdDynamicAttachRegister函数动态连接USB设备到USBD上
usbMouseDevShutdown函数关闭USB鼠标设备
调用destroyAttachRequest函数处理已经发出的针对本设备的请求

Reply all
Reply to author
Forward
0 new messages