This is an archive of past FreeBSD releases; it's part of the FreeBSD Documentation Archive.
通用串行总线(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 对本文稿的评论和校对。
设备直接连接到计算机上的端口,或者连接到称为 集中器的设备,形成树型设备结构。
设备可在运行时连接或断开。
设备可以挂起自身并触发host系统的重新投入运行。
由于设备可由总线供电,因此host软件必须跟踪每个 集中器的电源预算。
不同设备类型需要不同的服务质量,并且同一总线 可以连接最多126个设备,这就需要恰当地调度总线上的传输以充分 利用12Mbps的可用带宽。(USB 2.0超过400Mbps)
设备智能化并包含很容易访问到的关于自身的信息。
为USB子系统以及连接到它的设备开发驱动程序受已开发或将要开发的 规范的支持。这些规范可以从USB主页公开获得。苹果(Apple)通过使得 通用类驱动程序可从其操作系统MacOS中获得,而且不鼓励为每种新设备 使用单独的驱动程序来强烈推行基于标准的驱动程序。本章试图整理基本 信息以便对FreeBSD/NetBSD中USB栈的当前实现有个基本的了解。然而, 建议将下面参考中提及的相关规范与本章同时阅读。
FreeBSD中的USB支持可被分为三层。最底层包含主控器,向硬件 及其调度设施提供一个通用接口。它支持硬件初始化,对传输进行调度, 处理已完成/失败的传输。每个主控器驱动程序实现一个虚拟hub, 以硬件无关方式提供对控制机器背面根端口的寄存器的访问。
中间层处理设备连接和断开,设备的基本初始化,驱动程序的选择, 通信通道(管道)和资源管理。这个服务层也控制默认管道和其上传输的 设备请求。
顶层包含支持特定(类)设备的各个驱动程序。这些驱动程序实现 除默认管道外的其他管道上使用的协议。他们也实现额外功能,使得设备 对内核或用户空间是可见的。他们使用服务层暴露出的USB驱动程序接口 (USBDI)。
本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.