Linux驅動具體是指什么?
原文:https://mp.weixin.qq.com/s/Wt9D8Sj4Dc4Jf7aksAWj6g

經常有同學給我留言,想知道什么是linux驅動開發,具體的工作內容是什么?
這是一個好問題,想做什么確實需要先知道事情本身的內容是什么,才能有的放矢
分析這個問題首先要切分這個問題
什么是驅動?
1: 驅動一詞的字面意思
2: 物理上的驅動
3: 硬件中的驅動
4: linux內核驅動。
軟件層面上的驅動廣義上是指:這一段代碼操作了硬件驅動,所以這一段代碼就叫硬件的驅動程序。
狹義上驅動程序就是專指操作系統中用來操控硬件的邏輯方法的部分代碼。而我們這里講的驅動就指的是這個狹義上的驅動。
驅動的設計思想?
1: 分離、分層思想
2: 驅動的上面是系統調用API
3: 驅動的下面是硬件
4: 驅動本身的實現也是基于分離、分層的思想
驅動的具體分類?
1、驅動分類
(1)分3類:字符設備驅動、塊設備驅動、網絡設備驅動
(2)分類原則:設備本身讀寫操作的特征差異
時刻要注意一點,我們的驅動本質上是不分類的,因為我們的硬件是不同的,有不同的讀寫特性,所以的硬件是分類的,所以我們的驅動也就要跟著分類了。
2、三類驅動程序詳細對比分析
(1)字符設備,準確的說應該叫“字節設備”,軟件操作設備時是以字節為單位進行的。典型的如LCD、串口、LED、蜂鳴器、觸摸屏······
(2)塊設備,塊設備是相對于字符設備定義的,塊設備被軟件操作時是以塊(多個字節構成的一個單位)為單位的。設備的塊大小是設備本身設計時定義好的,軟件是不能去更
改的,不同設備的塊大小可以不一樣。常見的塊設備都是存儲類設備,如:硬盤、NandFlash、iNand、SD····操作塊設備時,我們必須以塊單位進行操作,將一塊的
數據讀取到內存中去,然后在內存中找到相應的那個字節數據修改之后再以一塊的數據寫入到我們的塊設備中去。
(3)網絡設備,網絡設備是專為網卡設計的驅動模型,linux中網絡設備驅動主要目的是為了支持API中socket相關的那些函數工作。
3、為什么字符設備驅動最重要
(1)常見大量設備都屬于字符設備
(2)舉例說明非標準類型字符設備驅動
驅動和內核的關系?
驅動已經成為內核中最龐大的組成部分
內核會直接以函數調用的方式調用驅動代碼
驅動的動態安裝和卸載都會“更改”內核
驅動程序崩潰甚至會導致內核崩潰
驅動的效率會影響內核的整體效率
驅動的漏洞會造成內核安全漏洞
驅動學習資源
驅動學習其實也沒什么特殊的,推薦的方法還是書籍加實踐,還可以參考些不錯的視頻教程
下邊兩本是我看過的很不錯的書籍,基本就夠用了,后臺回復"Linux驅動"獲取電子書
《Linux設備驅動程序》
《linux設備驅動開發詳解》
視頻的話推薦寫百問科技韋東山的教程,從頭開始講的很細
當然還有其他一些視頻也是可以的,不過我個人是不推薦看視頻學習的,比較費時間,大家可以可以根據自己的學習階段選擇合適的方法
獲取更多內容,歡迎一鍵三連
Linux
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。