Linux由于其具有內核強大且穩定,易于擴展和裁減,豐富的硬件支持等諸多優點,在嵌入式系統中得到了廣泛的應用。很多嵌入式Linux系統,特別是一些具有與用戶強交互的嵌入式系統,往往需要配備一個特殊設備,此時開發者需要根據實際情況,為自己的特殊設備編寫驅動程序。 Linux設備驅動程序在Linux的內核源代碼中占有很大比例,源代碼的長度日益增加, 主要是驅動程序的增加。操作系統是通過各種驅動程序來駕馭硬件設備,它為用戶屏蔽了各種各樣的設備,驅動硬件是操作系統最基本的功能。本專題主要概述Linux設備驅動框架、驅動程序的配置文件及各種驅動安裝。編寫 Linux 設備驅動程序無疑是一項復雜的工作。設備驅動程序可分為2大類:硬件設備驅動程序和軟件設備驅動程序。硬件設備驅動程序和物理硬件設備相連接,如UART設備或IDE設備,而軟件設備驅動程序則作為低級數據結構間的接口,或硬件設備驅動程序和高級數據結構間的接口。 在Linux操作系統下有3類主要的設備文件類型:塊設備、字符設備和網絡設備。這種分類方法可以將控制輸入/輸出設備的驅動程序與其他操作系統軟件分離開來。系統調用時操作系統內核與應用程序之間的接口,設備驅動程序是操作系統內核與機器硬件之間的接口。設備驅動程序是內核的一部分,它完成以下功能:對設備初始化和釋放、把數據從內核傳送到硬件和從硬件讀取數據、讀取應用程序傳送給設備文件的數據和回送應用程序請求的數據、檢測和處理設備出現的錯誤。 Linux的設備驅動程序可以分為3個主要組成部分,自動配置和初始化子程序,負責監測所要驅動的硬件設備是否存在和能否正常工作。服務于I/O請求的子程序,又稱為驅動程序的上半部分。調用這部分程序是由于系統調用的結果。中斷服務子程序,又稱為驅動程序的下半部分。在Linux系統中,并不是直接從中斷向量表中調用設備驅動程序的中斷服務子程序,而是由Linux系統來接收硬件中斷,再由系統調用中斷服務子程序。在Linux系統里,對中斷的處理是屬于系統核心部分,因而如果設別與系統之間以中斷方式進行數據交換,就必須把該設備的驅動程序作為系統核心的一部分。
|