标题：USB开发大全
出版信息
  封面ISBN：9787115259554
定价：55.00元
作者：[美]Jan Axelson 著
译者：李鸿鹏 郑瑞霞 陈香凝 张铮
出版社：人民邮电出版社
出版时间：2011年01月 
开本：16开
装帧：平装
字数：483千字 
页数：314页
供货商：人民邮电出版社
开卷分类：计算机
内容简介
《USB开发大全(第4版)》介绍了有关通用串行总线(Universal Serial Bus，USB)的工作方式、设备硬件及软件编程等方面的知识和工程实例，内容大致可分为4个方面。第一，阐述USB协议，包括基本常识、设备枚举、传输过程、设备类、主机通信方式以及总线状态等。读者通过学习，可迅速掌握USB接口的工作原理和组织结构。第二，详细地介绍了USB硬件，从控制器芯片的选择、电源供给、集线器原理，到线缆的电气和机械特性，几乎涵盖USB硬件的全部技术细节。第三，讨论了USB的程序编写，涉及设备固件和驱动，重点阐述了HID设备类驱动程序的开发，并给出了在厂商专属设备上应用WinUSB的方法。第四，作者也关注了几种开发工具的使用。本书在组织上真正做到了协议、硬件、软件、工具的完美结合，对4方面的论述渗透全书。 　　
《USB开发大全(第4版)》融会作者在该领域丰富的工作经验和设计实例，在规范与工程实际间搭起了桥梁。它是USB软硬件的开发指南，一本无可替代的工具书。新版本与时俱进地增加了USB 3.0协议及其超高速总线的内容。
目录
第1章　USB基础　1 
1.1　USB的用途和局限　1 
1.1.1　给用户带来的好处　1 
1.1.2　给开发者带来的好处　3 
1.1.3　USB不能做什么　5 
1.1.4　USB与Ethernet　7 
1.1.5　USB与IEEE-1394　7 
1.2　USB接口的发展演变　7 
1.2.1　USB 1.0　7 
1.2.2　USB 1.1　8 
1.2.3　USB 2.0　8 
1.2.4　USB 3.0　9 
1.2.5　USB On-The-Go　9 
1.2.6　无线USB　9 
1.3　总线组成部分　10 
1.3.1　拓扑结构　10 
1.3.2　关于总线速率的考虑　11 
1.3.3　术语　12 
1.4　分割工作　13 
1.4.1　主机的责任　13 
1.4.2　设备的职责　14 
1.4.3　总线速率和数据吞吐量　15 
1.5　开发设备　16 
1.5.1　组件　16 
1.5.2　开发工具　16 
1.5.3　工程开发的步骤　16 
1.6　USB 3.0常见问题　17 
1.6.1　功能　17 
1.6.2　兼容性　18 
1.6.3　线缆　19 
1.6.4　电源和功耗　20 
第2章　深入USB传输　21 
2.1　传输的基础　21 
2.1.1　传输要素　21 
2.1.2　通信的目的　22 
2.1.3　管理总线上的数据　22 
2.2　传输要素　23 
2.2.1　端点：数据的来源和数据接收端　23 
2.2.2　事务类型　23 
2.2.3　管道：将端点连接到主机　24 
2.2.4　传输类型　24 
2.2.5　流管道和消息管道　25 
2.2.6　发起传输　25 
2.3　USB 2.0事务　26 
2.3.1　事务步骤　27 
2.3.2　信息包的顺序　29 
2.3.3　时间约束和保证　29 
2.3.4　分割事务　29 
2.4　保证传输成功　30 
2.4.1　状态与控制　30 
2.4.2　报告控制传输的状态　32 
2.4.3　错误检查　32 
2.5　超高速事务　34 
2.5.1　信息包类型　34 
2.5.2　数据传输　36 
2.5.3　连接管理信息包　38 
第3章　通用的传输类型　39 
3.1　控制传输　39 
3.1.1　可用性　39 
3.1.2　结构　39 
3.1.3　数据大小　44 
3.1.4　速度　44 
3.1.5　错误的检测与处理　45 
3.1.6　设备的职责　45 
3.2　批量传输　45 
3.2.1　可用性　46 
3.2.2　结构　46 
3.2.3　数据大小　48 
3.2.4　速率　48 
3.2.5　错误的检测和处理　48 
3.2.6　设备的职责　48 
3.3　中断传输　49 
3.3.1　可用性　49 
3.3.2　结构　49 
3.3.3　数据大小　50 
3.3.4　速率　50 
3.3.5　错误的检测和处理　51 
3.3.6　设备的职责　51 
3.4　等时传输　51 
3.4.1　可用性　52 
3.4.2　结构　52 
3.4.3　数据大小　54 
3.4.4　速度　54 
3.4.5　错误的检测和处理　55 
3.4.6　设备的职责　55 
3.5　更多关于时间关键传输的内容　55 
3.5.1　总线带宽　55 
3.5.2　设备性能　56 
3.5.3　主机性能　56 
3.5.4　主机等待时间　56 
第4章　枚举：主机如何了解设备　58 
4.1　枚举过程　58 
4.1.1　枚举步骤　59 
4.1.2　设备移除　62 
4.1.3　枚举成功的秘诀　62 
4.2　描述字　63 
4.2.1　类型描述字　63 
4.2.2　设备描述字　64 
4.2.3　Device_Qualifier描述字　67 
4.2.4　配置描述字　67 
4.2.5　Other_Speed_Configuration描述字　68 
4.2.6　接口联合描述字　68 
4.2.7　接口描述字　69 
4.2.8　端点描述字　71 
4.2.9　超高速端点伙伴描述字　73 
4.2.10　字符串描述字　73 
4.2.11　二进制目标存储及设备性能描述字　74 
4.2.12　其他标准描述字　75 
4.2.13　微软OS描述字　75 
4.2.14　更新描述字到USB 2.0　76 
第5章　控制传输：用于关键数据的结构化请求　77 
5.1　控制传输的组成　77 
5.1.1　设置阶段　77 
5.1.2　数据阶段　78 
5.1.3　状态阶段　79 
5.1.4　错误处理　80 
5.1.5　设备固件　80 
5.2　标准请求　81 
5.2.1　Get Status(获得状态)请求　82 
5.2.2　Clear Feature(清除特征)请求　83 
5.2.3　Set Feature(设置特征)请求　83 
5.2.4　Set Address(设置地址)请求　84 
5.2.5　Get Descriptor(获得描述字)请求　85 
5.2.6　Set Descriptor(设定描述字)请求　85 
5.2.7　Get Configuration(获得配置)请求　85 
5.2.8　Set Configuration(设定配置)请求　86 
5.2.9　Get Interface(获得接口)请求　86 
5.2.10　Set Interface(设置接口)请求　87 
5.2.11　Synch Frame(帧同步)请求　87 
5.2.12　Set SEL(设定选择)请求　87 
5.2.13　Set Isochronous Delay(设定等时延时)请求　88 
5.3　其他请求　88 
5.3.1　类专属请求　88 
5.3.2　厂商定义的请求　88 
第6章　芯片选择　89 
6.1　USB设备的组成部分　89 
6.1.1　USB2.0控制器内部结构　89 
6.1.2　其他的设备组件　90 
6.2　简化设备开发　92 
6.2.1　设备要求　92 
6.2.2　芯片文档　93 
6.2.3　驱动程序的选择　93 
6.2.4　调试工具　93 
6.3　USB微控制器　95 
6.3.1　Microchip的PIC18F4550　96 
6.3.2　Cypress EZ-USB　99 
6.3.3　ARM　101 
6.4　连接到CPU的控制器　101 
6.4.1　ST-NXP Wireless公司的ISP1582型控制器　101 
6.4.2　PLX Technology的NET2272型控制器　102 
6.4.3　FTDI公司的USB UART和USB FIFO　103 
第7章　设备类　105 
7.1　元素与用途　105 
7.1.1　已被公认的规范　105 
7.1.2　类规范的组成　106 
7.2　已定义的类　107 
7.2.1　音频类　107 
7.2.2　通信类　109 
7.2.3　内容安全类　113 
7.2.4　设备固件升级类　114 
7.2.5　人机接口类　116 
7.2.6　IrDA桥设备类　118 
7.2.7　大容量存储设备类　119 
7.2.8　个人健康设备类　122 
7.2.9　打印机设备类　122 
7.2.10　智能卡设备类　124 
7.2.11　静态图像获取设备类　126 
7.2.12　测试与测量设备类　127 
7.2.13　视频设备类　128 
7.3　非标准功能的实现　131 
7.3.1　选择驱动程序　131 
7.3.2　使用通用驱动程序　131 
7.3.3　从RS-232转换到USB　131 
7.3.4　从并行端口转换到USB　132 
7.3.5　PC与PC间的通信　133 
第8章　主机的通信方式　134 
8.1　设备驱动程序　134 
8.1.1　分层的驱动程序模型　134 
8.1.2　用户及内核模式　134 
8.2　分层结构内部　136 
8.2.1　应用程序　136 
8.2.2　用户模式下的用户驱动程序　137 
8.2.3　内核模式下的用户驱动程序　137 
8.2.4　总线和主机控制器驱动程序　138 
8.3　编写驱动程序　140 
8.3.1　内核模式的驱动程序　140 
8.3.2　用户模式的驱动程序　140 
8.3.3　测试工具　141 
8.4　GUID的使用　141 
8.4.1　设备设置GUID　141 
8.4.2　设备接口GUID　142 
第9章　为设备匹配驱动程序　143 
9.1　使用设备管理器　143 
9.1.1　查看设备　143 
9.1.2　属性页　144 
9.2　注册表中的设备信息　145 
9.2.1　Hardware键值　145 
9.2.2　Class键值　146 
9.2.3　Driver键值　147 
9.2.4　Service键值　147 
9.3　深入INF文件　148 
9.3.1　结构及语法　150 
9.3.2　设备专属取值　151 
9.4　使用设备标识字符串　151 
9.4.1　找到匹配　153 
9.4.2　何时提供INF文件　153 
9.5　工具及诊断协助　154 
9.5.1　使用INF文件的技巧　154 
9.5.2　用户可见到什么　155 
第10章　设备检测　156 
10.1　关于Windows API函数调用的简要指导　156 
10.1.1　托管代码与非托管代码　156 
10.1.2　管理数据　159 
10.2　找到您的设备　161 
10.2.1　获取设备接口GUID　163 
10.2.2　请求指向设备信息集的指针　163 
10.2.3　标识设备接口　164 
10.2.4　请求带有设备类路径名的结构体　166 
10.2.5　提取设备路径名　168 
10.2.6　结束通信　168 
10.3　获取句柄　169 
10.3.1　请求通信句柄　169 
10.3.2　关闭句柄　171 
10.4　检测设备连接和移除　171 
10.4.1　关于设备通知　171 
10.4.2　请求设备通知　171 
10.4.3　记录设备变化信息　174 
10.4.4　读取设备变化消息　175 
10.4.5　收回消息中的设备路径名　176 
10.4.6　停止设备通知　178 
第11章　人机接口设备：使用控制和中断传输　180 
11.1　什么是HID　180 
11.1.1　硬件要求　181 
11.1.2　固件要求　182 
11.2　描述字　182 
11.2.1　HID接口　185 
11.2.2　HID类描述字　185 
11.2.3　报告描述字　186 
11.3　HID专属请求　187 
11.3.1　Get Report请求　187 
11.3.2　Get Idle请求　188 
11.3.3　Get Protocol请求　188 
11.3.4　Set Report请求　188 
11.3.5　Set Idle请求　189 
11.3.6　Set Protocol请求　189 
11.4　数据传输　189 
11.4.1　编写固件　189 
11.4.2　工具　190 
第12章　人机接口设备：报告　191 
12.1　HID报告的数据结构　191 
12.1.1　使用HID描述符编辑工具　191 
12.1.2　控制项及数据项目的值　192 
12.1.3　项目格式　192 
12.2　主项目　193 
12.2.1　输入项目，输出项目及特征项目　193 
12.2.2　Collection项目　196 
12.3　全局项目类型　196 
12.3.1　识别报告　196 
12.3.2　描述数据用途　197 
12.3.3　单位转换　198 
12.3.4　转换原始数据　199 
12.3.5　描述数据大小及数据格式　201 
12.3.6　储存和恢复全局项目　201 
12.4　局部项目类型　201 
12.4.1　物理描述符　203 
12.4.2　填充　203 
第13章　人机接口设备：主机应用程序　204 
13.1　HID API函数　204 
13.1.1　请求HID信息　204 
13.1.2　报告发送与接收　205 
13.1.3　报告数据提供及使用　206 
13.1.4　HID通信管理　207 
13.2　设备识别　207 
13.2.1　读取Vendor ID及Product ID　207 
13.2.2　获取设备功能指针　209 
13.2.3　获取设备功能　210 
13.2.4　获取按钮及数值的功能　211 
13.3　报告发送与接收　212 
13.3.1　向设备发送输出报告　212 
13.3.2　由设备读取输入报告　214 
13.3.3　向设备写入特征报告　220 
13.3.4　从设备读取特征报告　221 
13.3.5　关闭通信　222 
第14章　利用WinUSB的厂商定义函数　224 
14.1　功能与局限　224 
14.1.1　设备要求　224 
14.1.2　主机要求　224 
14.1.3　设备固件　224 
14.1.4　分配WinUSB驱动程序　226 
14.2　访问设备　227 
14.2.1　获取WinUSB句柄　228 
14.2.2　请求接口描述符　229 
14.2.3　端点识别　230 
14.2.4　配置管道策略　233 
14.2.5　利用批量传输及中断传输写入数据　237 
14.2.6　利用批量传输及中断传输读取数据　238 
14.2.7　使用厂商定义的控制传输　239 
14.2.8　关闭通信　242 
第15章　集线器　243 
15.1　USB 2.0　243 
15.1.1　集线器转发器　244 
15.1.2　事务转换器　245 
15.1.3　集线器控制器　249 
15.1.4　传输速率　249 
15.1.5　维持已激活链接　250 
15.2　USB 3.0　250 
15.2.1　总线速率　251 
15.2.2　USB 3.0的构成　251 
15.2.3　通信管理　251 
15.3　集线器类　252 
15.3.1　集线器描述符　252 
15.3.2　集线器类请求　252 
15.3.3　端口指示器　252 
第16章　电源管理　253 
16.1　电源选项　253 
16.1.1　电压　253 
16.1.2　使用总线电源　254 
16.1.3　电源需求　255 
16.1.4　通知主机　255 
16.1.5　电池充电　256 
16.2　集线器电源　257 
16.2.1　电源　257 
16.2.2　电流超载保护　258 
16.2.3　功率切换　259 
16.3　节电模式　259 
16.3.1　USB 2.0链路电源管理　259 
16.3.2　挂起状态　259 
16.3.3　休眠状态　260 
16.3.4　超速通信电源管理　261 
16.3.5　Windows操作系统下的电源管理　264 
第17章　测试与调试　266 
17.1　工具　266 
17.1.1　硬件协议分析器　267 
17.1.2　软件协议分析器　268 
17.1.3　流量发生器　269 
17.2　测试　269 
17.2.1　合规性　270 
17.2.2　Windows徽标　273 
第18章　总线上的包　276 
18.1　USB 2.0通信　276 
18.1.1　低速、全速总线状态　276 
18.1.2　高速总线状态　277 
18.1.3　数据编码　279 
18.1.4　保持同步　279 
18.1.5　精确计时　280 
18.1.6　包的格式　281 
18.1.7　包间延迟　282 
18.1.8　测试模型　282 
18.2　超速通信　283 
18.2.1　数据加扰　283 
18.2.2　编码　283 
18.2.3　链路层　283 
18.2.4　复位　284 
第19章　电气与机械接口　285 
19.1　USB 2.0收发器　285 
19.1.1　线缆段　285 
19.1.2　低速和全速收发器　286 
19.1.3　高速收发器　288 
19.1.4　信号电压　291 
19.2　USB 2.0线缆　292 
19.2.1　导线　292 
19.2.2　连接器　293 
19.2.3　可拆卸及不可分离线缆　294 
19.2.4　线缆长度　294 
19.2.5　总线长度　295 
19.2.6　芯片间连接　295 
19.3　USB 3.0　296 
19.3.1　发送器和接收器　296 
19.3.2　线缆　296 
19.4　确保信号质量　299 
19.4.1　噪声来源　299 
19.4.2　对称传输线　300 
19.4.3　双绞线　300 
19.4.4　屏蔽　301 
19.4.5　边沿变化率　301 
19.4.6　被隔离的接口　301 
19.5　无线方式实现USB　301 
19.5.1　无线USB认证　302 
19.5.2　Cypress无线USB　302 
19.5.3　其他选择　303 
第20章　嵌入式系统主机　305 
20.1　USB OTG　305 
20.1.1　能力与局限　305 
20.1.2　OTG连接器　306 
20.1.3　A型设备及B型设备　306 
20.1.4　OTG设备要求　306 
20.1.5　OTG描述符　310 
20.1.6　HNP特征代码　310 
20.2　其他主机选项　311 
20.2.1　嵌入式主机要求　311 
20.2.2　设备端口　312 
20.3　控制器芯片　312 
20.3.1　微控制器　312 
20.3.2　接口芯片　313