-
1 # 慕名linux嵌入式
-
2 # 嵌入式軟硬體開發
我做過驅動開發,說說我的看法。本質上說Linux核心開發和Linux驅動開發是不一樣的,或者說驅動開發是核心開發的一部分,因為驅動屬於核心。目前國內驅動開發和核心開發一般是一樣的。有對應linux核心開發工程師和linux驅動開發工程師職位。
核心開發指的是形成linux作業系統的過程,也就是核心開發者向核心中新增資訊使得linux從無到有的過程或者新增新的功能,比如Linux核心在2.6版本核心之前是沒有裝置驅動模型,核心開發者在2.6版本中增加了裝置驅動模型,這屬於linux核心開發。而linux驅動開發指的是使用Linux核心提供的介面,驅動開發者根據實際情況按照核心提供驅動的框架寫相應的驅動並註冊到相應的總線上,進而驅使硬體裝置工作,比如I2C裝置就註冊到i2c總線上,這個i2c匯流排是核心開發者為我們提供的介面,我們只需要呼叫相應介面即可。整個工作流程是:linux應用程式->核心->驅動->硬體。如下圖所示:
多說一點,要進行linux驅動開發,必須學好C語言、能夠看懂電路圖(因為驅動開發需要根據相應的引腳來編寫驅動)需要模電和數電知識,linux作業系統知識,linux應用程式設計知識(多程序、多執行緒、檔案io操作)因為我們要測試寫的驅動能否正常工作需要linux應用程式設計知識。最好對資料結構中的連結串列有所瞭解,核心中有大量的核心連結串列。
-
3 # 程式猿來導事
Linux核心包括系統呼叫介面、程序管理、記憶體管理、虛擬檔案系統、網路堆疊、裝置驅動,Linux核心開發就包括上面的每一個模組了。
Linux還分為使用者空間和核心空間,2者基本關係如下圖所示:
Linux驅動開發屬於Linux核心開發的一部分,手機、平板底層LCD、Camera、G-sensor等硬體驅動都需要Linux驅動開發來完成。作為驅動工程師需要掌握如下Linxu驅動開發:
1.Linux系統下的Uboot移植2.Linux系統下的kernel移植3.Linux
系統下的各外設驅動開發字元裝置驅動
lcd裝置驅動程式
觸控式螢幕裝置驅動程式
input輸入子系統驅動
Camear驅動開發
塊裝置驅動、Audio驅動、USB驅動開發等
-
4 # linux技術棧
Linux裝置驅動需要使用核心API來實現,一般被包含在Linux核心原始碼樹中。驅動可以編譯到核心,隨著核心一起在系統啟動的時候被載入。也可以編譯成核心模組,在系統執行起來之後動態地載入到核心中,使得除錯的時候無需重新編譯核心,也無需重啟系統,很大程度上方便了驅動程式碼的除錯。但並不是只有裝置驅動才能編譯成模組,有些核心功能的實現也可以,以便在需要的時候再載入,比如核心中檔案系統的實現、加密及校驗的實現、網路協議棧的實現等等。
平時你聽到的驅動開發一般指的是開發系統外圍裝置的驅動,使得裝置能被核心操控,如USB主從裝置、Flash裝置驅動、I2C裝置驅動、LCD裝置驅動、網路裝置驅動。平時你聽到的核心開發一般就指除了裝置驅動之外的開發了,比如Linux系統啟動流程、程序管理、記憶體管理、時間管理、系統呼叫、檔案系統等,但這些部分也在很大程度上被所謂的“驅動開發”所用。
所以,實際上驅動開發只是核心開發的一部分。
linux核心原始碼研習與專案實戰學習地址:https://ke.qq.com/course/431590?flowToken=1013767
回覆列表
還沒學到驅動,大致的說一下吧,驅動是建立在核心之上來開發的,比如你寫了一個驅動的程式碼,那就要把驅動載入到核心中去,然後核心去執行,為什麼需要核心,我個人的理解就是,核心是來管理硬體資源的,你寫的驅動程式碼是來驅動硬體的,核心不可能去驅動硬體的,當然包括管理程序,這部分的事情由驅動去做,驅動可以理解為一個程序,核心負責來管理,結構就是:應用程式->核心(比如系統呼叫write,read等等)->驅動程式(比如write來驅動磁碟來寫)。
換句話說就是對於驅動開發,不知道樓主是否學過微控制器,可以理解驅動就是一個驅動硬體的過程,就像微控制器一樣,當然再發過程中還是有很大的區別的。
核心開發,這個工作還真不是一般的人能開發的,不然linux核心的維護就不會給linux之父了,核心的開發就是用一種方法來合理的管理並分配硬體資源,比如記憶體的管理就用到分頁的方法,還有一些磁碟的管理,程序的管理,cpu的排程演算法(比如簡單的FIFO,時間片)等等,在學習核心前做好把作業系統原理看一下,這本書還可以:
我學習的時候結合了國外的作業系統原理第七版,因為這兩本書介紹的側重點有所不同,上圖的書注重實踐性(相比後一本),後一本注重演算法方面。
額。。說偏了哈,反正總有一天樓主估計是想開發核心的,所以建議先把原理學會,還有最基本的計算機科學基礎知識最好學的紮實點,到時學習核心就不是特別吃力,當然是相比什麼都不懂的情況下。