介紹Linux操作系統(tǒng)下的USB硬件設(shè)備驅(qū)動_第1頁
介紹Linux操作系統(tǒng)下的USB硬件設(shè)備驅(qū)動_第2頁
介紹Linux操作系統(tǒng)下的USB硬件設(shè)備驅(qū)動_第3頁
介紹Linux操作系統(tǒng)下的USB硬件設(shè)備驅(qū)動_第4頁
介紹Linux操作系統(tǒng)下的USB硬件設(shè)備驅(qū)動_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、介紹Linux操作系統(tǒng)下的USB硬件設(shè)備驅(qū)動摘自網(wǎng)上USB 是英文"Universal Serial Bus"的縮寫,意為"通用串行總線"。是由Compaq(康柏)、DEC、IBM、Intel、NEC、微軟以及Northern Telecom(北方電訊)等公司于1994年11月共同提出的,主要目的就是為了解決接口標(biāo)準(zhǔn)太多的弊端。USB使用一個4針插頭作為標(biāo)準(zhǔn)插頭,并通過這個標(biāo)準(zhǔn)接頭,采用菊花瓣形式把所有外設(shè)連接起來,它采用串行方式傳輸數(shù)據(jù),目前最大數(shù)據(jù)傳輸率為12Mbps, 支持多數(shù)據(jù)流和多個設(shè)備并行操作,允許外設(shè)熱插拔。對于使用Linux系統(tǒng),正確支持

2、和配置常見的USB設(shè)備,就是其使用必不可少的關(guān)鍵一步。模塊(驅(qū)動程序)模塊(module)是在內(nèi)核空間運行的程序,實際上是一種目標(biāo)對象文件,沒有鏈接,不能獨立運行,但是可以裝載到系統(tǒng)中作為內(nèi)核的一部分運行,從而可以動態(tài)擴充內(nèi)核的功能。模塊最主要的用處就是用來實現(xiàn)設(shè)備驅(qū)動程序。Linux下對于一個硬件的驅(qū)動,可以有兩種方式:直接加載到內(nèi)核代碼中,啟動內(nèi)核時就會驅(qū)動此硬件設(shè)備。另一種就是以模塊方式,編譯生成一個.o文件。當(dāng)應(yīng)用程序需要時再加載進(jìn)內(nèi)核空間運行。所以我們所說的一個硬件的驅(qū)動程序,通常指的就是一個驅(qū)動模塊。設(shè)備文件對于一個設(shè)備,它可以在/dev下面存在一個對應(yīng)的邏輯設(shè)備節(jié)點,這個節(jié)點以文

3、件的形式存在,但它不是普通意義上的文件,它是設(shè)備文件,更確切的說,它是設(shè)備節(jié)點。這個節(jié)點是通過mknod命令建立的,其中指定了主設(shè)備號和次設(shè)備號。主設(shè)備號表明了某一類設(shè)備,一般對應(yīng)著確定的驅(qū)動程序;次設(shè)備 號一般是區(qū)分不同屬性,例如不同的使用方法,不同的位置,不同的操作。這個設(shè)備號是從/proc/devices文件中獲得的,所以一般是先有驅(qū)動程序在內(nèi)核中,才有設(shè)備節(jié)點在目錄中。這個設(shè)備號(特指主設(shè)備號)的主要作用,就是聲明設(shè)備所使用的驅(qū)動程序。驅(qū)動程序和設(shè)備號是一一對應(yīng)的,當(dāng)你打開一個設(shè)備文件時,操作系統(tǒng)就已經(jīng)知道這個設(shè)備所對應(yīng)的驅(qū)動程序。SCSI 設(shè)備SCSI 是有別于IDE的一個計算機標(biāo)準(zhǔn)

4、接口?,F(xiàn)在大部分平板式掃描儀、CD-R刻錄機、MO光磁盤機等漸漸趨向使用SCSI接口,加之SCSI又能提供一個高速傳送通道,所以,接觸到SCSI設(shè)備的用戶會越來越多。Linux支持很多種的SCSI設(shè)備,例如:SCSI硬盤、SCSI光驅(qū)、SCSI磁帶機。更重要 的是,Linux提供了IDE設(shè)備對SCSI的模擬(ide-scsi.o模塊),我們通常會就把IDE光驅(qū)模擬為SCSI光驅(qū)進(jìn)行訪問。因為在 Linux中很多軟件都只能操作SCSI光驅(qū)。例如大多數(shù)刻錄軟件、一些媒體播放軟件。通常我們的USB存儲設(shè)備,也模擬為SCSI硬盤而進(jìn)行訪問。Linux硬件驅(qū)動架構(gòu)對于一個硬件,Linux是這樣來進(jìn)行驅(qū)動

5、的:首先,我們必須提供一個.o的驅(qū)動模塊文件(這里我們只說明模塊方式,其實內(nèi)核方式是類似的)。 我們要使用這個驅(qū)動程序,首先要加載運行它(insmod *.o)。這樣驅(qū)動就會根據(jù)自己的類型(字符設(shè)備類型或塊設(shè)備類型,例如鼠標(biāo)就是字符設(shè)備而硬盤就是塊設(shè)備)向系統(tǒng)注冊,注冊成功系統(tǒng)會反饋一個主設(shè)備號,這個主設(shè)備號就是系統(tǒng)對它的唯一標(biāo)識(例如硬盤塊設(shè)備在/proc/devices中顯示的主設(shè)備號為3 ,我們用ls -l /dev/had看到的主設(shè)備就肯定是3)。驅(qū)動就是根據(jù)此主設(shè)備號來創(chuàng)建一個一般放置在/dev目錄下的設(shè)備文件(mknod命令用來創(chuàng)建它,它必須用主設(shè)備號這個參數(shù))。在我們要訪問此硬件

6、時,就可以對設(shè)備文件通過open、read、write等命令進(jìn)行。而驅(qū)動就會接收到相應(yīng)的read、 write操作而根據(jù)自己的模塊中的相應(yīng)函數(shù)進(jìn)行。內(nèi)核中配置要啟用 Linux USB支持,首先進(jìn)入"USB support"節(jié)并啟用"Support for USB"選項(對應(yīng)模塊為usbcore.o)。特別地,現(xiàn)在需要選擇用于系統(tǒng)的正確 USB主控制器驅(qū)動程序。選項是"EHCI"(對應(yīng)模塊為ehci-hcd.o)、"UHCI"(對應(yīng)模塊為usb-uhci.o)、"UHCI (alternate drive

7、r)"和"OHCI"(對應(yīng)模塊為usb-ohci.o)。要理解"EHCI"及其同類是什么,首先要知道每塊支持插入 USB設(shè)備的主板或 PCI卡都需要有 USB主控制器芯片組。這個特別的芯片組與插入系統(tǒng)的 USB設(shè)備進(jìn)行相互操作,并負(fù)責(zé)處理允許 USB設(shè)備與系統(tǒng)其它部分通信所必需的所有低層次細(xì)節(jié)。Linux USB驅(qū)動程序有三種不同的 USB主控制器選項是因為在主板和 PCI卡上有三種不同類型的 USB芯片。"EHCI"驅(qū)動程序設(shè)計成為實現(xiàn)新的高速 USB 2.0協(xié)議的 芯片提供支持。"OHCI"驅(qū)動程序用

8、來為非 PC系統(tǒng)上的(以及帶有 SiS和 ALi芯片組的 PC主板上的)USB芯片提供支持。"UHCI"驅(qū)動程序用來為大多數(shù)其它 PC主板(包括 Intel和 Via)上的 USB實現(xiàn)提供支持。只需選擇與希望啟用的 USB支持的類型對應(yīng)的"?HCI"驅(qū)動程序即可。如有疑惑,為保險起見,可以啟用"EHCI"、"UHCI"(兩者中任選一種,它們之間沒有明顯的區(qū)別)和"OHCI"。啟用了"USB support"和適當(dāng)?shù)?quot;?HCI"USB主控制器驅(qū)動程序后,使

9、USB啟動并運行只需再進(jìn)行幾個步驟。應(yīng)該啟用"Preliminary USB device filesystem",然后確保啟用所有特定于將與 Linux一起使用的實際 USB外圍設(shè)備的驅(qū)動程序。例如,為了啟用對 USB游戲控制器的支持,我啟用了"USB Human Interface Device (full HID) support"。我還啟用了主"Input core support"節(jié)下的"Input core support"和"Joystick support"。一旦用新的已啟用 U

10、SB的內(nèi)核重新引導(dǎo)后,若/proc/bus/usb下沒有相應(yīng)USB設(shè)備信息,應(yīng)輸入以下命令將 USB設(shè)備文件系統(tǒng)手動掛裝到 /proc/bus/usb: # mount -t usbdevfs none /proc/bus/usb為了在系統(tǒng)引導(dǎo)時自動掛裝 USB設(shè)備文件系統(tǒng),請將下面一行添加到 /etc/fstab中的 /proc掛裝行之后:none /proc/bus/usb usbdevfs defaults 0 0模塊的配置方法在很多時候,我們的USB設(shè)備驅(qū)動并不包含在內(nèi)核中。其實我們只要根據(jù)它所需要使用的模塊,逐一加載。就可以使它啟作用。對應(yīng)USB設(shè)備下面一些模塊是關(guān)鍵的。usbcor

11、e.o要支持usb所需要的最基礎(chǔ)模塊usb-uhci.o(已經(jīng)提過)usb-ohci.o(已經(jīng)提過)uhci.o另一個uhci驅(qū)動程序,我也不知道有什么用,一般不要加載,會死機的ehci-hcd.o(已經(jīng)提過 usb2.0)hid.oUSB人機界面設(shè)備,像鼠標(biāo)呀、鍵盤呀都需要usb-storage.oUSB存儲設(shè)備,U盤等用到相關(guān)模塊ide-disk.oIDE硬盤ide-scsi.o把IDE設(shè)備模擬SCSI接口scsi_mod.oSCSI支持注意kernel config其中一項:Probe all LUNs on each SCSI device最好選上,要不某些同時支持多個口的讀卡器只能顯

12、示一個。若模塊方式就要帶參數(shù)安裝或提前在/etc/modules.conf中加入以下項,來支持多個LUN。add options scsi_mod max_scsi_luns=9 sd_mod.oSCSI硬盤sr_mod.oSCSI光盤sg.oSCSI通用支持(在某些探測U盤、SCSI探測中會用到)常見USB設(shè)備及其配置 在Linux 2.4的內(nèi)核中已經(jīng)支持不下20種設(shè)備。它支持幾乎所有的通用設(shè)備如鍵盤、鼠標(biāo)、modem、打印機等,并不斷地添加廠商新的設(shè)備象數(shù)碼相機、MP3、網(wǎng)卡等。下面就是幾個最常見設(shè)備的介紹和使用方法:USB鼠標(biāo): 鍵盤和鼠標(biāo)屬于低速的輸入設(shè)備,對于已經(jīng)為用戶認(rèn)可的PS/2

13、接口,USB鍵盤和USB鼠標(biāo)似乎并沒有太多更優(yōu)越的地方。現(xiàn)在的大部分鼠標(biāo)采用 了PS/2接口,不過USB接口的鼠標(biāo)也越來越多,兩者相比,各有優(yōu)勢:一般來說,USB的鼠標(biāo)接口的帶寬大于PS/2鼠標(biāo),也就是說在同樣的時間內(nèi), USB鼠標(biāo)掃描次數(shù)就要多于PS/2鼠標(biāo),這樣在定位上USB鼠標(biāo)就更為精確;同時USB接口鼠標(biāo)的默認(rèn)采樣率也比較高,達(dá)到125HZ,而PS/2接口 的鼠標(biāo)僅有 40HZ(Windows 9x/Me)或是60HZ(Windows NT/2000)。對于USB設(shè)備你當(dāng)然必須先插入相應(yīng)的USB控制器模塊:usb-uhci.o或usb-ohci.omodprobe usb-uhcimo

14、dprobe usbmouse modprobe mousedev若你把HID input layer支持和input core支持也作為模塊方式安裝,那么啟動hid模塊和input模塊也是必要的。modprobe hid modprobe inputUSB鍵盤: 一般的,我們現(xiàn)在使用的鍵盤大多是PS/2的,USB鍵盤還比較少見,但是下來的發(fā)展,鍵盤將向USB接口靠攏。使用USB鍵盤基本上沒有太多 的要求,只需在主板的BIOS設(shè)定對USB鍵盤的支持,就可以在各系統(tǒng)中完全無障礙的使用,而且更可以真正做到在即插即用和熱插拔使用,并能提供兩個 USB連接埠:讓您可以輕易地直接將具有USB接頭的裝置接

15、在您的鍵盤上,而非計算機的后面。同樣你當(dāng)然必須先插入相應(yīng)的USB控制器模塊:usb-uhci.o或usb-ohci.omodprobe usb-uhci然后您還必須插入鍵盤模塊usbkbd.o,以及keybdev.o,這樣usb鍵盤才能夠正常工作。此時,運行的系統(tǒng)命令:modprobe usbkbdmodprobe keybdev同樣若你把HID input layer支持和input core支持也作為模塊方式安裝,那么啟動hid模塊和input模塊也是必要的。U盤和USB讀卡器: 數(shù)碼存儲設(shè)備現(xiàn)在對我們來說已經(jīng)是相當(dāng)普遍的了。CF卡、SD卡、Memory Stick等存儲卡已經(jīng)遍及我們的身邊,通常,他們的讀卡器都是USB接口的。另外,很多MP3、數(shù)碼相機也都是USB接口和計算機進(jìn)行數(shù)據(jù)傳遞。更我們 的U盤、USB硬盤,作為移動存儲設(shè)備,已經(jīng)成為我們的必須裝備。在Linux下這些設(shè)備通常都是以一種叫做usb-storage的方式進(jìn)行驅(qū)動。要使用他們必須加載此模塊modprobe usb-storage當(dāng)然,usbcore.o和usb-uhci.o或usb-ohci也肯定是不可缺少的。另外,若你系統(tǒng)中SCSI支持也是模塊方式,那么下面的模塊也要加載modprobe scsi_mod modprobe sd_mod在加載完這些模塊后,我們插入U盤

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論