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