本文摘自(偶有較小改動)《linux 裝置驅動開發詳解》(宋寶華 編著;人民郵電出版社;),留作紀念。
——living park
第1章 裝置驅動概述
1.1 裝置驅動的作用
沒有硬體的軟體是空中樓閣,而沒有軟體的硬體則是一堆廢鐵。
計算機系統的軟硬體互相成就了對方。
對裝置驅動最通俗的解釋就是「驅動硬體裝置行動」 。
驅動工程師必須按照相應的架構設計裝置驅動,這樣,裝置驅動才能良好的整合到作業系統的核心中。
1.2 無作業系統時的裝置驅動
並不是任何乙個計算機系統都一定要執行作業系統,在許多情況下作業系統是不必要的。
乙個無限迴圈中夾雜對裝置中斷的檢測或者對裝置的輪詢是這種系統中軟體的典型架構。
1.3 有作業系統時的裝置驅動
當系統中存在作業系統的時候,裝置驅動變成了連線硬體和核心的橋梁,它對外呈現為作業系統的api,不再給應用軟體工程師直接提供介面。
作業系統通過給裝置驅動製造麻煩來達到給上層應用提供便利的目的。
1.4 linux裝置驅動
1.4.1
裝置的分類及特點
計算機系統硬體主要由cpu、儲存器和外設組成。
驅動針對的物件是儲存器和外設(包括cpu內部整合的儲存器和外設),而不是針對cpu核。linux將儲存器和外設分為3個基礎大類:
l 字元裝置;
l 塊裝置;
l 網路裝置。
字元裝置不經過系統的快速緩衝,而塊裝置經過系統的快速緩衝。
1.4.2
linux裝置驅動與整個軟硬體系統的關係
除網路裝置外,字元裝置與塊裝置都被對映到linux檔案系統的檔案和目錄。
1.4.3
編寫linux裝置驅動的技術基礎
1.4.4
linux裝置驅動的學習方法
動手實踐永遠是學習任何軟體開發的最好方法。
1.5裝置驅動的hello world: led驅動
1.5.1
無作業系統時的led驅動
在嵌入式系統的設計中,led一般直接由cpu的gpio(通用可程式設計的i/o口)控制。gpio一般由兩組暫存器控制,即一組控制暫存器和一組資料暫存器。
1.5.2
linux系統下的led驅動
第1章Linux裝置驅動簡介二
1.2 劃分核心 在 unix 系統中,幾個併發的程序專注於不同的任務.每個程序請求系統資源,比如計算能力,記憶體,網路連線,或者一些別的資源.核心是個大塊的可執行檔案,負責處理所有這樣的請求.儘管不同核心任務間的區別常常不是能清楚劃分,核心的角色可以劃分成下列幾個部分 如圖1.1 1 程序管理 核...
第1章 概述
tcp ip協議族分為四層 鏈路層 網路層 運輸層和應用層,每一層各有不同的責任。在tcp ip中,網路層和運輸層之間的區別是最為關鍵的 網路層 i p 提供點到點的服務,而運輸層 tcp和udp 提供端到端的服務。乙個網際網路是網路的網路。構造網際網路的共同基石是路由器,它們在 i p層把網路連在...
第1章 概述
j a ee j2ee j a企業版或j a企業平台,可以構建企業級的服務應用。j a ee平台包含了j a se平台,並增加了附加類庫,以便支援目錄管理 交易管理和企業級訊息處理等功能。j a me j2me j a微型版或j a小型平台。j a me是一種很小的j a執行環境,用於嵌入式的消費產...