linux設備驅動編程-初探(1)--驅動程序概念

------linux設備驅動程序的簡介

之前只是做項目的時候用過一段時間linux,對linux其實不怎麼熟悉,但是大致的操作,編程的方法,工具(eclipse, gcc)方面還是稍微懂一點的,對於我來說,一直使用的是C語言(多數嵌入式系統開發使用),一直想花點時間來好好的學習一下linux下的驅動開發,正好這段時間一直在待業階段,就好好的利用起這段時間來學習一下linux的驅動開發吧。

學習用書----O'REILLY 寫的《LINUX 設備驅動程序》第三版,這本書也是大家所推薦的。

###########################################################

今天花了一個下午,把這本書的前2章看了一下,雖然很多東西不理解,但是有些理解的東西和概念還是有必要在這裏總結一下,幫助自己理解。

設備驅動程序的作用:

據我的理解這個話題可能說起來要講很多,但是簡單的來說,驅動程序的作用就是就是應該處理如何讓硬件可用的問題。

書中一直強調驅動程序的編寫一定要注意【機制】和【策略】的區分。機制就是驅動程序提供的功能;策略則強調的是如何使用這些功能。對於使用,編程驅動程序的人員來說,驅動程序的機制是應該由驅動程序的編寫人員的實現的,至於怎麼樣使用這些機制,則由上層的驅動程序使用人員【上層應用程序】來進行處理。所以,在編寫不帶策略的驅動程序的時候必須要注意一下:同時支持同步和異步的操作,驅動程序能夠被多次打開,充分利用硬件特性,以及不具備用來“簡化任務”的或者提供與策略相關的軟件層。以上幾點的理解:如下簡單的示意圖所示

+-----------------------+
|          App              |
+-----------------------+
|          driver           | ---->Kernel部分
+-----------------------+
|        hardware       |
+-----------------------+

圖示中App層負責組織策略,調用driver提供的接口(API),使之能更有效的使用硬件的相關功能。其中driver部分應該屬於OS的一部分,隨OS一起發行,對於在linux系統中,程序員可以自己向linux系統內核添加功能,當然也可以移除該功能。

設備驅動程序的作用:

1.對設備初始化和釋放;

2.把數據從內核傳送到硬件和從硬件讀取數據.;

3.讀取應用程序傳送給設備文件的數據和回送應用程序請求的數據.;

4.檢測和處理設備出現的錯誤。

驅動程序與內核

內核功能分成以下幾部分:進程管理,內存管理,文件管理,設備控制,網絡功能。使用insmod程序將模塊連接到正在運行的內核,也可以使用rmmod程序移除連接。linux系統將設備分成三種基本類型:字符模塊,塊設備,網絡模塊。其中字符設備是個能夠像字節流一樣被訪問的設備,由字符設備驅動程序來實現這種特性,一般字符設備驅動程序要實現open,close,read,write等基本的系統調用。塊設備。。。。。網絡接口:負責發送和接受數據包,但是它不需要了解每項事務如何映射到實際傳送的數據包。

系統調用init_module會檢查調用進程是否具有將模塊裝載到內核的權利。

關於許可證條款:

GNU通用公共許可證GPL(General Public License):我們的GNU通用公共許可證決意保證你有發佈自由軟件的自由(如果你願意,你可以對此項服務收取一定的費用);保證你能收到源程序或者在你需要時能得到它;保證你能修改軟件或將它的一部分用於新的自由軟件;而且還保證你知道你能做這些事情。具體的自由軟件方面的版本的知識,請參考相關資料,以後逐步完善。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章