4、Linux驅動開發之四:字符設備驅動


一、字符設備驅動概念

字符設備就是一個一個字節,按照字節流進行讀寫操作的設備,讀寫數據是分先後順序的。比如我們最常見的串口、SPI、LCD、鍵盤等等都是字符設備,這些設備的驅動就叫做字符設備驅動。


二、驅動工作模式層級流程圖

從應用到底層,各個層級之間函數調用流程、對應關係,如下圖:


三、驅動知識點思維導圖

在這裏插入圖片描述

3.1 設備號

**備註:輸入命令“cat /proc/devices”可以查看當前已經被使用掉的設備號 **

主設備號:

次設備號:

3.2 設備名

3.3 設備操作函數集合:file_operations結構體

驅動中實現對設備操作的具體函數,都在內核中的file_operations這個結構體中定義好了。我們需要什麼功能或者說需要對驅動設備進行什麼操作,只需要實現具體對應的函數內容即可。

該結構體非常重要:

當我們在實現一個驅動的時候,主要有如下步驟:

(1)首先需要分析需求,即:我們需要對驅動設備進行哪些操作,比如打開設備、關閉設備、讀設備、寫設備等。

(2)確定好要實現的所有功能需求後,然後在file_operations結構體查找適合的函數指針,並逐一實現這些指針對應的功能函數。

(3)最後,將實現的每個函數賦值給file_operations結構體中對應的指針即可。


三、字符設備驅動框架思維導圖

3.1 【舊字符驅動代碼框架】思維導圖

舊字符設備驅動代碼框架所用到的主要函數、結構體等如下:


實現框架流程如下圖:
在這裏插入圖片描述

3.2 【新字符驅動代碼框架】思維導圖


四、驅動常用命令

4.1 驅動模塊加載 & 卸載

insmod xxx.ko
rmmod xxx

4.2 創建節點命令

mknod /dev/xxx c 主設備號 次設備號
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章