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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

9、USB啟動(dòng)并運(yùn)行只需再進(jìn)行幾個(gè)步驟。應(yīng)該啟用"Preliminary USB device filesystem",然后確保啟用所有特定于將與 Linux一起使用的實(shí)際 USB外圍設(shè)備的驅(qū)動(dòng)程序。例如,為了啟用對(duì) 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下沒(méi)有相應(yīng)USB設(shè)備信息,應(yīng)輸入以下命令將 USB設(shè)備文件系統(tǒng)手動(dòng)掛裝到 /proc/bus/usb: # mount -t usbdevfs none /proc/bus/usb為了在系統(tǒng)引導(dǎo)時(shí)自動(dòng)掛裝 USB設(shè)備文件系統(tǒng),請(qǐng)將下面一行添加到 /etc/fstab中的 /proc掛裝行之后:none /proc/bus/usb usbdevfs defaults 0 0模塊的配置方法在很多時(shí)候,我們的USB設(shè)備驅(qū)動(dòng)并不包含在內(nèi)核中。其實(shí)我們只要根據(jù)它所需要使用的模塊,逐一加載。就可以使它啟作用。對(duì)應(yīng)USB設(shè)備下面一些模塊是關(guān)鍵的。usbcor

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

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

13、接口,USB鍵盤和USB鼠標(biāo)似乎并沒(méi)有太多更優(yōu)越的地方。現(xiàn)在的大部分鼠標(biāo)采用 了PS/2接口,不過(guò)USB接口的鼠標(biāo)也越來(lái)越多,兩者相比,各有優(yōu)勢(shì):一般來(lái)說(shuō),USB的鼠標(biāo)接口的帶寬大于PS/2鼠標(biāo),也就是說(shuō)在同樣的時(shí)間內(nèi), USB鼠標(biāo)掃描次數(shù)就要多于PS/2鼠標(biāo),這樣在定位上USB鼠標(biāo)就更為精確;同時(shí)USB接口鼠標(biāo)的默認(rèn)采樣率也比較高,達(dá)到125HZ,而PS/2接口 的鼠標(biāo)僅有 40HZ(Windows 9x/Me)或是60HZ(Windows NT/2000)。對(duì)于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支持也作為模塊方式安裝,那么啟動(dòng)hid模塊和input模塊也是必要的。modprobe hid modprobe inputUSB鍵盤: 一般的,我們現(xiàn)在使用的鍵盤大多是PS/2的,USB鍵盤還比較少見(jiàn),但是下來(lái)的發(fā)展,鍵盤將向USB接口靠攏。使用USB鍵盤基本上沒(méi)有太多 的要求,只需在主板的BIOS設(shè)定對(duì)USB鍵盤的支持,就可以在各系統(tǒng)中完全無(wú)障礙的使用,而且更可以真正做到在即插即用和熱插拔使用,并能提供兩個(gè) USB連接埠:讓您可以輕易地直接將具有USB接頭的裝置接

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論