嵌入式Linux設備驅動(dòng)開(kāi)發(fā)之:設備驅動(dòng)概述
11.1.5設備驅動(dòng)程序與外界的接口
每種類(lèi)型的驅動(dòng)程序,不管是字符設備還是塊設備都為內核提供相同的調用接口,因此內核能以相同的方式處理不同的設備。Linux為每種不同類(lèi)型的設備驅動(dòng)程序維護相應的數據結構,以便定義統一的接口并實(shí)現驅動(dòng)程序的可裝載性和動(dòng)態(tài)性。Linux設備驅動(dòng)程序與外界的接口可以分為如下3個(gè)部分。
n 驅動(dòng)程序與操作系統內核的接口:這是通過(guò)數據結構file_operations(在本書(shū)后面會(huì )有詳細介紹)來(lái)完成的。
n 驅動(dòng)程序與系統引導的接口:這部分利用驅動(dòng)程序對設備進(jìn)行初始化。
n 驅動(dòng)程序與設備的接口:這部分描述了驅動(dòng)程序如何與設備進(jìn)行交互,這與具體設備密切相關(guān)。
它們之間的相互關(guān)系如圖11.2所示。
圖11.2設備驅動(dòng)程序與外界的接口
11.1.6設備驅動(dòng)程序的特點(diǎn)
綜上所述,Linux中的設備驅動(dòng)程序有如下特點(diǎn)。
(1)內核代碼:設備驅動(dòng)程序是內核的一部分,如果驅動(dòng)程序出錯,則可能導致系統崩潰。
(2)內核接口:設備驅動(dòng)程序必須為內核或者其子系統提供一個(gè)標準接口。比如,一個(gè)終端驅動(dòng)程序必須為內核提供一個(gè)文件I/O接口;一個(gè)SCSI設備驅動(dòng)程序應該為SCSI子系統提供一個(gè)SCSI設備接口,同時(shí)SCSI子系統也必須為內核提供文件的I/O接口及緩沖區。
(3)內核機制和服務(wù):設備驅動(dòng)程序使用一些標準的內核服務(wù),如內存分配等。
(4)可裝載:大多數的Linux操作系統設備驅動(dòng)程序都可以在需要時(shí)裝載進(jìn)內核,在不需要時(shí)從內核中卸載。
(5)可設置:Linux操作系統設備驅動(dòng)程序可以集成為內核的一部分,并可以根據需要把其中的某一部分集成到內核中,這只需要在系統編譯時(shí)進(jìn)行相應的設置即可。
(6)動(dòng)態(tài)性:在系統啟動(dòng)且各個(gè)設備驅動(dòng)程序初始化后,驅動(dòng)程序將維護其控制的設備。如果該設備驅動(dòng)程序控制的設備不存在也不影響系統的運行,那么此時(shí)的設備驅動(dòng)程序只是多占用了一點(diǎn)系統內存罷了。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)linux相關(guān)文章:linux教程
評論