USB设备驱动开发备忘.pdf

USB 设备驱动开发备忘 [声明] 1. 本文仅是开发过程中过程的简单记述和杂散心得,并非教程或技术资料文章。 2. 本文旨在为 USB 设备开发过程提供基本过程的参考,而非详细的解决方案。 3. 本文以杂乱无章的形式堆砌,但基本以开发过程的先后为序,如有阅读不便之处请见谅。 4. 若对本文中部分内容感兴趣,欲详细交流,请跟贴指出。 希望本贴能能为大家研讨 USB 设备开发技术提供方便。 本文为开发工作过程中的心得体会,认识粗浅表述不周之处 请见谅。 KKND 08 年 11 月 21 日清晨 发表于 VBGood 论坛 Dreamon-II Labs. [连载 1] 费了九牛二虎的力气,终于把驱动调通了,前后整整一个月时间,有种欲哭无泪的感觉。。。 泡饭老版曾发过 VB 开发 USB 相关资料的的主题贴,当初看的时候完全是一头雾水。经过一个月的痛苦煎熬,终于领会 了其中奥妙之处。。。 虽然现在 VB 部分的前台应用程序还没开始动手写,但前期设计硬件和开发驱动程序的部分也是开发人员难以回避的问 题,因此想先挖个坑,把从写驱动开始直到完成 VB 前台的过程中遇到的问题和心得记录下来,供日后有需要的坛友参 详。。。 进入正题吧。。。 硬件的设计这里就不具体说了,简单介绍一下配置 CPU 和接口芯片: CPU:ATMega128 16AU 主频:14.7456MHz USB 接口:PDIUSBD12 主要功能和资源如下: 4 路高速 AD (12bit,200KSPS),提供 24V 电源,可直接连接传感器; 8 路 PWM (带驱动,2A/通道)可驱动电动机等; 16 路开关量输出 (带驱动0.2A/通道),可驱动小型继电器等器件; 3*8 位并行 I/O (其中 16 路可作外部中断,8 路可作 10 位低速 A/D 输入),可用于多机通讯或键盘/显示接口等; 2 路频率/计数输入,可接转速或流量传感器等; 2 路旋转编码器接口; 1 个 USB1.1 接口; 1 个 COM 接口; 2 个 ISP 分别对应主/协处理器,工作时可用作外部 SPI 接口; 驱动电路提供双电压选择 (=12V),提供两路电源接口和一个电源选择控制接口; 两 CPU 以 USART 相连,也可通过外部 SPI 或并行总线相连,板上实现双机通信功能。 可多板级连实现扩展。 要开发一个完整的 USB 设备,需要制定一个完整的开发计划,以本文所述的电路为例,大致有如下步骤: 硬件部分: 功能需求分析-器件选型-电路结构设计-电路原理图设计-PCB 设计-PCB 制板- 软件部分: 按照常规的设计方法,软件部分设计步骤如下: 固件程序设计-驱动程序设计-应用程序设计 但考虑到前台应用程序要使用 VB 语言实现,并且要为用户提供二次开发的接口,因此采用了如下开发步骤: 固件程序设计(WinAVR 4)-驱动程序设计(DriverWorks+DDK+VC6)-SDK 开发接口设计(VC6)-应用程序设计(VB6) 目前的工作进行到固件程序和驱动程序的开发环节。 由于采用了USB 接口,因此这里说的驱动开发就是 USB 设备驱动程序的开发。 查阅了大量的资料,了解了 USB 协议的基本原理,知道了 USB 通信的大致过程,遍查网络,总算找到了 AVR+D12 固件 的例子。几经周折写出了能实现基本通讯功能的固件程序。于是开始写驱动。 安装 DDK,DriverStudio3.2 (过程及注意事项网上 N 多,从略)。 用 DriverWizard 创建了一个 USB 设备驱动程序的框架,修改了 VID 和 PID,定义了接口和端点,参照示例修改了框架 里一些代码,拼凑出一个基本的驱动程序,编译成 SYS 文件。 把自动生成的 inf 文件和

文档评论(0)

1亿VIP精品文档

相关文档