《Linux裝置驅動開發詳解(第2版)》——第1章Linux裝置驅動概述及開發環境構建1.1裝置驅動的作用
本節書摘來自非同步社群《Linux 裝置驅動開發詳解(第2版)》一書中的第1章,第1.1節,作者:宋寶華著,更多章節內容可以訪問雲棲社群“非同步社群”公眾號檢視
第1章 Linux裝置驅動概述及開發環境構建
1.1 裝置驅動的作用
Linux 裝置驅動開發詳解(第2版)
任何一個計算機系統的運轉都是系統中軟硬體共同努力的結果,沒有硬體的軟體是空中樓閣,而沒有軟體的硬體則只是一堆廢鐵。硬體是底層基礎,是所有軟體得以執行的平臺,程式碼最終會落實為硬體上的組合邏輯與時序邏輯。軟體則實現了具體應用,它按照各種不同的業務需求而設計,完成了使用者的最終訴求。硬體較固定,軟體則很靈活,可以適應各種複雜多變的應用。可以說,計算機系統的軟硬體互相成就了對方。
但是,軟硬體之間同樣存在著悖論,那就是軟體和硬體不應該互相滲透入對方的領地。為儘可能快速地完成設計,應用軟體工程師不想也不必關心硬體,而硬體工程師也難有足夠的閒暇和能力來顧及軟體。譬如,應用軟體工程師在呼叫套接字傳送和接收資料包的時候,不必關心網路卡上的中斷、暫存器、儲存空間、I/O埠、片選以及其他任何硬體詞彙;在使用printf()函式輸出資訊的時候,他不用知道底層究竟是怎樣把相應的資訊輸出到螢幕或者串列埠。
也就是說,應用軟體工程師需要看到一個沒有硬體的純粹的軟體世界,硬體必須被透明地呈現給他。誰來實現硬體對應用軟體工程師的隱形?這個光榮而艱鉅的任務就落在了驅動工程師的頭上。
對裝置驅動最通俗的解釋就是“驅使硬體裝置行動”。驅動與底層硬體直接打交道,按照硬體裝置的具體工作方式,讀寫裝置的暫存器,完成裝置的輪詢、中斷處理、DMA通訊,進行實體記憶體向虛擬記憶體的對映等,最終讓通訊裝置能收發資料,讓顯示裝置能顯示文字和畫面,讓儲存裝置能記錄檔案和資料。
由此可見,裝置驅動充當了硬體和應用軟體之間的紐帶,它使得應用軟體只需要呼叫系統軟體的應用程式設計介面(API)就可讓硬體去完成要求的工作。在系統中沒有作業系統的情況下,工程師可以根據硬體裝置的特點自行定義介面,如對串列埠定義SerialSend()、SerialRecv(),對LED定義LightOn()、LightOff(),對Flash定義FlashWrite()、FlashRead()等。而在有作業系統的情況下,驅動的架構則由相應的作業系統定義,驅動工程師必須按照相應的架構設計驅動,這樣,驅動才能良好地整合入作業系統的核心。
驅動程式溝通著硬體和應用軟體,而驅動工程師則溝通著硬體工程師和應用軟體工程師。目前,隨著通訊、電子行業的迅速發展,全世界每天都會有大量的新晶片被生產,大量的新電路板被設計,也因此,會有大量裝置驅動需要開發。這些驅動,或執行在簡單的單任務環境,或執行在VxWorks、Linux、Windows等多工作業系統環境,發揮著不可替代的作用。
相關文章
- Linux裝置驅動之字元裝置驅動Linux字元
- Linux驅動開發筆記(四):裝置驅動介紹、熟悉雜項裝置驅動和ubuntu開發雜項裝置DemoLinux筆記Ubuntu
- Linux裝置驅動探究第1天----spi驅動(1)Linux
- 深入淺出:Linux裝置驅動之字元裝置驅動Linux字元
- 乾坤合一:Linux裝置驅動之塊裝置驅動Linux
- 字元裝置驅動 —— 字元裝置驅動框架字元框架
- 蛻變成蝶:Linux裝置驅動之字元裝置驅動Linux字元
- 蛻變成蝶~Linux裝置驅動之字元裝置驅動Linux字元
- Linux塊裝置驅動Linux
- Linux下的硬體驅動——USB裝置(下)(驅動開發部分)(轉)Linux
- Linux裝置驅動開發詳解:基於Linux4.0核心Linux
- Linux裝置驅動程式學習----1.裝置驅動程式簡介Linux
- 乾坤合一:Linux裝置驅動之USB主機和裝置驅動Linux
- 【linux】驅動-7-平臺裝置驅動Linux
- linux裝置驅動中的併發控制Linux
- Linux裝置驅動程式 (轉)Linux
- 【linux】驅動-6-匯流排-裝置-驅動Linux
- linux 裝置驅動基本概念Linux
- SCO UNIX 下裝置驅動程式開發 (轉)
- SCO UNIX 下裝置驅動程式開發(轉)
- 在Linux中,什麼是裝置驅動程式?如何安裝和解除安裝裝置驅動程式?Linux
- Linux裝置驅動開發詳解:入門與程式設計實踐Linux程式設計
- LED字元裝置驅動字元
- LINUX下的裝置驅動程式 (轉)Linux
- 開發Linux系統裝置驅動程式並不難(轉)Linux
- ArmSoM系列板卡 嵌入式Linux驅動開發實戰指南 之 字元裝置驅動Linux字元
- linux裝置驅動編寫入門Linux
- linux裝置驅動編寫基礎Linux
- 驅動Driver-MISC雜項驅動裝置
- Linux驅動實踐:如何編寫【 GPIO 】裝置的驅動程式?Linux
- Windows裝置和驅動的安裝Windows
- 字元驅動裝置踩坑字元
- platform 裝置驅動實驗Platform
- 深入淺出:Linux裝置驅動中的併發控制Linux
- Linux下的硬體驅動——USB裝置(上)(驅動配置部分)(轉)Linux
- Windows NT 裝置驅動程式開發基礎(1) (轉)Windows
- Windows NT 裝置驅動程式開發基礎(3) (轉)Windows
- Windows NT 裝置驅動程式開發基礎(2) (轉)Windows