戴文的Linux內核專題:03 驅動程序
許多驅動程序是通用驅動程序,這意味著一個通用鍵盤驅動可以使內核可以處理幾乎所有的鍵盤。然而,有些驅動是專用驅動,像蘋果和Commodore就分別為蘋果電腦和Amiga系統製造了專門的硬體。Linux內核中已經包含了許多諸如智能手機、蘋果、Amiga系統、PS3、Android平板,和許多其他設備的驅動程序。
注意有些設備的驅動不在本目錄中。比如,射頻驅動在net和media文件夾下。
accessibility - 這些驅動提供支持一些輔助設備。在Linux 3.9.4中,這個文件夾中只有一個驅動就是盲文設備驅動。
acpi - 高級配置和電源介面(ACPI : Advanced Configuration and Power Interface)驅動用來管理電源使用。
amba - 高級微控制器匯流排架構(AMBA : Advanced Microcontroller Bus Architecture)是與片上系統(SoC)的管理和互連的協議。SoC是一塊包含許多或所有必要的計算機組件的晶元。這裡的AMBA驅動讓內核能夠運行在這上面。
ata - 該目錄包含PATA和SATA設備的驅動程序。串列ATA(SATA)是一種連接主機匯流排適配器到像硬碟那樣的存儲器的計算機匯流排介面。並行ATA(PATA)用於連接存儲設備,如硬碟驅動器,軟盤驅動器,光碟驅動器的標準。PATA就是我們所說的IDE。
atm - 非同步通信模式(ATM : Asynchronous Transfer Mode)是一種通信標準。這裡有各種接到PCI橋的驅動(他們連接到PCI匯流排)和乙太網控制器(控制乙太網通信的集成電路晶元)。
auxdisplay - 這個文件夾提供了三個驅動。LCD 幀緩存(framebuffer)驅動、LCD控制器驅動和一個LCD驅動。這些驅動用於管理液晶顯示器 —— 液晶顯示器會在按壓時顯示波紋。注意:按壓會損害屏幕,所以請不要用力戳LCD顯示屏。
base - 這是個重要的目錄包含了固件、系統匯流排、虛擬化能力等基本的驅動。
bcma - 這些驅動用於使用基於AMBA協議的匯流排。AMBA是由博通公司開發。
block - 這些驅動提供對塊設備的支持,像軟碟機、SCSI磁帶、TCP網路塊設備等等。
bluetooth - 藍牙是一種安全的無線個人區域網路標準(PANs)。藍牙驅動就在這個文件夾,它允許系統使用各種藍牙設備。例如,一個藍牙滑鼠不用電纜,並且計算機有一個電子狗(小型USB接收器)。Linux系統必須能夠知道進入電子狗的信號,否則藍牙設備無法工作。
bus - 這個目錄包含了三個驅動。一個轉換ocp介面協議到scp協議。一個是設備間的互聯驅動,第三個是用於處理互聯中的錯誤處理。
cdrom - 這個目錄包含兩個驅動。一個是cd-rom,包括DVD和CD的讀寫。第二個是gd-rom(只讀GB光碟),GD光碟是1.2GB容量的光碟,這像一個更大的CD或者更小的DVD。GD通常用於世嘉遊戲機中。
char - 字元設備驅動就在這裡。字元設備每次傳輸數據傳輸一個字元。這個文件夾里的驅動包括印表機、PS3快閃記憶體驅動、東芝SMM驅動和隨機數發生器驅動等。
clk - 這些驅動用於系統時鐘。
clocksource - 這些驅動用於作為定時器的時鐘。
connector - 這些驅動使內核知道當進程fork並使用proc連接器更改UID(用戶ID)、GID(組ID)和SID(會話ID)。內核需要知道什麼時候進程fork(CPU中運行多個任務)並執行。否則,內核可能會低效管理資源。
cpufreq - 這些驅動改變CPU的電源能耗。
cpuidle - 這些驅動用來管理空閑的CPU。一些系統使用多個CPU,其中一個驅動可以讓這些CPU負載相當。
crypto - 這些驅動提供加密功能。
dca - 直接緩存訪問(DCA : Direct Cache Access)驅動允許內核訪問CPU緩存。CPU緩存就像CPU內置的RAM。CPU緩存的速度比RAM更快。然而,CPU緩存的容量比RAM小得多。CPU在這個緩存系統上存儲了最重要的和執行的代碼。
devfreq - 這個驅動程序提供了一個通用的動態電壓和頻率調整(DVFS : Generic Dynamic Voltage and Frequency Scaling)框架,可以根據需要改變CPU頻率來節約能源。這就是所謂的CPU節能。
dio - 數字輸入/輸出(DIO :Digital Input/Output)匯流排驅動允許內核可以使用DIO匯流排。
dma - 直接內存訪問(DMA)驅動允許設備無需CPU直接訪問內存。這減少了CPU的負載。
edac - 錯誤檢測和校正( Error Detection And Correction)驅動幫助減少和糾正錯誤。
eisa - 擴展工業標準結構匯流排(Extended Industry Standard Architecture)驅動提供內核對EISA匯流排的支持。
extcon - 外部連接器(EXTernal CONnectors)驅動用於檢測設備插入時的變化。例如,extcon會檢測用戶是否插入了USB驅動器。
firewire - 這些驅動用於控制蘋果製造的類似於USB的火線設備。
firmware - 這些驅動用於和像BIOS(計算機的基本輸入輸出系統固件)這樣的設備的固件通信。BIOS用於啟動操作系統和控制硬體與設備的固件。一些BIOS允許用戶超頻CPU。超頻是使CPU運行在一個更快的速度。CPU速度以MHz(百萬赫茲)或GHz衡量。一個3.7 GHz的CPU的的速度明顯快於一個700Mhz的處理器。
gpio - 通用輸入/輸出(GPIO :General Purpose Input/Output)是可由用戶控制行為的晶元的管腳。這裡的驅動就是控制GPIO。
gpu - 這些驅動控制VGA、GPU和直接渲染管理(DRM :Direct Rendering Manager )。VGA是640*480的模擬計算機顯示器或是簡化的解析度標準。GPU是圖形處理器。DRM是一個Unix渲染系統。
hid - 這驅動用於對USB人機界面設備的支持。
hsi - 這個驅動用於內核訪問像Nokia N900這樣的蜂窩式數據機。
hv - 這個驅動用於提供Linux中的鍵值對(KVP :Key Value Pair)功能。
hwmon - 硬體監控驅動用於內核讀取硬體感測器上的信息。比如,CPU上有個溫度感測器。那麼內核就可以追蹤溫度的變化並相應地調節風扇的速度。
hwspinlock - 硬體轉鎖驅動允許系統同時使用兩個或者更多的處理器,或使用一個處理器上的兩個或更多的核心。
i2c - I2C驅動可以使計算機用I2C協議處理主板上的低速外設。系統管理匯流排(SMBus :System Management Bus)驅動管理SMBus,這是一種用於輕量級通信的two-wire匯流排。
ide - 這些驅動用來處理像CDROM和硬碟這些PATA/IDE設備。
idle - 這個驅動用來管理Intel處理器的空閑功能。
iio - 工業I/O核心驅動程序用來處理數模轉換器或模數轉換器。
infiniband - Infiniband是在企業數據中心和一些超級計算機中使用的一種高性能的埠。這個目錄中的驅動用來支持Infiniband硬體。
input - 這裡包含了很多驅動,這些驅動都用於輸入處理,包括遊戲桿、滑鼠、鍵盤、遊戲埠(舊式的遊戲桿介面)、遙控器、觸控、耳麥按鈕和許多其他的驅動。如今的操縱桿使用USB埠,但是在上世紀80、90年代,操縱桿是插在遊戲埠的。
iommu - 輸入/輸出內存管理單元(IOMMU :Input/Output Memory Management Unit)驅動用來管理內存管理單元中的IOMMU。IOMMU連接DMA IO匯流排到內存上。IOMMU是設備在沒有CPU幫助下直接訪問內存的橋樑。這有助於減少處理器的負載。
ipack - Ipack代表的是IndustryPack。 這個驅動是一個虛擬匯流排,允許在載體和夾板之間操作。
irqchip - 這些驅動程序允許硬體的中斷請求(IRQ)發送到處理器,暫時掛起一個正在運行的程序而去運行一個特殊的程序(稱為一個中斷處理程序)。
isdn - 這些驅動用於支持綜合業務數字網(ISDN),這是用於同步數字傳輸語音、視頻、數據和其他網路服務使用傳統電話網路的電路的通信標準。
leds - 用於LED的驅動。
lguest - lguest用於管理客戶機系統的中斷。中斷是CPU被重要任務打斷的硬體或軟體信號。CPU接著給硬體或軟體一些處理資源。
macintosh - 蘋果設備的驅動在這個文件夾里。
mailbox - 這個文件夾(pl320-pci)中的驅動用於管理郵箱系統的連接。
md - 多設備驅動用於支持磁碟陣列,一種多塊硬碟間共享或複製數據的系統。
media - 媒體驅動提供了對收音機、調諧器、視頻捕捉卡、DVB標準的數字電視等等的支持。驅動還提供了對不同通過USB或火線埠插入的多媒體設備的支持。
memory - 支持內存的重要驅動。
memstick - 這個驅動用於支持Sony記憶棒。
message - 這些驅動用於運行LSI Fusion MPT(一種消息傳遞技術)固件的LSI PCI晶元/適配器。LSI大規模集成,這代表每片晶元上集成了幾萬晶體管、
mfd - 多用途設備(MFD)驅動提供了對可以提供諸如電子郵件、傳真、複印機、掃描儀、印表機功能的多用途設備的支持。這裡的驅動還給MFD設備提供了一個通用多媒體通信埠(MCP)層。
misc - 這個目錄包含了不適合在其他目錄的各種驅動。就像光線感測器驅動。
mmc - MMC卡驅動用於處理用於MMC標準的快閃記憶體卡。
mtd - 內存技術設備(MTD :Memory technology devices)驅動程序用於Linux和快閃記憶體的交互,這就就像一層快閃記憶體轉換層。其他塊設備和字元設備的驅動程序不會以快閃記憶體設備的操作方式來做映射。儘管USB記憶卡和SD卡是快閃記憶體設備,但它們不使用這個驅動,因為他們隱藏在系統的塊設備介面後。這個驅動用於新型快閃記憶體設備的通用快閃記憶體驅動器驅動。
net - 網路驅動提供像AppleTalk、TCP和其他的網路協議。這些驅動也提供對數據機、USB 2.0的網路設備、和射頻設備的支持。
nfc - 這個驅動是德州儀器的共享傳輸層之間的介面和NCI核心。
ntb - 不透明的橋接驅動提供了在PCIe系統的不透明橋接。PCIe是一種高速擴展匯流排標準。
nubus - NuBus是一種32位並行計算匯流排。用於支持蘋果設備。
of - 此驅動程序提供設備樹中創建、訪問和解釋程序的OF助手。設備樹是一種數據結構,用於描述硬體。
oprofile - 這個驅動用於從驅動到用戶空間進程(運行在用戶態下的應用)評測整個系統。這幫助開發人員找到性能問題
parisc - 這些驅動用於HP生產的PA-RISC架構設備。PA-RISC是一種特殊指令集的處理器。
parport - 並口驅動提供了Linux下的並口支持。
pci - 這些驅動提供了PCI匯流排服務。
pcmcia - 這些是筆記本的pc卡驅動
pinctrl - 這些驅動用來處理引腳控制設備。引腳控制器可以禁用或啟用I/O設備。
platform -這個文件夾包含了不同的計算機平台的驅動像Acer、Dell、Toshiba、IBM、Intel、Chrombooks等等。
pnp - 即插即用驅動允許用戶在插入一個像USB的設備後可以立即使用而不必手動配置設備。
power - 電源驅動使內核可以測量電池電量,檢測充電器和進行電源管理。
pps - Pulse-Per-Second驅動用來控制電流脈衝速率。這用於計時。
ps3 - 這是Sony的遊戲控制台驅動- PlayStation3。
ptp - 圖片傳輸協議(PTP)驅動支持一種從數碼相機中傳輸圖片的協議。
pwm - 脈寬調製(PWM)驅動用於控制設備的電流脈衝。主要用於控制像CPU風扇。
rapidio - RapidIO驅動用於管理RapidIO架構,它是一種高性能分組交換,用於電路板上交互晶元的交互技術,也用於互相使用底板的電路板。
regulator - 校準驅動用於校準電流、溫度、或其他可能系統存在的校準硬體。
remoteproc - 這些驅動用來管理遠程處理器。
rpmsg - 這個驅動用來控制支持大量驅動的遠程處理器通訊匯流排(rpmsg)。這些匯流排提供消息傳遞設施,促進客戶端驅動程序編寫自己的連接協議消息。
rtc - 實時時鐘(RTC)驅動使內核可以讀取時鐘。
s390 - 用於31/32位的大型機架構的驅動。
sbus - 用於管理基於SPARC的匯流排驅動。
scsi - 允許內核使用SCSI標準外圍設備。例如,Linux將在與SCSI硬體傳輸數據時使用SCSI驅動。
sfi -簡單固件介面(SFI)驅動允許固件發送信息表給操作系統。這些表的數據稱為SFI表。
sh - 該驅動用於支持SuperHway匯流排。
sn - 該驅動用於支持IOC3串口。
spi - 這些驅動處理串列設備介面匯流排(SPI),它是一個在在全雙工下運行的同步串列數據鏈路標準,。全雙工是指兩個設備可以同一時間同時發送和接收信息。雙工指的是雙向通信。設備在主/從模式下通信(取決於設備配置)。
ssb - ssb(Sonics Silicon Backplane)驅動提供對在不同博通晶元和嵌入式設備上使用的迷你匯流排的支持。
staging - 該目錄含有許多子目錄。這裡所有的驅動還需要在加入主內核前經過更多的開發工作。
target - SCSI設備驅動
tc - 這些驅動用於TURBOchannel,TURBOchannel是數字設備公司開發的32位開放匯流排。這主要用於DEC工作站。
thermal - thermal驅動使CPU保持較低溫度。
tty - tty驅動用於管理物理終端連接。
uio - 該驅動允許用戶編譯運行在用戶空間而不是內核空間的驅動。這使用戶驅動不會導致內核崩潰。
usb - USB設備允許內核使用USB埠。快閃記憶體驅動和記憶卡已經包含了固件和控制器,所以這些驅動程序允許內核使用USB介面和與USB設備。
uwb - Ultra-WideBand驅動用來管理短距離,高帶寬通信的超低功耗的射頻設備
vfio - 允許設備訪問用戶空間的VFIO驅動。
vhost - 這是用於宿主內核中的virtio伺服器驅動。用於虛擬化中。
video - 這是用來管理顯卡和監視器的視頻驅動。
virt - 這些驅動用來虛擬化。
virtio - 這個驅動用來在虛擬PCI設備上使用virtio設備。用於虛擬化中。
vlynq - 這個驅動控制著由德州儀器開發的專有介面。這些都是寬頻產品,像WLAN和數據機,VOIP處理器,音頻和數字媒體信號處理晶元。
vme - WMEbus最初是為摩托羅拉68000系列處理器開發的匯流排標準
w1 - 這些驅動用來控制one-wire匯流排。
watchdog - 該驅動管理看門狗定時器,這是一個可以用來檢測和恢復異常的定時器。
xen - 該驅動是Xen管理程序系統。這是個允許用戶運行多個操作系統在一台計算機的軟體或硬體。這意味著xen的代碼將允許用戶在同一時間的一台計算機上運行兩個或更多的Linux系統。用戶也可以在Linux上運行Windows、Solaris、FreeBSD、或其他操作系統。
zorro - 該驅動提供Zorro Amiga匯流排支持。
via: http://www.linux.org/threads/the-linux-kernel-drivers.4205/
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive