czcty
驱动牛犊
驱动牛犊
  • 注册日期2004-11-04
  • 最后登录2006-11-08
  • 粉丝0
  • 关注0
  • 积分100分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
阅读:1654回复:5

老板要我写一个HID类设备的驱动,中断例程如何写?

楼主#
更多 发布于:2005-03-07 16:44
老板要我写一个HID类设备的驱动,这个设备可以使用系统HID类驱动工作.老板要我练习写驱动所以要我给这个设备写一个驱动.但是中断例程不知道如何写?有类似的例子吗?

最新喜欢:

viscarviscar
czcty
驱动牛犊
驱动牛犊
  • 注册日期2004-11-04
  • 最后登录2006-11-08
  • 粉丝0
  • 关注0
  • 积分100分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-07 16:49
补充:这个HID类设备是USB的.
kkyouking
驱动中牛
驱动中牛
  • 注册日期2004-02-23
  • 最后登录2008-02-27
  • 粉丝0
  • 关注0
  • 积分47分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-03-07 22:13
都是系统自带了,不用做任何事情就可以通讯了
52+PDIUSBD12开发套件 SL811单片机读写U盘套件 www.devking.cn 联系sl811hs@yahoo.com.cn QQ 14441292
czcty
驱动牛犊
驱动牛犊
  • 注册日期2004-11-04
  • 最后登录2006-11-08
  • 粉丝0
  • 关注0
  • 积分100分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-03-07 23:48
手头的设备是这样的,用VC调用API和HID类设备通信,VC发送命令给设备可以控制设备行为。现在这个实现了。
老扳为了要我熟悉驱动程序开发,叫我写HID类设备驱动程序,然后给VC调用。也就说写一个驱动替代系统的HID类设备驱动程序。

驱动程序中的中断例程 Read / Write 和 和BulkUsb类似吗?

[编辑 -  3/7/05 by  czcty]
sjlou1126
驱动牛犊
驱动牛犊
  • 注册日期2005-03-04
  • 最后登录2006-09-25
  • 粉丝0
  • 关注0
  • 积分112分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-03-08 09:13
     usb有四种传输方式  中断  控制  批量 实时。而你老板要你写的是中断传输。只有usb1.1以后才有的。。bulk是批量传输。
     中断传输的传输方式是windows定时的发一个中断请求,读取usb缓存里的数据,缓存里的数据更新是由usb里的HID设备描述符来规定的。这个要去看hid协议1.1的
     入手:先看usb协议,了解usb中断设备的设备描述,配置描述,接口描述和端点描述(如果需要字符,也需要了解一下),然后看看hid协议,hid协议的附录里定义了三种设备描述:mouse,keybroad,string。你可以先看明白协议再去看这些例子,当然也可以带着例子去看hid协议
     最后就是去usb。org下载个例子,读懂它。usb芯片的fireware是通过中断向量表来实现的!
    
ORG 00h

jmp reset ; reset vector
这里可以去看usb芯片的内存模式 这个程序是给cy7c63743的。
从这里可一看到它是一个中断向量表,芯片刚刚启动的时候,是一个 reset中断,然后集线器发送消息给主机(通知设备更改)然后要求更新,这样 usb设备就进入了 总线请求 也就是buss-reset阶段

jmp bus_reset ; bus reset interrupt
有了总线请求,设备就会进行通讯,进行总线配置,就是usb设备描述,给usb设备分配接口,

jmp error ; 128us interrupt
这段的error是说明不需要这样的配置  你可以看到下面有一个1ms_timer 是给设备的中断定时,(有一个问题不知道哪位DX可以回答我,就是这里一个usb设备的不同端口能不能接受不同的中断时叙?比如2端口设置成1ms 而3端口设置成10ms。我觉得可行,因为在中断时叙的定义是在端口描述才定义的!!!)

jmp 1ms_timer ; 1.024ms interrupt

jmp endpoint0 ; endpoint 0 interrupt
这里就是进行端口描述了!!使用了两个端口  0和1
jmp endpoint1 ; endpoint 1 interrupt

jmp error ; endpoint 2 interrupt

jmp error ; reserved

jmp error ; Capture timer A interrupt Vector

jmp error ; Capture timer B interrupt Vector

jmp error ; GPIO interrupt vector

jmp error ; Wake-up interrupt vector
附件名称/大小 下载次数 最后更新
2005-03-08_logo.asm (38KB)  8
sjlou1126
驱动牛犊
驱动牛犊
  • 注册日期2005-03-04
  • 最后登录2006-09-25
  • 粉丝0
  • 关注0
  • 积分112分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-03-08 09:16
   上面帖子里的logo.asm是从usb.org下载下来的一个例子中的一部分,它有两个include usb.inc  和63743.inc  这两个只是设备定义头文件,因为一般的例子里面都会有这样的定义,也可以在usb协议和芯片的数据手册上找到!所以我就不贴出来了~!
游客

返回顶部