第1章 USB概述 1
1.1 USB历史概述 1
1.2 机械规范 2
1.2.1 电缆和连接器 2
1.2.2 电气规范 4
1.2.3 高速模式 5
1.3 USB设备供电 6
1.3.1 总线供电设备 6
1.3.2 自供电设备 7
1.4 总线状态 8
1.5 USB拓扑结构 11
1.5.1 USB主机 12
1.5.2 USB设备 13
1.5.3 USB设备结构 13
1.5.4 设备状态 14
1.5.5 主控制器 15
1.6 USB包 16
1.7 USB包类型 16
1.7.1 令牌包 17
1.7.2 数据包——低速和全速模式 18
1.7.3 数据包——高速模式 19
1.7.4 握手包 19
1.7.5 拆分事务特殊令牌包 20
1.8 数据流模型 21
1.8.1 端点 21
1.8.2 管道 22
1.8.3 传输 22
1.9 事务、传输和帧 24
1.10 帧和微帧 25
1.11 USB实际吞吐量 26
1.12 枚举 27
1.13 USB协议栈 29
1.13.1 设备协议栈 29
1.13.2 主机协议栈 29
1.13.3 USB OTG协议栈 31
1.14 一致性测试 32
1.14.1 USB设备测试 32
1.14.2 USB黄金树 32
1.14.3 USB主机测试 34
第2章 开始工作 35
2.1 准备 35
2.2 下载源代码 35
2.3 安装文件 36
2.4 构建应用示例 37
2.4.1 理解Micriμm示例 38
2.4.2 复制和修改临时文件 39
2.4.3 包含进USB Device协议栈源代码 43
2.4.4 修改应用配置文件 44
2.5 运行应用范例 45
第3章 主机操作系统 50
3.1 微软Windows 50
3.2 关于INF文件 51
3.3 使用GUID 54
第4章 架构 56
4.1 模块关系 57
4.1.1 应用程序 57
4.1.2 库 57
4.1.3 USB类层 57
4.1.4 USB内核层 58
4.1.5 端点管理层 58
4.1.6 实时操作系统抽象层 58
4.1.7 硬件抽象层 59
4.1.8 CPU层 59
4.2 任务模型 59
4.2.1 发送和接收数据 60
4.2.2 处理USB请求和总线事件 61
4.2.3 处理调试事件 62
第5章 配置 64
5.1 静态堆栈配置 64
5.1.1 基本配置 64
5.1.2 USB设备配置 65
5.1.3 接口配置 65
5.1.4 字符串配置 66
5.1.5 调试配置 66
5.1.6 通信设备类(CDC)配置 67
5.1.7 CDC抽象控制模型(ACM)串口类配置 67
5.1.8 人机接口设备(HID)类配置 67
5.1.9 大容量存储设备类(MSC)配置 68
5.1.10 个人健康设备类(PHDC)配置 69
5.1.11 供应商类配置 70
5.2 应用相关配置 70
5.2.1 任务优先级 70
5.2.2 任务堆栈大小 71
5.3 设备和设备控制器驱动配置 71
5.4 配置范例 71
5.4.1 简单的全速USB设备 72
5.4.2 组合高速USB设备 72
5.4.3 复杂的组合高速设备 73
第6章 设备驱动程序指南 76
6.1 设备驱动程序结构 76
6.2 设备驱动程序模型 76
6.3 设备驱动程序API 77
6.4 中断处理 79
6.4.1 带ISR处理参数的单个USB ISR向量 79
6.4.2 单个USB ISR向量 79
6.4.3 带ISR处理参数的多个USB ISR向量 80
6.4.4 多个USB ISR向量 80
6.4.5 USBD_DrvISR_HANDLER() 80
6.5 设备配置 81
6.6 内存分配 84
6.7 支持的CPU和板子 84
6.8 USB设备驱动程序函数模型 85
6.8.1 设备同步接收 85
6.8.2 设备异步接收 86
6.8.3 设备同步发送 87
6.8.4 设备异步发送 88
6.8.5 设置设备地址 90
第7章 USB类 91
7.1 类实例的概念 91
7.2 类实例的结构 98
7.3 类和内核层通过回调函数的交互 99
第8章 通信设备类 102
8.1 概述 103
8.2 架构 104
8.3 配置 105
8.4 ACM子类 106
8.4.1 概述 107
8.4.2 常规配置 108
8.4.3 子类实例配置 108
8.4.4 子类通知与管理 110
8.4.5 子类实例通信 111
8.4.6 使用演示应用程序 112
第9章 人机接口设备类 117
9.1 概述 117
9.2 架构 121
9.3 配置 122
9.3.1 常规配置 122
9.3.2 类实例配置 123
9.3.3 类实例通信 127
9.3.4 同步通信 127
9.3.5 异步通信 128
9.4 使用演示应用程序 131
9.4.1 配置PC和设备应用程序 131
9.4.2 运行演示程序 132
9.5 移植HID类到RTOS层 135
9.6 周期输入报告任务 136
第10章 大容量存储类 139
10.1 概述 139
10.1.1 大容量存储类协议 139
10.1.2 端点 140
10.1.3 大容量类请求 140
10.1.4 小型计算机系统接口(SCSI) 141
10.2 体系结构 141
10.2.1 MSC体系结构 141
10.2.2 SCSI命令 141
10.2.3 存储层和存储介质 143
10.2.4 多个逻辑单元 144
10.3 RTOS层 145
10.4 配置 146
10.4.1 一般配置 146
10.4.2 类实例配置 147
10.5 使用演示应用 150
10.5.1 USB设备应用 150
10.5.2 USB主机应用 151
10.6 MSC的存储层移植 153
10.7 MSC的RTOS移植 154
第11章 个人健康设备类 155
11.1 概述 155
11.1.1 数据特性 155
11.1.2 操作模型 156
11.2 配置 158
11.2.1 一般配置 158
11.2.2 类实例配置 159
11.3 类实例通信 161
11.3.1 使用元数据前文进行通信 162
11.3.2 无元数据前文的通信 164
11.4 RTOS基于QoS的任务调度程序 164
11.5 使用演示应用 167
11.5.1 演示应用的配置 167
11.5.2 运行演示应用 168
11.6 PHDC的RTOS移植 170
第12章 供应商类 171
12.1 概述 171
12.2 配置 172
12.2.1 通用配置 172
12.2.2 类实例配置 173
12.2.3 类实例通信 175
12.2.4 同步通信 175
12.2.5 异步通信 177
12.3 USBDev_API 179
12.3.1 设备和管道管理 179
12.3.2 设备通信 182
12.4 运行演示程序 184
12.4.1 配置PC和设备应用程序 184
12.4.2 编辑INF文件 186
12.4.3 运行演示程序 187
12.4.4 GUID 190
第13章 调试和跟踪 192
13.1 使用调试跟踪 192
13.1.1 调试配置 192
13.1.2 调试跟踪输出 192
13.1.3 调试格式 193
13.2 处理调试事件 193
13.2.1 调试事件池 193
13.2.2 调试任务 194
13.2.3 调试宏 194
第14章 μC/USB设备的实时操作系统移植 196
14.1 概述 196
14.2 将模块移植到RTOS 197
14.3 核心层RTOS模型 198
14.3.1 同步传输完成信号 198
14.3.2 核心事件管理 198
14.3.3 调试事件管理 199
14.4 移植核心层到RTOS 199
附录A 核心API参考 201
A.1 设备函数 201
A.2 配置函数USBD_CfgAdd() 208
A.3 接口函数 209
A.4 端点函数 212
A.5 操作系统内核函数 232
A.6 设备驱动回调函数 240
A.7 跟踪函数USBD_Trace() 244
附录B 设备控制器驱动API参考手册 245
B.1 设备驱动函数 245
B.2 设备驱动BSP函数 258
附录C CDC API参考手册 260
C.1 CDC函数 260
C.2 CDC ACM子类函数 268
附录D HID API参考手册 278
D.1 HID类函数 278
D.2 HID OS函数 285
附录E MSC API参考手册 294
E.1 大容量存储类函数 294
E.2 MSC操作系统函数 299
E.3 MSC存储层函数 303
附录F PHDC API参考手册 309
F.1 个人健康设备类函数 309
F.2 PHDC操作系统函数 321
附录G 供应商类API参考手册 326
G.1 供应商类函数 326
G.2 USBDEV_API函数 337
附录H 错误代码 353
H.1 通用错误代码 353
H.2 设备错误代码 354
H.3 配置错误代码 354
H.4 接口错误代码 354
H.5 端点错误代码 354
H.6 OS层错误代码 355
H.7 URB错误代码 355
H.8 设备控制器驱动程序错误代码 355
H.9 MSC错误代码 355
附录I 存储器占用 356
I.1 通信设备类 356
I.2 人机接口设备类 357
I.3 大容量存储器类 358
I.4 个人健康设备类 359
I.5 厂商类 360
附录J μC/OS-Ⅲ和μC/USB-Device软件许可政策 361
J.1 μC/USB-DEVICE维护协议的续签 361
J.2 μC/USB-DEVICE源代码升级 361
J.3 μC/USB-DEVICE技术支持 362
参考文献 363