第13章  USB设备

目录
13.1 简介
13.2 主控器
13.3 USB设备信息
13.4 设备的探测和连接
13.5 USB驱动程序的协议信息
写作:Nick Hibma. 改编为手册:Murray Stokely. 翻译:spellar @SMTH.

13.1 简介

  通用串行总线(USB)是将设备连接到个人计算机的一种新方法。总线 结构突出了双向通信的特色,并且其开发充分考虑到了设备正逐渐智能化 和需要与host进行更多交互的现实。对USB的支持包含在当前所有芯片中, 因此在新近制造的PC中都可用。苹果(Apple)引入仅带USB的iMac对硬件 制造商生产他们USB版本的设备是一个很大的激励。未来的PC规范指定 PC上的所有老连接器应当由一个或多个USB连接器取代,提供通用的 即插即用能力。对USB硬件的支持在NetBSD的相当早期就有了,它是由 Lennart Augustsson为NetBSD项目开发的。代码已经被移植到FreeBSD上, 我们目前维护着一个底层共享代码。对USB子系统的实现来说,许多USB的 特性很重要。

  Lennart Augustsson已经完成了NetBSD项目中USB支持的 大部分实现。十分感谢这项工作量惊人的工作。也十分感谢Ardy和Dirk 对本文稿的评论和校对。

  为USB子系统以及连接到它的设备开发驱动程序受已开发或将要开发的 规范的支持。这些规范可以从USB主页公开获得。苹果(Apple)通过使得 通用类驱动程序可从其操作系统MacOS中获得,而且不鼓励为每种新设备 使用单独的驱动程序来强烈推行基于标准的驱动程序。本章试图整理基本 信息以便对FreeBSD/NetBSD中USB栈的当前实现有个基本的了解。然而, 建议将下面参考中提及的相关规范与本章同时阅读。

13.1.1 USB栈的结构

  FreeBSD中的USB支持可被分为三层。最底层包含主控器,向硬件 及其调度设施提供一个通用接口。它支持硬件初始化,对传输进行调度, 处理已完成/失败的传输。每个主控器驱动程序实现一个虚拟hub, 以硬件无关方式提供对控制机器背面根端口的寄存器的访问。

  中间层处理设备连接和断开,设备的基本初始化,驱动程序的选择, 通信通道(管道)和资源管理。这个服务层也控制默认管道和其上传输的 设备请求。

  顶层包含支持特定(类)设备的各个驱动程序。这些驱动程序实现 除默认管道外的其他管道上使用的协议。他们也实现额外功能,使得设备 对内核或用户空间是可见的。他们使用服务层暴露出的USB驱动程序接口 (USBDI)。

本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.