Chinaunix首页 | 论坛 | 博客
  • 博客访问: 430589
  • 博文数量: 56
  • 博客积分: 2262
  • 博客等级: 大尉
  • 技术积分: 711
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-08 20:04
文章分类

全部博文(56)

文章存档

2013年(1)

2012年(9)

2011年(10)

2010年(7)

2009年(7)

2008年(22)

我的朋友

分类: WINDOWS

2010-07-18 22:38:02

USB设备驱动程序主要和USBD打交道,所以我们必须详细的了解USBD提供的函数。

USB系统软件由两层组成:
1.较高的USB Client设备驱动程序
2.较低的由Windows CE实现的USB函数层(第二层由较高的通用串行总线驱动程序USBD模块和较低的控制器驱动程序HCD模块组成。)
HCD模块给USBD模块提供最底层的支持,USBD实现高层的USBD接口函数。USB设备驱动程序使用USBD提供的接口函数和外围设备进行通讯。

WINCE USB系统结构:USB设备驱动程序-》USBD-》HCD-》USB控制器硬件

编写USB设备驱动程序方法:
1.USB设备驱动程序使用USBD模块提供的函数操作USB设备。
2.使用流接口函数
3.使用现有的Windows CE应用程序编程接口(API)

USBD的实现在WINCEROOT\public\common\oak\drivers\usb\USBD 文件夹下有源代码:

USBD的传输函数:10

AbortTransfer :中断传输
CloseTransfer : 关闭传输
GetIsochResults :获取同步传输结果
GetTransferStatus:得到当前的传说状态
IssuBulkTransfer :在特定的端口上初始化块传输
IssueControlTransfer:在特定的端口上初始化控制传输
IssueInterruptTransfer:在特定的端口上初始化中断传输
IssueIsochTransfer:在特定的端口上初始化同步传输
IsTransferComplete :传输结束?
IssueVendorTransfer :在特定的端口上初始化厂商自定义传输

USBD和USB设备建立通讯管道的函数:7
AbortPipeTransfer
ClosePipe
IsDefaultPipeHalted
IsPipeHalted
OpenPipe
ResetDefaultPipe
ResetPipe

USB针对在总线上的数据打包函数:5
GetFrameLength
GetFrameNumber
ReleaseFrameLengthControl
SetFrameLength
TakeFrameLengthControl

取得设置设备配置函数: 8
ClearFeature ??
SetDescriptor
GetDescriptor??
SetFeature
GetInterface??
SetInterface
GetStatus????
SyncFrame

与USB进行交互的实现方法相关的多任务函数:10
FindInterface?????????
RegisterClientDeviceId
GetDeviceInfo?????????
RegisterClientSettings
GetUSBDVersion ????????
RegisterNotificationRoutine
LoadGenericInterfaceDriver      
TranslateStringDescr
OpenClientRegisterKey??
UnRegisterNotificationRoutine

阅读(1623) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~