基于 Linux 的 USB 主/从设备之间的三种通信方式随着简单易用的 USB 接口日益流行,在嵌入式系统中添加对 USB 接口的支持已成为大势所趋。本文通过介绍 Linux 中支持 USB 的各种模块和库,分析了在Linux 上利用 USB 实现高速串口和以太网连接等通信方式的具体方法。 通用串行总线(USB,Universal Serial Bus)是一种非常有用的通信接口,其应用日益广泛。有三种方法可以使运行 Linux 操作系统的嵌入式系统支持 USB 接口,本文将对这三种方法逐一进行介绍。 基于 Linux 的 USB 设备与 USB 主机一般有以下三种通信方式:1.一些功能最完备结构也最复杂的设备采纳用户定制内核模块来实现在标准 USB 总线上运行复杂的高级协议,而由 USB 主机上相应的用户驱动程序和应用来完成连接。2.另一些基于 Linux 的 USB 设备则利用 USB 总线来实现与主机上所运行的某个应用的简单的点对点串行连接。主机上的应用虽然利用了主操作系统所提供的 USB编程接口,但表面看来却似乎是在通过一个典型的串口进行通信。3.最后,还有些设备以主计算机作为网关,将 USB 设备连接到办公局域网或互联网上,从而使 USB 设备看起仿佛构成了一个以太网。这种方法专业性较强,但通常可行,是主机驱动程序使该方法成为可能。 在这三种方法中,您可以根据预留给开发的时间长短和期望 USB 接口在嵌入式应用中所扮演的角色来决定选用那一种方法比较恰当。为了帮助您做出正确的选择,下一节将向您介绍这三种方法分别应用于基于 Linux 的 USB 设备时的情况,但首先让我们对 USB 接口做一个大致介绍。 USB 概述 USB 是一种方便快捷的接口,可用于为计算机工作站连接一些小配件。根据 USB法律规范的定义,鼠标、键盘、音频播放和录音设备、照相机、大容量存储设备以及许多其他设备均可以通过 USB 接口,以高达 480Mbps 的速度连接到一台主计算机。协议定制者对 USB 上运行的这种复杂的主从式协议做出了认真的说明,这就帮助保证了所有这些设备之间具备互操作性和兼容性。例如,该协议规定,USB 设备只有在被询问时才可以回答,并且 USB 主机会根据所连接的 USB设备类型的不同,采纳某些特定的格式,在某些特定的时间段从不同的设备猎取数据。 USB 设备和主机之间通常通过专用的总线控制芯片建立连接。在 USB 主机上,名为 UHCI 或 OHCI 等的控制芯片通过插卡形式加入主机或直接集成到工作站的主板上。在主机...