linux驅(qū)動基礎(chǔ)開發(fā)入門

linux驅(qū)動基礎(chǔ)開發(fā)入門

ID:22845338

大?。?33.22 KB

頁數(shù):24頁

時間:2018-11-01

linux驅(qū)動基礎(chǔ)開發(fā)入門_第1頁
linux驅(qū)動基礎(chǔ)開發(fā)入門_第2頁
linux驅(qū)動基礎(chǔ)開發(fā)入門_第3頁
linux驅(qū)動基礎(chǔ)開發(fā)入門_第4頁
linux驅(qū)動基礎(chǔ)開發(fā)入門_第5頁
資源描述:

《linux驅(qū)動基礎(chǔ)開發(fā)入門》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫

1、目前,Linux軟件工程師大致可分為兩個層次:?(1)Linux應用軟件工程師(ApplicationSoftwareEngineer):主要利用C庫函數(shù)和LinuxAPI進行應用軟件的編寫;從事這方面的開發(fā)工作,主要需要學習:符合linuxposix標準的API函數(shù)及系統(tǒng)調(diào)用,linux的多任務編程技巧:多進程、多線程、進程間通信、多任務之間的同步互斥等,嵌入式數(shù)據(jù)庫的學習,UI編程.?QT、miniGUI等。(2)Linux固件工程師(FirmwareEngineer):主要進行Bootloader、Linux的移植及Linux設(shè)備驅(qū)動程序

2、的設(shè)計工作。一般而言,固件工程師的要求要高于應用軟件工程師的層次,而其中的Linux設(shè)備驅(qū)動編程又是Linux程序設(shè)計中比較復雜的部分,宂其原因,主要包拈如下幾個方面:1)設(shè)備驅(qū)動屬于Linux內(nèi)核的部分,編寫Linux設(shè)備驅(qū)動需要有一定的Linux操作系統(tǒng)內(nèi)核基礎(chǔ);需要了解部分linux內(nèi)核的工作機制與系統(tǒng)組成2)編寫Linux沒備驅(qū)動需要對硬件的原理有相當?shù)牧私?,大多?shù)情況下我們是針對一個特定的嵌入式硬件平臺編寫驅(qū)動的,例如:針對特定的主機平臺:可能是三星的2410.2440,也可能是atmel的,或者飛思卡爾的等等3)Linux設(shè)備驅(qū)動中

3、廣泛涉及到多進程并發(fā)的同步、互斥等控制,容易出現(xiàn)bug;因為linux本身是一個多任務的工作環(huán)境,不可避免的會出現(xiàn)在同一時刻對同一沒備發(fā)生并發(fā)操作4)由于屬于內(nèi)核的一部分,Linux沒備驅(qū)動的調(diào)試也相當復雜。linux設(shè)備驅(qū)動沒有一個很好的IDE環(huán)境進行單步、變量查看等調(diào)試輔助工具;linux驅(qū)動跟linux內(nèi)核工作在同一層次,一旦發(fā)生問題,很容易造成內(nèi)核的整體崩潰。本系列文章我們將一步步、深入淺出的介紹linux設(shè)備驅(qū)動編程中設(shè)計的一些問題及學習方法,希望對大家學習linux設(shè)備驅(qū)動有所幫助。在任何一個計算機系統(tǒng)中,大至服務器、PC機、小至手

4、機、mp3/mp4播放器,無論是復雜的大型服務器系統(tǒng)還是一個簡單的流水燈單片機系統(tǒng),都離不開驅(qū)動程序的身影,沒有硬件的軟件是空中樓閣,沒有軟件的硬件只是一堆廢鐵,硬件是底層的基礎(chǔ),是所有軟件得以運行的平臺,代碼最終會落實到硬件上的邏輯組合。但是硬件與軟件之間存在一個駁論:為了快速、優(yōu)質(zhì)的完成軟件功能沒計,應用程序工程師不想也不愿關(guān)心硬件,而硬件工程師也很難有功夫去處理軟件開發(fā)中的一些應用。例如軟件工程師在調(diào)用printf的時候,不許也不用關(guān)心信息到底是通過什么樣的處理,走過哪些通路顯示在該顯示的地方,硬件工程師在寫完了一個4*4鍵盤驅(qū)動后,無需

5、也不必管應用程序在獲得鍵值后做哪些處理及操作。也就是說軟件工程師需要看到一個沒有硬件的純軟件世界,硬件必須透明的提供給他,誰來實現(xiàn)這一任務?答案是驅(qū)動程序,驅(qū)動程序從字而解釋就是:“驅(qū)使硬件設(shè)備行動”。驅(qū)動程序直接與硬件打交道,按照硬件設(shè)備的具體形式,驅(qū)動沒備的寄存器,完成沒備的輪詢、中斷處理、DMA通信,最終讓通信設(shè)備可以收發(fā)數(shù)據(jù),讓顯示設(shè)備能夠顯示文字和畫而,讓音頻設(shè)備id■以完成聲音的存儲和播放??梢姡瑳]備驅(qū)動程序充當了硬件和軟件之間的樞紐,因此驅(qū)動程序的表現(xiàn)形式可能就是一些標準的、事先協(xié)定好的API闌數(shù),驅(qū)動工程師只需要去完成相應函數(shù)的

6、填充,應用工程師只需要調(diào)用相應的接口完成相應的功能。無論有沒有操作系統(tǒng),驅(qū)動程序都有其存在價位,只是在裸機怡況下,工作環(huán)境比較簡單、完成的工作較單一,驅(qū)動程序完成的功能也就比較簡單,同時接口只要在小范圍內(nèi)符合統(tǒng)一的標準即可。但是在有操作系統(tǒng)的情況下,此問題就會被放大:硬件來自不同的公司、千變?nèi)f化,全世界每天都會有大量的新芯片被生產(chǎn),大量的電路板被沒計出來,如果沒有一個很好的統(tǒng)一細準去規(guī)范這一程序,操作系統(tǒng)就會被沒計的非常冗余,效率會非常低。所以無論任何操作系統(tǒng)都會制定一套標準的架構(gòu)去管理這些驅(qū)動程序:linux作為嵌入式操作系統(tǒng)的典范,其驅(qū)動架

7、構(gòu)具有很高的規(guī)范性與聚合性,不但把不同的硬件設(shè)備分門別類、綜合管理,并且針對不同硬件的共性進行了統(tǒng)一抽象,將其硬件相關(guān)性降到最低,大大簡化了驅(qū)動程序的編寫,形成了具有其特色的驅(qū)動組織架構(gòu)。下圖反映了應用程序、linux內(nèi)核、驅(qū)動程序、硬件的關(guān)系。系統(tǒng)調(diào)川接I」進程管理內(nèi)存管理文件系統(tǒng)設(shè)備控制并發(fā)、虛擬內(nèi)存文件和nTry和沒多任務錄:VFS備訪問U網(wǎng)絡互連性linux內(nèi)核分為5大部分:多任務管理、內(nèi)存管理、文件系統(tǒng)管理、設(shè)備管理、網(wǎng)絡管理;每一部分都有承上下的作用,對上提供API接口,提供給應用開發(fā)工程師使用;對下通過驅(qū)動程序屏蔽不同的硬件構(gòu)成,

8、完成硬件的具體操作。、、學習linux設(shè)備驅(qū)動首先我們必須明確以下兒個概念,為我們接下來學習linux驅(qū)動打下堅實的基礎(chǔ):應用程序、庫、A核、驅(qū)動程序

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。