* [gentoo-commits] gentoo commit in xml/htdocs/doc/zh_cn: metadoc.xml usb-guide.xml
@ 2007-10-09 17:56 Le Zhang (r0bertz)
0 siblings, 0 replies; only message in thread
From: Le Zhang (r0bertz) @ 2007-10-09 17:56 UTC (permalink / raw
To: gentoo-commits
r0bertz 07/10/09 17:56:39
Modified: metadoc.xml
Added: usb-guide.xml
Log:
added usb-guide.xml
Revision Changes Path
1.14 xml/htdocs/doc/zh_cn/metadoc.xml
file : http://sources.gentoo.org/viewcvs.py/gentoo/xml/htdocs/doc/zh_cn/metadoc.xml?rev=1.14&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/xml/htdocs/doc/zh_cn/metadoc.xml?rev=1.14&content-type=text/plain
diff : http://sources.gentoo.org/viewcvs.py/gentoo/xml/htdocs/doc/zh_cn/metadoc.xml?r1=1.13&r2=1.14
Index: metadoc.xml
===================================================================
RCS file: /var/cvsroot/gentoo/xml/htdocs/doc/zh_cn/metadoc.xml,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- metadoc.xml 6 Oct 2007 17:32:15 -0000 1.13
+++ metadoc.xml 9 Oct 2007 17:56:39 -0000 1.14
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE metadoc SYSTEM "/dtd/metadoc.dtd">
-<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/zh_cn/metadoc.xml,v 1.13 2007/10/06 17:32:15 r0bertz Exp $ -->
+<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/zh_cn/metadoc.xml,v 1.14 2007/10/09 17:56:39 r0bertz Exp $ -->
<!-- English CVS version: 1.192 -->
<metadoc lang="zh_cn" parent="/doc/en/metadoc.xml">
@@ -344,7 +344,7 @@
<file id="gnap-userguide">/proj/en/base/embedded/gnap-userguide.xml</file>
<file id="kde-split-ebuilds">/doc/en/kde-split-ebuilds.xml</file>
<file id="grub-error-guide">/doc/zh_cn/grub-error-guide.xml</file>
- <file id="usb-guide">/doc/en/usb-guide.xml</file>
+ <file id="usb-guide">/doc/zh_cn/usb-guide.xml</file>
<file id="liveusb">/doc/en/liveusb.xml</file>
<file id="fluxbox-config">/doc/en/fluxbox-config.xml</file>
<file id="vserver-howto">/proj/en/vps/vserver-howto.xml</file>
1.1 xml/htdocs/doc/zh_cn/usb-guide.xml
file : http://sources.gentoo.org/viewcvs.py/gentoo/xml/htdocs/doc/zh_cn/usb-guide.xml?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/xml/htdocs/doc/zh_cn/usb-guide.xml?rev=1.1&content-type=text/plain
Index: usb-guide.xml
===================================================================
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/zh_cn/usb-guide.xml,v 1.1 2007/10/09 17:56:39 r0bertz Exp $ -->
<!-- English CVS version:1.16 -->
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
<guide link="/doc/en/usb-guide.xml" lang="zh_cn">
<title>Gentoo Linux USB指南</title>
<author title="Author">
<mail link="fox2mike@gentoo.org">Shyam Mani</mail>
</author>
<author title="译者">
<mail link="lyanry@gmail.com">李延瑞</mail>
</author>
<abstract>
本文档辅导用户在Gentoo系统中设置USB以及一些USB设备的配置。
</abstract>
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
<license/>
<version>1.13</version>
<date>2007-04-09</date>
<chapter>
<title>简介</title>
<section>
<title>USB是什么?</title>
<body>
<p>
USB的意思是通用串行总线(Universal Serial Bus),是一种扩展接口标准,主要用于不同计算机或其周边设备之间的通信。一些大众化的USB设备有键盘、鼠标、U盘、数码相机、CD和DVD外接读写器、打印机等。
</p>
<p>
目前USB标准有两种版本:USB 1.1 与USB 2.0。由于USB的前一版总是向后兼容的,所以USB 2.0兼容USB 1.1。最新的USB设备通常都是支持USB 2.0。USB 2.0支持的最大数据传输速率为480 MBps与60 MBps,这分别是USB 2.0与其所兼容的USB 1.1的数据传输速率。USB还具有支持设备热插拔的优点,这意味着不必重启系统即可使用USB设备。
</p>
</body>
</section>
<section>
<title>技术剖析</title>
<body>
<p>
在进行内核有关USB配置之前,先来了解一下它的一些知识细节。如果没有多少时间或者不想阅读这一节,可直接阅读<uri link="#kernel">配置内核</uri>一节。
</p>
<p>
USB系统有一个主控制器(host controller),一些集线器(hub)(不是网络工具中的那个“集线器”)以及一个 <e>根集线器(root hub)</e>,根集线器所能连接的USB设备的上限是127个。主控制器只是USB设备与操作系统之间的硬件接口。目前有两种主控制器接口(HCI, Host Controller Interface):Compaq的OHCI (Open HCI),Intel的UHCI (Universal HCI)和EHCI (Enhanced HCI)。OHCI/UHCI是针对USB 1.1的工业标准,而EHCI是针对USB 2.0的。
</p>
<p>
硬件商向程序员提供开发接口,即所谓的HCD (Host Controller Device)。通过HCD,USB设备可以与系统软件进行交互,看下面的图示会更易于理解这一点。
</p>
<pre caption="USB一般体系结构">
<comment>(软件层还有设备驱动之类的成份构成,但出于简化问题的目的,在此略去)</comment>
+ ---- 硬件 ---- + ---- 软件 ---- +
| | |
| [USB Dev] -+-> {EHCI} -+---> ( EHCD ) |
| | | | 用户
| `-> {UHCI} -+---> ( UHCD ) |
| | |
+ ---- 硬件 ---- + ---- 软件 ---- +
</pre>
<p>
USB设备可以有单独的驱动程序,也可以使用系统提供的驱动程序,这依赖于设备的类别。也就是说,如果一个USB设备属于某种类别,那么其他属于该类别的设备就可以使用同一种设备驱动。在USB设备类别中有一些是USB HID (Human Interface Device)类别,它包括:输入设备,如键盘、鼠标;USB块存储设备,比如U盘、数码相机、音频播放器等;USB CDC (Communication Devices Class,通信设备类别),比如USB口的modem或其他类似设备。
</p>
</body>
</section>
<section>
<title>你的机器上有什么?</title>
<body>
<p>
要想弄清楚你的机器是否支持USB 2.0是很简单的,可以使用<c>lspci</c>来查看。
</p>
<note>
<c>lspci</c>工具是<c>sys-apps/pciutils</c>包的一部分,如果未有安装该软件包,请<c>emerge pciutils</c>。要注意的是,必须是root用户才有权限执行<c>lspci</c>命令。
</note>
<pre caption="lspci的输出">
<comment>(系统是兼容USB 1.1的,即UHCI接口)</comment>
# <i>lspci -v | grep USB</i>
0000:00:04.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB (rev 01) (prog-if 00 [UHCI])
<comment>(A system that is USB 2.0 compliant, note the EHCI and UHCI)</comment>
00:1d.0 USB Controller: Intel Corp. 82801DB USB (Hub #1) (rev 01) (prog-if 00 [UHCI])
00:1d.1 USB Controller: Intel Corp. 82801DB USB (Hub #2) (rev 01) (prog-if 00 [UHCI])
00:1d.2 USB Controller: Intel Corp. 82801DB USB (Hub #3) (rev 01) (prog-if 00 [UHCI])
00:1d.7 USB Controller: Intel Corp. 82801DB USB EHCI Controller (rev 01) (prog-if 20 [EHCI])
</pre>
<p>
使用<c>lspci</c>,可以搞清楚系统是否支持USB 2.0,这在配置内核编译选项时有用。
</p>
</body>
</section>
</chapter>
<chapter id="kernel">
<title>配置内核</title>
<section>
<title>获得内核</title>
<body>
<note>
自从2005.0发行版本之后,Gentoo Linux就使用2.6内核作为默认内核。除非你特别指明使用2.4内核,<c>gentoo-sources</c>面向大部分计算机系统提供2.6内核。请检查你的内核版本,然后进行相应地配置。
</note>
<p>
首先emerge你所要使用的内核源码,这里所使用的是<c>gentoo-sources</c>。关于Portage中其它的内核源码说明,请参考<uri link="/doc/en/gentoo-kernel.xml">Gentoo Linux Kernel Guide</uri>。
</p>
<pre caption="获取内核源码">
# <i>emerge gentoo-sources</i>
</pre>
<p>
现在开始配置内核。
</p>
<pre caption="准备配置">
# <i>cd /usr/src/linux</i>
# <i>make menuconfig</i>
</pre>
<note>
上例假定<path>/usr/src/linux</path>是一个符号连接,指向你要使用的内核源码目录。在进行内核配置之前,你要保证有这样的连接。
</note>
</body>
</section>
<section id="newkernelconfig">
<title>2.6.x内核配置选项</title>
<body>
<p>
现在来配置2.6内核中用于启用USB设备支持的一些选项。如果你使用的是2.4内核,请按照<uri link="#oldkernelconfig">2.4.x 内核配置选项</uri>进行。
</p>
<note>
本文档示例只针对一些基本的USB支持,当然这也是大多数人所需要的,譬如USB块存储设备(数码相机与U盘驱动)。若对一些特殊的USB设备进行配置,请参考设备的用户手册,或者在网上搜索一下内核是否已经实现了对这些设备的支持,再或者使用你所能找到的对应驱动程序。请注意,本文为了简化问题,所有的示例配置都是编译到内核中去的,如果你希望使用内核的模块机制,在确认要编译哪些模块时,相应地调整一下内核配置文件。
</note>
<pre caption="2.6 kernel的make menuconfig选项">
Device Drivers --->
SCSI device support --->
<comment>(尽管在选择USB Mass Storage时会自动启用SCSI支持,也必需启用disk支持)</comment>
--- SCSI support type (disk, tape, CD-ROM)
<*> SCSI disk support
<comment>(然后返回上一层,进入USB support)</comment>
USB support --->
<comment>(这是根集线器,对于USB支持而言是必须的。如果你想把它编译成模块,那么它就叫做usbcore)</comment>
<*> Support for Host-side USB
<comment>(启用这一选项可以让你在/porc/bus/usb中查看USB设备,推荐启用)</comment>
[*] USB device filesystem
<comment>(至少要选择一个HCD。如果你不能确定,就都选上好了)</comment>
--- USB Host Controller Drivers
<*> EHCI HCD (USB 2.0) support
< > OHCI HCD support
<*> UHCI HCD (most Intel and VIA) support
<comment>(向下移动一下,就可以看到CDC和mass storage的配置选项了)</comment>
< > USB Modem (CDC ACM) support
<*> USB Printer support
<*> USB Mass Storage support
<comment>(然后是HID设置。如果你有USB接口的键盘、鼠标、游戏手柄等输入设备,必须要启用这些选项)</comment>
--- USB Input Devices
<*> USB Human Interface Device (full HID) support
[*] HID input layer support
<comment>(如果你有USB网卡,比如RTL8150,应当开启这个选项)</comment>
USB Network Adapters --->
<*> USB RTL8150 based ethernet device support (EXPERIMENTAL)
<comment>(如果你有串口-USB转接器,譬如Prolific 2303,你需要开启这一选项)</comment>
USB Serial Converter support --->
<*> USB Serial Converter support
<*> USB Prolific 2303 Single Port Serial Driver (NEW)
</pre>
<p>
内核选项已经配置完毕,(重新)编译内核,使用新内核重启机器就可以实现对USB设备的支持了。现在,可以阅读<uri link="#postkern">查看USB工作状况</uri>一节,查看USB设备是否正常工作。
</p>
</body>
</section>
<section id="oldkernelconfig">
<title>2.4.x 内核配置选项</title>
<body>
<p>
现在来配置一下在2.6内核中用于启用USB设备支持的一些选项。如果你使用的是2.6内核,请按照<uri link="#newkernelconfig">2.6.x内核配置选项</uri>进行。
</p>
<note>
本文档示例只针对一些基本的USB支持,当然这也是大多数人所需要的,譬如USB块存储设备(数码相机与U盘驱动)。若对一些特殊的USB设备进行配置,请参考设备的用户手册,或者在网上搜索一下内核是否已经实现了对这些设备的支持,再或者使用你所能找到的对应驱动程序。请注意,本文为了简化问题,所有的示例配置都是编译到内核中去的,如果你希望使用内核的模块机制,在确认要编译哪些模块时,相应地调整一下内核配置文件。
</note>
<pre caption="2.4 kernel的make menuconfig选项" >
<comment>(此处配置只针对那些拥有USB输入设备的用户,Input core support在下面设置USB HID时是必需的)</comment>
Input core support --->
<*> Input core support
< > Keyboard support
< > Mouse support
< > Event interface support
USB support --->
<comment>(这是根集线器,对于USB支持而言是必须的。如果你想把它编译成模块,那么它就叫做usbcore.o)</comment>
<*> Support for USB
<comment>(启用这一选项可以让你在/porc/bus/usb中查看USB设备,推荐启用)</comment>
[*] Preliminary USB device filesystem
<comment>(至少要选择一个HCD。如果你不能确定,就都选上好了)</comment>
--- USB Host Controller Drivers
<*> UHCI Alternate Driver (JE) support
< > OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support
<comment>(此处是具体USB设备选项,根据你的需要来选择)</comment>
--- USB Device Class drivers
< > USB Audio support
<*> USB Mass Storage support
< > USB Modem (CDC ACM) support
<*> USB Printer support
<comment>(下面是HID选项,如果你有USB输入设备,这里是必选的)</comment>
--- USB Human Interface Devices (HID)
<*> USB Human Interface Device (full HID) support
[*] HID input layer support
<comment>(如果你有串口-USB转接器,譬如Prolific 2303,你需要开启这一选项)</comment>
USB Serial Converter support --->
<*> USB Serial Converter support
<*> USB Prolific 2303 Single Port Serial Driver (NEW)
</pre>
<p>
内核选项已经配置完毕,(重新)编译内核,使用新内核重启机器就可以实现对USB设备的支持了。
</p>
</body>
</section>
</chapter>
<chapter id="postkern">
<title>查看USB设备工作状况</title>
<section>
<title>dmesg是你的朋友!</title>
<body>
<p>
现在终于到了与USB设备共舞的时刻了:) 在本章中,将会看到系统如何响应各种USB设备的。先从一个512M的U盘的插入开始,你也可以使用其他类似设备。我们主要是使用<c>dmesg</c>来查看U盘插入后发生了什么以及系统如何响应的。
</p>
<note>
<c>dmesg</c>在显示我们所需要的信息之前会输出大量的冗余信息,因为它要读取内核的环缓冲区(ring buffer),会输出许多启动信息。下面示例中的输出信息只给出了一部分信息,为了更好的阅读,还添加了一些空行。使用<c>dmesg | more</c>或<c>dmesg | less</c>来查看输出信息会更好一些。
</note>
<pre caption="记忆棒的dmesg输出">
<comment>(先将U盘插入可用的USB端口,然后...)</comment>
# <i>dmesg | less</i>
<comment>(当前设备被识别为USB 1.1并为之分配一个地址。这也能说明哪一种HCD正在被使用)</comment>
usb 1-1: new full speed USB device using uhci_hcd and address 2
<comment>(SCSI模拟器会自动载入)</comment>
scsi0 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 2
<comment>(现在设备信息,包括模块号,都可以被检索到)</comment>
usb-storage: waiting for device to settle before scanning
Vendor: JetFlash Model: TS512MJF2A Rev: 1.00
Type: Direct-Access ANSI SCSI revision: 02
SCSI device sda: 1003600 512-byte hdwr sectors (514 MB)
<comment>(写保护语句是未来新版本内核的试验性代码)</comment>
sda: Write Protect is off
sda: Mode Sense: 0b 00 00 08
sda: assuming drive cache: write through
SCSI device sda: 1003600 512-byte hdwr sectors (514 MB)
/dev/scsi/host0/bus0/target0/lun0: p1
Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0
Attached scsi generic sg0 at scsi0, channel 0, id 0, lun 0, type 0
usb-storage: device scan complete
<comment>(在此,设备通常可以通过挂载/dev/sda1来访问)</comment>
<comment>(当设备断开连接时,系统会给出这样的反馈信息)</comment>
usb 1-1: USB disconnect, address 2
</pre>
<p>
一旦设备连接上并被挂载,就可以像普通硬盘那样访问了。一些大众化的操作,譬如<c>cp</c>,<c>mv</c>,<c>rm</c>之类,都可以正常执行。也可以在U盘上创建文件系统。
</p>
<pre caption="访问U盘">
# <i>mount /dev/sda1 /mnt/usb</i>
# <i>df -h</i>
Filesystem Size Used Avail Use% Mounted on
/dev/hda8 9.4G 7.5G 1.9G 80% /
/dev/hda9 11G 8.1G 2.4G 78% /usr
none 189M 0 189M 0% /dev/shm
/dev/sda1 490M 34M 457M 7% /mnt/usb
</pre>
<note>
也可以像U盘那样访问数码相机。我曾有一个Nikon Coolpix 5200,我正是采用这种方式访问它的。数码相机中的图片通常有两种面向计算机的传输模式:USB块存储与PTP (Picture Transfer Protocol)。相机要是被设置为USB块存储模式,就如同上面所讲的U盘访问过程一样,但是也要注意这并非放之四海皆准的。
</note>
<p>
对于USB鼠标又是怎样一种情况呢?它应当被显示为一种HID设备。
</p>
<pre caption="USB光电鼠标">
# <i>dmesg | grep USB</i>
drivers/usb/input/hid-core.c: v2.0:USB HID core driver
usb 1-1: new low speed USB device using address 2
input: USB HID v1.10 Mouse [Logitech USB-PS/2 Optical Mouse] on usb-0000:00:07.2-1
</pre>
<p>
另外一个时髦的命令<c>lsusb</c>可以查看你的USB端口。这个命令是<c>sys-apps/usbutils</c>软件包的一部分,下一章会介绍该软件包。
</p>
</body>
</section>
</chapter>
<chapter>
<title>用户级的USB</title>
<section>
<title>时髦的工具</title>
<body>
<p>
内核/系统对USB的支持已经见识得很多了。现在,我们将看看由Gentoo为USB提供的用户级支持。
</p>
<p>
一个非常有用的工具是<c>lsusb</c>,它可以列出所有连接到系统的USB设备,而且它的安装也非常easy。
</p>
<pre caption="安装usbutils">
# <i>emerge usbutils</i>
</pre>
<p>
安装完后,可以运行<c>lsusb</c>获得连接到机器上的USB设备的一些简要信息。
</p>
<note>
通常你必须以根用户身份运行<c>lsusb</c>。
</note>
<warn>
<c>lsusb</c>从<path>/proc/bus/usb</path>中读取USB设备信息,如果你在编译内核时没有进行相应配置,那么<c>lsusb</c>就无法工作了。所以,一定要确认你的内核配置启用了<path>/proc</path>文件系统支持,并且保证<c>usbfs</c>是挂载在<path>/proc/bus/usb</path>上的(默认就是如此)。
</warn>
<pre caption="执行lsusb">
# <i>lsusb</i>
<comment>(This is the 512 MB Memory Stick from Transcend)</comment>
Bus 001 Device 003: ID 0c76:0005 JMTek, LLC. USBdisk
<comment>(This is the Optical Mouse)</comment>
Bus 001 Device 002: ID 046d:c00e Logitech, Inc. Optical Mouse
<comment>(This is the root hub)</comment>
Bus 001 Device 001: ID 0000:0000
</pre>
<p>
如果你喜欢看大量的输出信息,运行<c>lsusb -v</c>就可以满足你的这一欲望。<c>lsusb</c>另一个有用的选项是给出当前USB物理层次的树状信息,这可以更容易让你准确理解设备体系结构,这个命令就是<c>lsusb -t</c>,例如:
</p>
<pre caption="lsusb显示USB物理层">
# <i>lsusb -t</i>
Bus# 1
`-Dev# 1 Vendor 0x0000 Product 0x0000
|-Dev# 2 Vendor 0x046d Product 0xc00e
`-Dev# 3 Vendor 0x0c76 Product 0x0005
</pre>
<p>
可以很容易地将<c>lsusb</c>与<c>lsusb -t</c>的输出信息联系起来,这有助于调试与理解USB的工作机制。
</p>
</body>
</section>
</chapter>
<chapter>
<title>致谢...</title>
<section>
<title>参考文献</title>
<body>
<p>
在我撰写这篇文档时,一些优秀的在线文档给予了我极大的帮助,它们有许多不仅技术含量高而且令人手不释卷。它们应当得到赞颂,来看一看!
</p>
<ul>
<li><uri link="http://www.usb.org">USB官方站点</uri></li>
<li><uri link="http://www.usb.org/about/faq">USB FAQ</uri></li>
<li>
<uri link="http://h18000.www1.hp.com/productinfo/development/openhci.html">Compaq的OHCI标准</uri>
</li>
<li>
<uri link="http://developer.intel.com/technology/usb/uhci11d.htm">Intel的UHCI标准</uri>
</li>
<li>
<uri link="http://www.intel.com/technology/usb/ehcispec.htm">Intel的EHCI标准</uri>
</li>
</ul>
</body>
</section>
<section>
<title>其他一些有用的连接</title>
<body>
<ul>
<li><uri link="/doc/zh-cn/liveusb.xml">Gentoo Linux LiveUSB HOWTO</uri></li>
</ul>
</body>
</section>
</chapter>
</guide>
--
gentoo-commits@gentoo.org mailing list
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2007-10-09 18:06 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-10-09 17:56 [gentoo-commits] gentoo commit in xml/htdocs/doc/zh_cn: metadoc.xml usb-guide.xml Le Zhang (r0bertz)
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox