※ [本文轉錄自 uefangsmith 信箱]
作者: uefang.bbs@kulu.twbbs.org ("雲飛-Smith")
標題: [Linu] Linux 使用 USB 裝置筆記
時間: Tue Sep 1 00:12:19 2009
作者: uefang (雲飛-Smith) 站內: Uefacool
標題: [Linu] Linux 使用 USB 裝置筆記
時間: 2009/09/01 Tue 00:07:51
Take by http://kezeodsnx.pixnet.net/blog/post/27794098
USB規格簡介
USB Univeral Serial Bus (通用串列匯流排),常見的外部匯流排,支援熱插拔
(hot plugable),一個 USB 最多可以連接127個裝置。
目前規格包括:
USB 1.1 支援二種傳輸速率:Low speed - 1.5 Mbps 及 Full Speed - 12 Mbps。
USB 2.0 傳輸速率 480 Mbps 並支援 USB 1.1。
USB 採用 Single-Master (單主控) 設計,線路架構就像多個點對點的樹狀結構,具 USB
介面的 PC 至少有一個 "root hub",並提供二個外接孔供 USB 設備或另一個 USB hub。
在電腦中的 USB 主控器會去 poll USB 匯流排上的各個裝置,每個 USB 設備連接到主機
時,USB 主控器會分配一個代碼給該裝置,並讀取該裝置的描述表 (Device Descriptor)
以獲知裝置的硬體資訊。
USB 主控器(USB hoot Controller) 分為三種規格:
OHCI (Open Host Controller Interface):
USB 1.1 規格,Compaq(康柏)公司主導,使用廠商包括 Compaq、iMacs、OPTi、SIS
、ALi,採用 Memory-mapped 的 I/O 方式(CPU 使用記憶體指令來存取 USB 主控)
UHCI (Universal Host Controller Interface) :
USB 1.1 規格,Intel公司提倡 線路比 OHCI 線路簡單,但是需要比較複雜的驅動程式,
對CPU負擔也微重了些,使用廠商包括 Intel、VIA,採用 I/O-mapped 的 I/O 方式
(CPU 使用 I/O 指令來存取 USB 主控器)。
EHCI (Enhanced Host Controller Interface):
USB 2.0 規格,速度較快 (480 Mbps),支援 USB 1.1,相容於 OHCI 和 UHCI。
Linux 對 USB的支援
Linux 從 kernel 2.2.7 版本便開始支援 USB,USB 2.0 是從 2.4.19 開始, Linux 以
三層式架構來支援 USB 系統,這三層是內核層 (Core) 、主控層 (Controller)、裝置層
(Device)。內核層指的是 kernel 對 USB 系統的支援,主控層對應到不同規格的 USB
主控器,連接 USB 設備時不必考慮主控器的規格,裝置層的設定,依裝置類型會有所不
同。
Linux USB 驅動程式共有三種不同的 USB 主控制器選項,因為在主板和 PCI 卡上有三種
不同類型的 USB 控制晶片。
EHCI (ehci-hcd.o) :USB 2.0 協定的晶片。
OHCI (usb-ohci.o) :非 PC 系統上的(以及帶有 SiS 和 ALi 晶片組的 PC 主板上的)USB 晶片。
UHCI (usb-uhci.o) :大部份 PC 主機板(包括 Intel 和 Via)。
在 Linux 下可查詢 /proc/pci 所記錄的 PCI 子系統資源配置情況,或指令 lspci,從
中分辦出 USB 主控器屬於那種規格,只需載入 USB 類型對應的 ?HCI 驅動程式即可,
若單獨載入 EHCI 不行,則根據主板類型載入UHCI 或 OHCI 後,再載入EHCI。
使用 usbmodules 指令可查詢己連接至系統的 USB 裝置有那些可以使用的核心驅動模組
,在載入/卸載核心模組會利用到 usbmodules 程式,利用 hotplug 或 usbmgr 程式可以
在 USB 裝置與電腦連接/移除時,自動載入/卸載核心模組、執行相關 Scripts。
Linux 相關的指令和檔案:
mount none /proc/bus/usb -t usbdevfs
usbmodules
hotplug
usbmgr
/etc/usbmgr/
/etc/hotplug/
Linux 對應USB設備一些常用必要的驅動程式模組:
usbcore.o:支援usb所需要的最基礎模組。
usb-uhci.o / usb-ohci.o / ehci-hcd.o:USB 控制晶片驅動程式。
uhci.o :另一個uhci驅動程式,一般不需載入,可能會當機。
hid.o:USB人機界面設備,如滑鼠、鍵盤。
usbmouse.o:USB滑鼠(還需再載入mousedev.o)。
usbkbd.o:USB鍵盤(還需再載入keybdev.o)。
usb-storage.o:USB 存儲設備,Flash Disk 等。
usbnet.o:USB並聯線,讓兩部電腦資料透過USB傳輸。
Linux 相關驅動程式模組:
ide-disk.o :IDE硬碟。
ide-scsi.o :把IDE設備類比SCSI介面。
scsi_mod.o:SCSI 裝置。
sd_mod.o:SCSI硬碟。
sr_mod.o:SCSI光碟機。
sg.o:SCSI 一般裝置,在某些 Flash Disk、SCSI裝置偵測中會使用到。
Linux 使用 Flash Disk 需要載入的模組:
1.usbcore
2.usb-uhci / usb-ohci / ehci-hcd
3.scsi_mod
4.sd_mod
5.usb-storage
--
□ 本文章由 uefang 從 123-110-132-93.best.dynamic.lsc.net.tw 發表
□ 本文章由 uefang 在 2009/09/01 Tue 00:10:53 修改
--
Smith's 電子 VS. 通訊 的好奇 http://uefangsmith.blogspot.com/
ζ
ξ
-●
ν)
√■ˍ▁▂▃▄▄▃
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.110.132.93