Linux驅動基礎開發1

2021-06-29 05:57:29 字數 2161 閱讀 3630

目前,linux軟體工程師大致可分為兩個層次:

主要利用c庫函式和linux api進行應用軟體的編寫;

從事這方面的開發工作,主要需要學習:符合linux posix標準的api函式及系統呼叫,linux的多工程式設計技巧:多程序、多執行緒、程序間通訊、多工之間的同步互斥等,嵌入式資料庫的學習,ui程式設計:qt、minigui等。

(2)linux韌體工程師(firmware engineer):

主要進行bootloader、linux的移植及linux裝置驅動程式的設計工作。

一般而言,韌體工程師的要求要高於應用軟體工程師的層次,而其中的linux裝置驅動程式設計又是linux程式設計中比較複雜的部分,究其原因,主要包括如下幾個方面:

1)裝置驅動屬於linux核心的部分,編寫linux裝置驅動需要有一定的linux作業系統核心基礎;需要了解部分linux核心的工作機制與系統組成

2)編寫linux裝置驅動需要對硬體的原理有相當的了解,大多數情況下我們是針對乙個特定的嵌入式硬體平台編寫驅動的,例如:針對特定的主機平台:可能是三星的2410、2440,也可能是atmel的,或者飛思卡爾的等等

3)linux裝置驅動中廣泛涉及到多程序併發的同步、互斥等控制,容易出現bug;因為linux本身是乙個多工的工作環境,不可避免的會出現在同一時刻對同一裝置發生併發操作

4)由於屬於核心的一部分,linux裝置驅動的除錯也相當複雜。linux裝置驅動沒有乙個很好的ide環境進行單步、變數檢視等除錯輔助工具;linux驅動跟linux核心工作在同一層次,一旦發生問題,很容易造成核心的整體崩潰。

本系列文章我們將一步步、深入淺出的介紹linux裝置驅動程式設計中設計的一些問題及學習方法,希望對大家學習linux裝置驅動有所幫助。

但是硬體與軟體之間存在乙個駁論:為了快速、優質的完成軟體功能設計,應用程式工程師不想也不願關心硬體,而硬體工程師也很難有功夫去處理軟體開發中的一些應用。例如軟體工程師在呼叫printf的時候,不許也不用關心資訊到底是通過什麼樣的處理,走過哪些通路顯示在該顯示的地方,硬體工程師在寫完了乙個4*4鍵盤驅動後,無需也不必管應用程式在獲得鍵值後做哪些處理及操作。

可見,裝置驅動程式充當了硬體和軟體之間的樞紐,因此驅動程式的表現形式可能就是一些標準的、事先協定好的api函式,驅動工程師只需要去完成相應函式的填充,應用工程師只需要呼叫相應的介面完成相應的功能。無論有沒有作業系統,驅動程式都有其存在價值,只是在裸機情況下,工作環境比較簡單、完成的工作較單一,驅動程式完成的功能也就比較簡單,同時介面只要在小範圍內符合統一的標準即可。但是在有作業系統的情況下,此問題就會被放大:硬體來自不同的公司、千變萬化,全世界每天都會有大量的新晶元被生產,大量的電路板被設計出來,如果沒有乙個很好的統一標準去規範這一程式,作業系統就會被設計的非常冗餘,效率會非常低。

所以無論任何作業系統都會制定一套標準的架構去管理這些驅動程式:

linux作為嵌入式作業系統的典範,其驅動架構具有很高的規範性與聚合性,不但把不同的硬體裝置分門別類、綜合管理,並且針對不同硬體的共性進行了統一抽象,將其硬體相關性降到最低,大大簡化了驅動程式的編寫,形成了具有其特色的驅動組織架構。

下圖反映了應用程式、linux核心、驅動程式、硬體的關係。

linux核心分為5大部分:多工管理、記憶體管理、檔案系統管理、裝置管理、網路管理;

每一部分都有承上下的作用,對上提供api介面,提供給應用開發工程師使用;

對下通過驅動程式遮蔽不同的硬體構成,完成硬體的具體操作。

linux驅動開發教程1

從前天開始學習驅動,感覺不到驅動的精髓。不過隨著時間的流逝我將搞定他。因為我不是特別動如果我寫的不到位的地方希望大家指正,共同進步 裝置驅動 驅動框架 驅動和普通程式的區別在於他是事件驅動 的,也就是說他不是像普通程式那樣從main 執行,從main 結束。因為驅動是以模組的形式 融合 入系統的,系...

驅動開發(1)基礎知識

驅動程式是作業系統和硬體通訊的橋梁,同時,驅動程式可以實現很多特殊功能,比如,虛擬光碟機 虛擬裝置 核心級hook,檔案系統透明加密 過濾驅動 修改windows核心等等 並非所有驅動程式都必須由裝置的設計方編寫。如果裝置根據已發布的硬體標準來設計。這時驅動程式可以由 microsoft 編寫,裝置...

1 驅動基礎

在讀者學習本章之前,最好擁有部分裸機程式基礎 如點亮led arm linux gcc 中斷等 初學者可以檢視 arm裸機加強版 linux將儲存器和外設分為3個基礎大類 1.字元裝置 如led 按鍵 2.塊裝置 如磁碟 3.網路裝置 對於使用者而言,它們都需要使用檔案系統的操作介面open rea...