阅读:1654回复:5
老板要我写一个HID类设备的驱动,中断例程如何写?
老板要我写一个HID类设备的驱动,这个设备可以使用系统HID类驱动工作.老板要我练习写驱动所以要我给这个设备写一个驱动.但是中断例程不知道如何写?有类似的例子吗?
|
|
最新喜欢:viscar |
沙发#
发布于:2005-03-07 16:49
补充:这个HID类设备是USB的.
|
|
板凳#
发布于:2005-03-07 22:13
都是系统自带了,不用做任何事情就可以通讯了
|
|
|
地板#
发布于:2005-03-07 23:48
手头的设备是这样的,用VC调用API和HID类设备通信,VC发送命令给设备可以控制设备行为。现在这个实现了。
老扳为了要我熟悉驱动程序开发,叫我写HID类设备驱动程序,然后给VC调用。也就说写一个驱动替代系统的HID类设备驱动程序。 驱动程序中的中断例程 Read / Write 和 和BulkUsb类似吗? [编辑 - 3/7/05 by czcty] |
|
地下室#
发布于: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 |
|
|
5楼#
发布于:2005-03-08 09:16
上面帖子里的logo.asm是从usb.org下载下来的一个例子中的一部分,它有两个include usb.inc 和63743.inc 这两个只是设备定义头文件,因为一般的例子里面都会有这样的定义,也可以在usb协议和芯片的数据手册上找到!所以我就不贴出来了~!
|
|