USB 系统研究
USB System Study
(同等学力申请清华大学工学硕士学位论文 )
院系所工 程 物 理 系
专 业核 技 术 及 应 用
申 请 人王 云 飞
指 导 教 师邵 贝 贝 教 授
2001 年 5 月
独 创 性 声 明
本人声明所呈交的论文是我个人在导 师指导下进行的研究工作及取得的研究成果 尽我所知 除了文中特别加以标注和致谢的地方外 论文中不包含其他人已经发表或撰写过的研究成果 也不包含为获得清华大学或其它教育机构的学位或证书而使用过的材料 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意
签 名 日 期
关于论文使用授权的说明
本人完全了解清华大学有关保留 使用学位论文的规定 即 学校有权保留送交论文的复印件 允许论文被查阅和借阅 学校可以公布论文的全部或部分内容 可以采用影印 缩印或其他复制手段保存论文
(保密论文在解密后应遵守此规定 )
签 名 导师签名 日 期
中文摘要,.....................................................................................................1
ABSTRACT.................................................................................................2
第一章 引言,..............................................................................................3
1.1 USB 技术,......................................................................................3
1.2 项目来源及概述,............................................................................3
第二章 USB 协议,...................................................................................5
2.1 USB 技术背景,...............................................................................5
2.2 USB 总线优势,...............................................................................6
2.2.1 USB 的速度,................................................................................6
2.2.2 USB 的总线拓扑体系,.................................................................7
2.2.3 USB 的即插即用,........................................................................9
2.2.4 USB 的低功耗,.........................................................................,11
2.2.5 USB 的标准接口和外设,...........................................................12
2.2.6 结论,......................................................................................14
2.3 USB 软件通讯协议,.....................................................................14
2.3.1 USB 数据流,..............................................................................14
2.3.2 USB 数据单元,..........................................................................16
2.3.2.1 域,......................................................................................16
2.3.2.2 包,......................................................................................17
2.3.3 USB 总线传输,..........................................................................19
2.3.3.1 控制传输 (Control Transfer)................................................20
2.3.3.2 同步传输 (Isochronous Transfer),........................................22
2.3.3.3 批传输 (Bulk Transfer)........................................................23
2.3.3.4 中断传输 (Interrupt Transfer),.............................................24
2.3.3.5 结论,..................................................................................25
2.3.4 数据触发同步与重试,...........................................................26
2.3.5 低速操作,..............................................................................28
2.3.6 错误检验与恢复,...................................................................29
2.4 结论,............................................................................................30
第三章 USB 项目开发技术,..................................................................31
3.1 USB 设备端硬件开发,..................................................................31
3.2 USB 设备端软件开发,..................................................................32
3.2.1 USB 设备通用模块的软件开发,................................................32
3.2.2 USB 设备协议模块的软件开发,................................................33
3.2.3 设备的挂起与唤醒,...............................................................36
3.2.4 USB 设备端软件整体流程,.......................................................36
3.3 USB 主机端软件开发,..................................................................37
3.3.1 Windows 98 下的驱动程序结构,...............................................38
3.3.2 Windows 98 下的 USB 设备驱动程序体系,...............................40
3.3.3 Windows 98 DDK 使用,.............................................................42
3.3.3.1 Windows 98 DDK 系统需求,..............................................42
3.3.3.2 Windows 98 DDK 的安装,..................................................43
3.3.3.3 建立和使用 Windows 98 驱动程序构造环境,...................44
3.3.4 Windows 98 下的 USB 设备应用程序开发,...............................44
3.4 结论,............................................................................................44
第四章 USB 项目简介,.........................................................................46
4.1 USB 手写识别输入系统,..............................................................47
4.1.1 背景,......................................................................................47
4.1.2 原理,......................................................................................47
4.1.2.1 设备端硬件设计,...............................................................48
4.1.2.2 设备端软件设计,...............................................................50
4.1.2.3 主机端软件设计,...............................................................51
4.1.3 结论,......................................................................................54
4.2 USB 通用设备开发平台,..............................................................55
4.2.1 背景,......................................................................................55
4.2.2 全速 USB 设备设计原理,.......................................................56
4.2.2.1 设备端硬件设计,...............................................................57
4.2.2.2 设备端软件设计,...............................................................59
4.2.2.3 主机端软件设计,...............................................................60
4.2.3 USB HUB 集线器 设计原理,................................................61
4.2.4 结论,......................................................................................65
4.3 USB 安全钥,.................................................................................65
4.3.1 背景,......................................................................................65
4.3.2 原理,......................................................................................67
4.3.2.1 设备端硬件设计,...............................................................67
4.3.2.2 设备端软件设计,...............................................................68
4.3.2.3 主机端软件设计,...............................................................70
4.3.3 结论,......................................................................................72
4.4 USB 在线编程设备,.....................................................................72
4.4.1 背景,......................................................................................73
4.4.2 原理,......................................................................................73
4.4.2.1 设备端软件设计,...............................................................76
4.4.2.2 主机端软件设计,...............................................................77
4.4.3 结论,......................................................................................78
4.5 结论,............................................................................................78
第五章 其他工作,.....................................................................................80
5.1 MOTOROLA 微控制器的使用,........................................................80
5.1.1 在线编程技术和 MC68HC908GP32IDK,...............................80
5.1.1.1 MC68HC908 系列微控制器的在线编程技术,....................81
5.1.1.2 MC68HC908GP32IDK 在线编程开发系统,........................86
5.1.1.3 结论,..................................................................................88
参考文献,...................................................................................................89
致谢,..........................................................................................................90
个人简历,...................................................................................................91
中文摘要
1
中文摘要
通用串行总线 USB 是 PC 体系中的一套全新的工业标准 它支持单个主机与多个外设同时进行数据交换
论文首先会介绍 USB 的体系结构和特点 包括总线特征 协议定义传输方式和电源管理等等 这部分内容会使 USB 开发者和用户对 USB 有一个整体的认识
接下来论文会讨论 USB 系统的一般开发方法和技术特点 分设备端硬件 设备端软件和主机端软件三个部分
然后论文会介绍几个 USB 项目的研发过程和技术细节 包括 USB 手写识别输入系统 USB 通用设备开发平台 USB 安全钥和 USB 在线编程设备等等 论文会详细介绍 USB 设备的硬件和软件开发的技术细节 包括 USB 设备协议栈的编写方法 同时也会讨论在 Windows 98 下开发 USB 内核驱动程序和用户应用程序的一般方法
论文最后还会介绍 Motorola 的一些相关开发技术 主要是在线编程技术
论文对广大的 USB 设备开发人员和技术人员具备较高的参考价值 可以帮助他们尽快掌握 USB 设备的特点 以及硬件电路设计和软件编程中的注意事项
关键字 通用串行总线 微控制器 协议栈 设备驱动程序 在线编程
Abstract
2
Abstract
The Universal Serial Bus USB is specified to be an industry standard
extension to the PC architecture,USB is a serial cable bus that supports data
exchange between a host computer and a wide range of simultaneously
accessible peripherals,
First,the thesis describes the architecture and features of USB,including
the bus attributes,the protocol definition,types of transactions,power
management,and so on,It tries to give developers and users a snapshot of
USB,
After that,the thesis will talk about how to develop the USB system,
including,device hardware,device software and host software,
Then the thesis describes some development and technique details of
several USB projects,USB tablet,USB univeral development tool,USB
security key and USB ISP (In System Program) device,I will give you the
details of the hardware and software design of device,including how to write
USB device protocol stack,and talk about the kernel drivers and user program
in Windows 98,
Finally I will talk more about some technique of Motorola microcontroller,
like ISP and so on,
The thesis is very useful to USB device implementers and developers,
These can help them rapidly grasp the main feathers and important place in
hardware design,programming of the USB device,
Key words,USB microcontroller protocol stack device driver ISP
第一章 引言
3
第一章 引言
1.1 USB技术
当今的计算机外部设备 都在追求高速度和高通用性 为了满足用户的需求以 Intel为首的七家公司 Intel Compaq Microsoft IBM DEC Northern Telecom
以及日本 NEC 于 1994 年 11 月推出了 USB Universal Serial Bus 通用串行总线 协议的第一个草案 专用于低 中速的计算机外设 USB 可把多达 127 个外设同时连到用户的系统上 所有的外设通过协议来共享 USB 的带宽 其 12Mbps
的带宽对于键盘 鼠标等低中速外设是完全足够的 注 在 2000 年发布的 USB
规范版本 2.0 中 已经将 USB 支持的带宽提升到 480Mbps USB 允许外设在主机和其它外设工作时进行连接 配置 使用及移除 即所谓的即插即用 Plug &
Play 同时 USB 总线的应用可以清除 PC 上过多的 I/O 端口 而以一个串行通道取代 使 PC 与外设之间的连接更容易 自从 1996 年 2 月 USB 规范版本 1.0 发布短短几年间 USB 不光成为了微机主板上的标准端口 而且还成为了所有微机外设 包括键盘 鼠标 显示器 打印机 数字相机 扫描仪和游戏柄等等 与主机相连的标准协议之一 这种连接较以往普通并口 parallel port 和串口
serial port 的连接而言 主要的优点是速度高 功耗低 支持即插即用 Plug
& Play 和使用维护方便
由于 USB2.0 还不成熟 而且本文涉及的项目又全都基于 USB1.1 所以本文以后对 USB 的描述将全部基于 USB 的 1.1 规范版本 凡属于 USB2.0 的内容 都会另外注明
1.2 项目来源及概述
早在 1998 年 Motorola 公司就要求我们中心 清华大学 Motorola 单片机应用开发研究中心 用 Motorola 公司的 8 位单片机 当时是 68HC05JB4 开发支持 USB 协议的计算机外设 在调研了当时市场上的 USB 设备情况以后 我们选择了与中科院自动化所汉王公司合作开发国内第一套 USB 手写识别输入系统 由于种种原因 汉王公司最终并没有加入到这个项目的开发工作中来 而我独自承担第一章 引言
4
了所有的开发工作
这个项目开发成功后 我们中心的 USB 技术实力得到了各方面 包括
Motorola 汉王公司和业内其他开发团队 的认同 这以后我继续用 Motorola
的 8 位单片机 68HC08 系列 为 Motorola 开发了 2 个使用 USB 技术的项目 USB
安全钥和 USB 在线编程设备 同时我也根据技术的发展和个人的爱好研究了使用其他公司的 USB 芯片 如美国国家半导体的 USBN9602 开发 USB 设备的技术和方法 与人合作设计了 USB 通用设备开发平台
开发一个 USB设备需要做很多硬件和软件的工作 包括设计 USB设备的硬件编写设备协议栈和 Windows 下的驱动程序等等 通过这些工作 我对 USB 协议的整个体系有了一个非常清晰的概念和认识
本文下面的内容 就将以介绍 USB 协议和项目为主
第二章 USB 协议
5
第二章 USB协议
2.1 USB技术背景
传统的计算机外部设备一般都是使用并口 Parallel Port 和串口 Serial
Port 与计算机相连 这两种端口在计算机上使用了很多年 物理层的协议已经相当成熟 但却已经无法满足目前计算机设备不断提高的速度和使用要求
串口使用的协议是 RS 232 串行通讯标准 适用于设备之间的通讯距离不大于 15 米 传输速率最大为 20KB/s 的场合 它的优点主要是开发方便 几乎所有的硬件开发人员都能很容易地使用串口实现设备与计算机间的通讯 并口使用的是并行通讯协议 在开发和使用上都不是很方便 但它的速度较串口有很大的提高 要达到每秒 1M 字节以上的传输速度并不困难
这些传统的端口和总线协议都比较简单 一般只对物理层做了一些定义和约束 并没有涉及到设备和计算机的具体通讯行为和网络模型 这使得开发者在开发时有了很大的灵活性 但也带来了兼容性的问题 举例来说 由于串口有很多用于设备和计算机握手的线 如 RTS CTS 等等 如果设备不需要使用这些握手线 就可以设法利用这些握手线从计算机的电源得到 12V 的直流电 以供设备内部使用 如果某台计算机的主板和电源能提供足够的电流给设备 那么这个串口设备是可以正常工作的 但如果某台计算机的主板和电源不能支持 那么有可能不光是这个串口设备不能使用 连主板和电源也无法正常工作
以上所提到的种种原因 促使硬件开发商不得不推出一些新型的总线协议以适应当前计算机和设备的需要 从 20 世纪 90 年代以来 有很多串行总线问世其中最成功的 便是以 Intel 为首的七家公司于 1994 年推出的 USB Universal
Serial Bus 通用串行总线 协议 以及美国电气和电子工程师协会 IEEE 推出的 IEEE1394 总线协议
IEEE1394 主要的特点是高速 但它的成本很高 所以目前 IEEE1394 只用于一些专用系统和打印机 扫描仪等数据传输速度要求较高的设备 而不能普遍用于诸如鼠标 键盘等价格较低 速度要求也不高的设备 所以确切地说 IEEE1394
只适于高速的计算机外部设备
第二章 USB 协议
6
USB 具有速度高 成本低 功耗低 支持即插即用 Plug & Play 和使用维护方便等优点 在协议成熟以后 迅速地占领了计算机低 中速外部设备的市场大有取代传统串口和并口之势
2.2 USB总线优势
总的来说 USB 总线的主要优势体现在以下几个方面