第1章 USB基础知识 1
1.1 快速的发展过程 1
目录 1
1.2 USB的优势 3
1.2.1 真正的即插即用 3
1.2.2 速度的提升 4
1.2.3 其他方面 4
1.3 重要的概念 5
1.3.1 “智能化”的接口简析 5
1.3.2 “主机”的概念 6
1.3.3 USB的端口 8
1.3.4 “Function”的意义 8
1.4 USB的局限性 9
1.4.1 功能的局限性 9
1.3.5 “Hub”的意义 9
1.3.6 “Device”的意义 9
1.4.2 开发的难度 10
1.5 本章小结 11
第2章 如何着手USB的开发工作 12
2.1 USB结构简介 12
2.1.1 USB的总线结构(物理结构) 12
2.1.2 USB的逻辑结构 13
2.2.1 主机 14
2.2 必要的准备工作 14
2.2.2 开发过程中应考虑的问题 16
2.2.3 必要设备的准备 18
2.2.4 开发工作流程 18
2.2.5 最后的考虑 19
2.3 关于开发者论坛 20
2.4 本章小结 20
3.1.1 通常概念意义下的集线器 21
第3章 集线器 21
3.1 USB集线器 21
3.1.2 USB中的集线器(Hub)概念 22
3.2 Hub的体系结构 22
3.2.1 连接的重续 23
3.2.2 Hub的错误恢复机制 24
3.3 Hub的数据帧与微帧的计时器 24
3.3.1 高速模式下微帧的计时范围 24
3.3.2 全速模式下帧的计时范围 25
3.3.3 帧/微帧的计时同步机制 25
3.4 主机在帧结束时的行为 29
3.4.1 全/低速模式下最晚发出的主机数据包 29
3.4.2 全7氐速模式下的无效包 29
3.4.3 全/低速下对事务处理完成时间的预测 29
3.5 内部端口 30
3.6 下游端口 31
3.6.1 下游端口状态的描述 33
3.6.2 连接断开的侦测 35
3.6.3 端口指示灯 36
3.7 上游端口 36
3.7.1 全速 37
3.7.2 高速 37
3.7.3 接收器 37
3.7.4 发送器 37
3.8 集线器中继器 37
3.9 集线器控制器 38
3.9.1 端点的组织结构 38
3.9.2 Hub的消息体系结构和操作 38
3.9.3 端口改变信息的处理 39
3.9.4 集线器和端口的状态改变位图 39
3.9.5 过流报告和恢复 40
3.10 集线器的设置 41
3.9.6 对于设备检测的控制 41
3.11 事务处理转译器(TransactionTranslator) 42
3.11.1 综述 42
3.11.2 数据处理时序 44
3.12 本章小结 45
第4章 设备检测 46
4.1 概述 46
4.2 FX2的设备列举过程 47
4.2.1 FX2列举的特点 47
4.2.2 FX2的启动模式 48
4.2.3 FX2的“默认的USB设备” 48
4.2.4 EEPROM启动导入数据的格式 49
4.2.5 关于RENUM位 51
4.2.6 FX2对设备请求的回应(RENUM=0) 51
4.2.7 FX2中用于固件下载的制造商请求 52
4.2.8 重新列举(ReNumerates) 53
4.2.9 初始化下载的过程 54
4.3 USB2.0中对于列举的规定 54
4.3.1 列举过程设备经历的状态 54
4.3.2 总线列举要经历的步骤 56
4.3.3 总线列举过程中要用到的描述符 56
4.4 本章小结 64
第5章 控制传输 66
5.1 基本理论 66
5.1.1 设置阶段 67
5.1.2 数据阶段 72
5.1.3 状态阶段 73
5.1.4 错误处理 74
5.1.5 11种标准请求 75
5.1.6 类特定请求 83
5.2.2 控制端点EP0 84
5.2.1 简介 84
5.2 实际应用 84
5.1.7 供应商特定请求 84
5.2.3 USB请求 87
5.3 本章小结 102
第6章 数据传输方式 103
6.1 控制传输 104
6.1.1 数据格式 104
6.1.2 包大小的限制 106
6.1.3 总线访问限制 107
6.1.4 控制传输的数据顺序和错误的检测处理 109
6.2 批量传输 109
6.2.1 数据格式 110
6.2.2 数据包大小的限制 111
6.2.3 总线访问限制 111
6.2.4 数据顺序和错误检测 112
6.3 中断传输 112
6.3.3 总线访问限制 113
6.3.1 数据格式 113
6.3.2 包大小限制 113
6.3.4 数据顺序和错误检测 115
6.4 等时传输 115
6.4.1 数据格式 116
6.4.2 数据包大小限制 117
6.4.3 总线访问限制 117
6.4.4 错误检测 118
6.5 本章小结 118
第7章 机械特性 119
7.1 综述 119
7.2 内建的连接器的协议 119
7.3 线缆 120
7.4 线缆组件 120
7.4.1 标准的可分离的线缆组合 120
7.4.2 高/全速的束缚型的线缆组合 122
7.4.4 被禁止的线缆组合 123
7.4.3 低速的束缚型线缆组合 123
7.5 USB连接器的终端数据 124
7.6 线缆的机械构造和材料需求 124
7.7 关于USB的电气特性 125
7.8 信号 125
7.8.1 高速信号的概述 125
7.8.2 USB驱动器特性 127
7.8.3 高速接收器的特性 128
7.9 设备速度的检测 128
7.9.1 全/低速设备速度的检测 128
7.9.2 高速设备的检测 129
7.10 输入特性 129
7.10.1 全/低速的输入特性 129
7.10.2 高速的输入特性 130
7.11.1 全/低速的信号的层次 131
7.11 信号的层次 131
7.11.2 高/全速的信号的层次 132
7.12 连接和断开连接的信号 133
7.12.1 连接建立和断开的检测 133
7.12.2 建立连接的事件时序 134
7.12.3 数据信号 135
7.12.4 重启信号 135
7.12.5 挂起 137
7.12.6 重读 137
7.13 数据信号的速率 137
7.14 电力的分配 138
7.14.1 设备的分类 138
7.14.2 在挂起/重续中电力的控制 138
7.14.3 动态地连入和拔除 138
7.15 本章小结 139
8.2 SYNC域 140
8.1 字节/位顺序 140
第8章 信号编码与传输 140
8.3 数据包域的格式 141
8.3.1 数据包鉴定域 141
8.3.2 地址域 142
8.3.3 帧数量域 143
8.3.4 数据域 143
8.3.5 循环冗余校验 143
8.4 数据包格式 143
8.4.1 标志包 143
8.4.2 分割处理特殊标志包 144
8.4.3 帧开始(Start-Of-Frame)包 147
8.4.4 数据包 148
8.4.5 握手包 148
8.4.6 握手的响应 149
8.5 数据包的处理时序 150
8.5.2 控制传输处理时序 152
8.5.1 批量传输的处理时序 152
8.5.3 中断传输的处理时序 155
8.5.4 同步传输的处理时序 156
8.6 数据触发的同步和重试 156
8.6.1 通过SETUP标志进行的初始化 156
8.6.2 成功的数据处理 157
8.6.3 数据的失效或不能被接收 157
8.6.4 失效的握手信号 158
8.6.5 低速的事务处理 158
8.7 错误检测和恢复 159
8.7.1 数据包错误分类 160
8.7.2 总线循环时间 160
8.7.3 EOP的失效 161
8.7.4 总线错误的恢复 161
8.8 本章小结 162
9.1 USB控制器芯片的构成 163
9.1.1 USB端口 163
第9章 USB控制器芯片 163
9.1.2 CPU 165
9.1.3 数据缓冲器 165
9.1.4 程序存储器 165
9.1.5 数据存储器 166
9.1.6 寄存器 166
9.1.7 其他接口 167
9.2 芯片构架 167
9.2.1 专门为USB设计的UUSB控制芯片 167
9.2.2 内嵌通用微控制器的芯片 169
9.2.3 需要外接微控制器的芯片 170
9.3 芯片举例 171
9.3.1 Cypress公司的M8CY7C63101A芯片 171
9.3.2 Cypress公司的EZ-USB芯片 172
9.3.3 NationalSemiconductorUSBN9603 176
9.3.4 NetchipNET2888 180
9.3.5 PhilipsSemiconductorPDIUSBD12 182
9.4 本章小结 185
第10章 USB设备开发概述 186
10.1 准备工作 186
10.2 开发步骤 187
10.2.1 初步计划 187
10.2.2 硬件计划 187
10.2.3 软件计划 188
10.3 控制器芯片的选择 188
10.4 硬件设计 190
10.5 本章小结 192
第11章 固件设计(CY7C68013) 193
11.1 固件的工作 193
11.2 汇编与C51的比较 194
11.3 C51程序设计基础 195
11.3.1 标志符和关键字 195
11.3.2 数据类型 196
11.3.3 中断服务函数和寄存器组定义 197
11.3.4 C51中的寻址方式 198
11.4 固件程序设计 199
11.4.1 固件程序规划 199
11.4.2 主程序 201
11.4.3 描述符定义 203
11.4.4 响应设备请求 208
11.4.5 中断处理 211
11.4.6 数据传输举例:批量OUT传输 214
11.4.7 数据传输举例:批量IN传输 215
11.5 本章小结 216
第12章 驱动程序设计 217
12.1 设备驱动程序基础 217
12.2 驱动程序的分类 219
12.2.1 VxD 219
12.3.1 WDM驱动程序的层次结构 220
12.3 WDM驱动程序基本结构 220
12.2.3 WDM 220
12.2.2 KMD 220
12.3.2 设备对象 222
12.3.3 USB驱动程序结构 223
12.4 USB设备驱动程序开发流程 224
12.4.1 准备工作(工具选择) 224
12.4.2 两个重要的概念IRP和URB 226
12.4.3 编写驱动程序 229
12.4.4 编译驱动程序 236
12.4.5 安装驱动程序 239
12.5 INF文件 241
12.5.1 INF文件格式要求 241
12.5.2 INF文件举例 242
12.5.3 INF文件详解 244
12.5.4 用geninf实用程序生成一个INF文件 249
12.6 本章小结 250