驅動程式
此條目沒有列出任何參考或來源。 (2019年2月22日) |
裝置驅動程式(英語:device driver),簡稱驅動程式(driver),是一個允許高階(High level)電腦軟體(computer software)與硬體(hardware)互動的程式,這種程式建立了一個硬體與硬體,或硬體與軟體溝通的介面,經由主機板上的匯流排(bus)或其它溝通子系統(subsystem)與硬體形成連接的機制,這樣的機制使得硬體裝置(device)上的資料交換成為可能。
依據不同的電腦架構與作業系統差異平台,驅動程式經歷了8位元(8-bit)、16位元(16-bit)、32位元(32-bit)、64位元(64-bit)變遷,這是為了調和作業系統與驅動程式之間的依存關係,例如在Windows 3.11的16位元作業系統時代,大部份的驅動程式都是16位元,到了32位元的Windows XP則使用32位元驅動程式(微軟提供了Windows Driver Model可實作driver),至於64位元的Linux或是Windows平台上,就必須使用64位元的驅動程式(WDM與WDF皆可實作64位元驅動程式)。
驅動程式的開發
驅動程式的開發工作是很具挑戰性的,因為必須配合著硬體與軟體上相當明確與高級的平台技術。由於大多數的驅動程式(device drivers)執行在核心模式(kernel mode),軟體的錯誤經常造成系統嚴重的不穩定,例如藍色當機畫面(blue screen),這跟過去的使用者模式(user mode)下的程式設計(例如Delphi、VB、Java)有明顯的差異性。
Windows平台
為了大量減輕驅動程式開發人員的負擔,微軟不斷的改進驅動程式的開發軟體與架構,從早期複雜深晦的VxD,到Windows XP上的Windows Driver Model(以下簡稱WDM)開發架構,如今Windows Driver Foundation(以下簡稱WDF)已成為新一代的Windows平台驅動程式發展架構,這個架構大量簡化了驅動程式的開發流程,更符合物件導向的精神,此架構包含了User Mode Driver Framework與Kernel Mode Driver Framework兩種開發模式。在開發Windows平台上的驅動程式之前,必須先安裝DDK(Driver Development Kit),DDK套件同時支援WDM與WDF兩種架構。
Linux平台
Linux下的裝置有三種基本類型:字元裝置,塊裝置和網路介面。
驅動程式的應用
因為常見的硬體和作業系統的差異性,驅動程式存在著不同的方式。用於:
驅動程式的抽象化共同層級(Common levels of abstraction):
- 在硬體層方面:
- 直接連接(Interfacing directly)
- 使用一些較高層次的介面(如:影片BIOS)
- 使用另一低階別的驅動程式(如檔案系統驅動程式使用磁碟驅動程式)
- 類比硬體工作
- 在軟體層方面:
- 允許作業系統直接存取硬體資源
- 僅實現其原始樣式(primitives)
- 實現對非驅動程式的軟體的介面(如TWAIN)
- 實現一個更高層級的語言,例如PostScript
驅動程式的API
- Advanced Linux Sound Architecture(ALSA) - 標準新式Linux音效卡驅動程式介面(sound driver interface)
- I/O Kit - 一種蘋果電腦(Apple)上的開放式介面適用於發展麥金塔作業系統(Mac OS X)的裝置驅動程式
- Installable File System(IFS) - 一種IBM OS/2與Microsoft Windows NT的檔案系統API
- Network Driver Interface Specification(NDIS) - 一種標準網路卡(network card)驅動程式API
- Open Data-Link Interface(ODI) - 一種類似NDIS的網路卡API
- Scanner Access Now Easy(SANE) - a public domain interface to raster image scanner hardware
- Uniform Driver Interface(UDI) - 跨平台(cross platform)驅動程式的介面規範
- Windows Display Driver Model(WDDM) - Windows Vista及以後平台上新式的圖形顯示(graphic display)驅動程式架構。從Windows 8開始,Windows不支援舊的XPDM。
- Windows Driver Foundation(WDF)
- Windows Driver Model(WDM)
- Universal Windows Driver(UWD)
參見
- Windows Driver Model
- Windows Driver Foundation
- Universal Windows Driver
- 硬體抽象層
- Class driver
- 開源硬體
- 暫存器(Processor register)
- 中斷(interrupt)
- 埠(port)