USB2.0设备的设计与开发边海龙贾少华编著博嘉科技审校人民邮电出版社
图书在版编目(CIP)数据USB2.0设备的设计与开发/边海龙,贾少华编著.—北京:人民邮电出版社,2004.1ISBN7-115-11731-4Ⅰ.U…Ⅱ.①边…②贾…Ⅲ.电子计算机—接口—程序设计Ⅳ.TP334中国版本图书馆CIP数据核字(2003)第109598号内容提要USB已经成为计算机上的标准配置接口,是实现外部设备与计算机通信常用的一种方式。本书从两个方面入手,重点介绍了USB2.0协议以及USB设备的设计与开发的相关知识。全书共分为12章,第1~8章介绍了USB2.0协议,内容包括USB2.0规范、USB集线器、设备检测、控制传输、USB传输方式、USB设备机械和电气特性、USB中数据格式和信号编码等基础知识;第9~12章通过具体的实例介绍了如何开发一个符合USB2.0规范的设备,内容包括常见USB控制器芯片介绍、USB设备硬件设计、固体设计、驱动程序设计。全书列举了大量范例程序,并作了详尽解释,可以帮助用户开发自己的USB设备。本书语言通俗易懂,内容丰富详实,突出了以实例为中心的特点,适合具有一定的专业基础知识和USB设计开发经验的读者学习和参考,可作为计算机专业高年级本科生和研究生的教材。 USB 2.0 设备的设计与开发 ◆ 编 著 边海龙 贾少华 审 校 博嘉科技 责任编辑 马 嘉 ◆ 人民邮电出版社出版发行 北京市崇文区夕照寺街14号 邮编 100061 电子函件 315@ptpress.com.cn 网址 http://www.ptpress.com.cn 读者热线: 010-67132692 北京汉魂图文设计有限公司制作 北京 印刷厂印刷 新华书店总店北京发行所经销 ◆ 开本:787×1092 1/16 印张:16.5 字数:393千字 2003年9月第1版 印数:1- 000册 2003年9月北京第1次印刷 ISBN 7-115-11731-4/TP·3652 定价:28.00元 本书如有印装质量问题,请与本社联系 电话:(010)67129223
–1–前言随着计算机在各个领域的广泛应用,计算机在软硬件资源方面存在的不足已经成为制约其进一步发展的“瓶颈”。因此,不论是计算机的设计者还是使用者都在努力寻找解决方法。1998年USB接口出现,USB是通用串行总线(UniversalSerialBus)的英文简称,它是目前计算机上广泛使用的外部设备接口。设计者们以最大限度地方便用户使用为设计目标,正是由于其低廉的价格、方便灵活的使用方式,USB一推出便受到了广泛的关注,很多的使用者和开发者都对其进一步的发展表现出了极大的兴趣。与其他的接口不同,USB接口规范是完全开放的。因此,它获得了前所未有的生命力。从诞生之初到现在,短短5年的时间,由开始的不为人们所熟悉,到现在几乎所有的新型计算机硬件都将其作为新一代的接口;传输速率由开始的1.1版本的12Mbit/s到现在2.0版本的480Mbit/s,发展速度令人惊讶。为用户提供方便的前提是开发者必须最大限度地将产品的方方面面考虑周全,那么,怎么样才能够在利用最短时间的前提下,将开发速度提到最高呢?这便是本书所要讲述的问题。本书主要内容本书主要介绍USB2.0规范,并列举大量实例以帮助用户开发一个自己的USB设备。全书共分12章,各章大体内容如下。第1章:讲述USB出现的背景、发展情况以及一些USB规范的基本概念,使读者对USB有一个基本的认识。第2章:介绍USB总线结构,以及开发USB外设所要做的准备工作。第3章:详细介绍USB集线器的体系架构,以及在即插即用中所起的作用。第4章:以Cypress公司的EZ-USBFX2系列芯片为例讲述USB设备的列举过程,使读者了解主机如何识别USB设备并与设备进行通信,详细介绍USB2.0规范定义的9种描述符。第5章:详细讲述USB数据传输的核心——控制传输,其中包括设置阶段、数据阶段和状态阶段3个阶段,以及11种标准设备请求和供应商特定请求。第6章:从USB通信流的角度来讲述USB的4种数据传输方式:控制传输、批量传输、等时传输和中断传输。第7章:按照高速、全速和低速3种不同规范来讲述USB的机械和电气特性。第8章:介绍了USB规范的数据格式与信号编码。第9章:首先讲述通用USB控制芯片的构成组件,然后列举市面上常见的USB控制器芯片,并在功能上对其进行比较,以方便读者选取合适的USB控制芯片。第10章:主要讲述开发一个USB设备的所必须的准备工作,芯片如何选择,以及USB外设的硬件电路设计。第11章:主要以Cypress公司的USB控制芯片CY7C68013为例,讲述如何进行USB设备的固件设计,同时对所使用的开发语言C51进行了简单的介绍。本章列举了大量的固件范例程序,这些程序都是作者在实际开发过程中编写的,因此对读者学习有较大的指导作用。第12章:介绍USB设备驱动程序的开发流程,包括USB设备驱动程序的基础,编写、
–2–编译和调试设备驱动程序的步骤,详细分析了设备驱动程序的安装文件INF文件。读者对象本书语言通俗易懂,内容丰富详实,突出了以实例为中心的特点,适合具有一定的专业基础知识和USB设计开发经验的读者学习和参考,可作为计算机专业高年级本科生和研究生的教材。编写分工本书由边海龙和贾少华担任主要的编写工作,博嘉科技资讯有限公司审校。其中,第1章~第4章、第7章~第8章由边海龙编写,第5章~第6章、第9章~第12章由贾少华编写。参加本书编写工作的还有金洁、谭细金、袁海英、吴杲、刘治国、李祖裕、庞作田、赵严、蔡勇、杨建军、朱怀宇、葛青、赵继军等,在此一并表示感谢。相关网站和论坛笔者在编写本书时参考了以下网站和论坛上的相关资料:USB开发者论坛:http://www.usb.orgUSB控制器芯片供应商:Cypresshttp://www.cypress.comNationalSemiconductorhttp://www.national.comNetChiphttp://www.netchip.comPhilipshttp://www.semiconductors.philips.comMicrochiphttp://www.microchip.comUSB工具软件:Usbready.exehttp://www.acwsoft.de/acw_usb2.htmlKeilsoftwarehttp://www.keil.comInsideOutNetworkshttp://www.ionetworks.comWindows驱动程序参考:MicrosoftWindows2000DriverDevelopmentKit.ByMicrosoftCorporation在此对以上网站和文献作者表示衷心的感谢,祝这些专业网站越办越好,祝文献作者在相关的研究领域取得更好的成绩和长足的进步。技术支持如果读者愿意参加“USB2.0设计与应用”的学习培训,或是在学习过程中发现问题,或有更好的建议,欢迎与我们联系,我们非常愿意与熟悉USB的高手经常保持联系。作者的E-mail邮箱如下:bojiakeji@163.net。由于编者水平有限,时间仓促,书中难免存在疏漏和错误,恳请读者批评指正。作者
–1–目录第1章USB基础知识......................................................................................................................11.1快速的发展过程....................................................................................................................11.2USB的优势............................................................................................................................31.2.1真正的即插即用............................................................................................................31.2.2速度的提升....................................................................................................................41.2.3其他方面.........................................................................................................................41.3重要的概念............................................................................................................................51.3.1“智能化”的接口简析................................................................................................51.3.2“主机”的概念............................................................................................................61.3.3USB的端口....................................................................................................................81.3.4“Function”的意义........................................................................................................81.3.5“Hub”的意义................................................................................................................91.3.6“Device”的意义...........................................................................................................91.4USB的局限性........................................................................................................................91.4.1功能的局限性................................................................................................................91.4.2开发的难度..................................................................................................................101.5本章小结...............................................................................................................................11第2章如何着手USB的开发工作...............................................................................................122.1USB结构简介......................................................................................................................122.1.1USB的总线结构(物理结构).................................................................................122.1.2USB的逻辑结构..........................................................................................................132.2必要的准备工作..................................................................................................................142.2.1主机...............................................................................................................................142.2.2开发过程中应考虑的问题..........................................................................................162.2.3必要设备的准备..........................................................................................................18
–2–2.2.4开发工作流程..............................................................................................................182.2.5最后的考虑..................................................................................................................192.3关于开发者论坛..................................................................................................................202.4本章小结..............................................................................................................................20第3章集线器.................................................................................................................................213.1USB集线器..........................................................................................................................213.1.1通常概念意义下的集线器..........................................................................................213.1.2USB中的集线器(Hub)概念...................................................................................223.2Hub的体系结构..................................................................................................................223.2.1连接的重续..................................................................................................................233.2.2Hub的错误恢复机制..................................................................................................243.3Hub的数据帧与微帧的计时器..........................................................................................243.3.1高速模式下微帧的计时范围......................................................................................243.3.2全速模式下帧的计时范围..........................................................................................253.3.3帧/微帧的计时同步机制.............................................................................................253.4主机在帧结束时的行为......................................................................................................293.4.1全/低速模式下最晚发出的主机数据包.....................................................................293.4.2全/低速模式下的无效包.............................................................................................293.4.3全/低速下对事务处理完成时间的预测.....................................................................29
–3–3.5内部端口..............................................................................................................................303.6下游端口..............................................................................................................................313.6.1下游端口状态的描述..................................................................................................333.6.2连接断开的侦测..........................................................................................................353.6.3端口指示灯..................................................................................................................363.7上游端口..............................................................................................................................363.7.1全速...............................................................................................................................373.7.2高速...............................................................................................................................373.7.3接收器...........................................................................................................................373.7.4发送器...........................................................................................................................373.8集线器中继器......................................................................................................................373.9集线器控制器......................................................................................................................383.9.1端点的组织结构..........................................................................................................383.9.2Hub的消息体系结构和操作......................................................................................383.9.3端口改变信息的处理..................................................................................................393.9.4集线器和端口的状态改变位图..................................................................................393.9.5过流报告和恢复..........................................................................................................403.9.6对于设备检测的控制..................................................................................................413.10集线器的设置....................................................................................................................413.11事务处理转译器(TransactionTranslator)....................................................................42
–4–3.11.1综述.............................................................................................................................423.11.2数据处理时序.............................................................................................................443.12本章小结............................................................................................................................45第4章设备检测.............................................................................................................................464.1概述......................................................................................................................................464.2FX2的设备列举过程.........................................................................................................474.2.1FX2列举的特点.........................................................................................................474.2.2FX2的启动模式.........................................................................................................484.2.3FX2的“默认的USB设备”...................................................................................484.2.4EEPROM启动导入数据的格式.................................................................................494.2.5关于RENUM位..........................................................................................................514.2.6FX2对设备请求的回应(RENUM=0)..................................................................514.2.7FX2中用于固件下载的制造商请求.........................................................................524.2.8重新列举(ReNumerates)........................................................................................534.2.9初始化下载的过程......................................................................................................544.3USB2.0中对于列举的规定...............................................................................................544.3.1列举过程设备经历的状态..........................................................................................544.3.2总线列举要经历的步骤..............................................................................................564.3.3总线列举过程中要用到的描述符..............................................................................56