您好,登錄后才能下訂單哦!
1)首先確定硬件接口使用的總線,
2)然后確定要實現的功能,是網卡、sensor還是什么?再確定對上層應用暴露的接口, 從而選擇子系統,例如iio、input子系統等。由于linux只有字符設備、塊設備、網絡設備三種設備,其實iio、input子系統都是字符設備,只是它們幫你封裝好了字符設備的file_operations和Major設備號了,另外提供統一的sysfs接口(一類sysfs接口)。你只需要按照子系統要求注冊進子系統就行。子系統就像應用和你驅動之間的framework中間層,它幫你處理了很多通用的功能。另外自己再加入一些specific的sysfs接口即可。
確定了上面這些后,你就可以找到對應的例子去抄(參考)了。說白了,linux 內核設計者已經給你搭好了大的框架,你所要思考框架的東西并不多,你需要的是熟悉內核提供了什么框架子系統,如何使用。
什么樣的bus,決定你調用什么總線API去訪問硬件,什么樣的功能決定你用什么樣的子系統來暴露接口給上層應用使用。
關于具體的寫linux驅動的方法、技巧和注意事項,歡迎觀看我的《如何編寫linux設備驅動》的視頻:
https://edu.51cto.com/course/17132.html
另外我的相關培訓視頻請看:
歡迎觀看我發布的各個課程: https://edu.51cto.com/lecturer/8896847.html
另外我的免費的linux各種驅動開發課程如下:
https://edu.51cto.com/course/17138.html
另外注意:
即原則,內核只提供功能和接口,不負責策略和配置,策略和配置應該有具體應用提供。
天下代碼一大抄,鼓勵大家理解的方式抄好的代碼例子。
對各個linux kernel子系統的api函數和重要結構體的熟悉是必須的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。