« Kernel 2.6 核心與模組編譯 | Home | Linux 驅動程式觀念解析, #2: System Calls » Linux 驅動程式觀念解析, #1: 驅動程式的大架構jollen 發表於 May 4, 2006 8:15 AM 本文說明 Linux 驅動程式的整體大架構,並說明基本的三種驅動程式類型。了解 Linux 驅動程式的大架構,絕對是學好驅動程式的第一步。 作者/陳俊宏 Linux 驅動程式的大架構 Linux 驅動程式的整體架構如下:
Linux 驅動程式三類型 Linux device driver 可分成 3 種類型:
驅動程式本身可分成 2 個層面來討論:
Virtual Device Driver 往上層支援 Linux kernel 所提供的 Virtual File System 層,並藉此實作 system calls。使用者可透過 system call interface 與 device driver 溝通。 Virtual device driver 的主題重要性大於 physical device driver,如何善用 Linux 所提供的介面 (interface) 來設計驅動程式,並配合 user application 來設計應用程式是這個主題的重點。與 user application 如何互動,是撰寫驅動程式時所要考慮的重要一環,只考量驅動程式本身的設計,而忽略或輕忽 user application 的設計,是錯誤的觀念。 Virtual device driver 的目的在於善用 Linux 的 APIs 來設計機制 (mechanism) 與行為 (behavior) 良好的驅動程式,因此「觀念」的重要性遠大於「語法」的討論。本書秉持這樣的信念撰寫而成,仔細閱讀絕對是多多益善的。 Physical Device Driver 往下層使用 Linux kernel 所提供的 device interface 來存取並控制實體硬體裝置。 Physical device driver 則是討論「如何透過 I/O port 或 I/O memory」來控制裝置,也就是與晶片組的溝通。這個部份需要實作晶片組的 data sheet,本書會以市面上最容易取得的 BT878 視訊擷取晶片為例做說明。 小結 學習 Linux device driver 應由 character device driver 起步,因為許多重要的入門觀念均可藉由 character device driver 學得。 OS 是設計良好的軟硬體介面,Linux 驅動程式設計即是在學習如何使用 Linux 提供的介面來設計驅動程式。 在 OS 上應使用設計良好的 API 來撰寫驅動程式,使用 OS API 的最大優點是使得驅動程式的設計抽象化 (abstraction),我們可以不需要太深入硬體層次。 Linux kernel 所提供的 API 均經過良好設計,因此使用 kernel 所提供的 API 可以確保系統運行的安全性與穩定性。 --jollen 引用通告如果您想引用這篇文章到您的Blog, |
Top | 授權條款 | Jollen's Forum: Blog 評論、討論與搜尋
Copyright(c) 2006 www.jollen.org