Linux字符驅動設備

一、字符設備基礎

字符設備:是指只能一個字節一個字節進行讀寫操作的設備,不能隨機讀取設備中的某一數據、讀取數據要按照先後數據。
字符設備是面向流的設備,常見的字符設備有鼠標、鍵盤、串口、控制檯和LED等。

一般每個字符設備或者塊設備都會在/dev目錄(可以是任意目錄,這樣是爲了統一)下對應一個設備文件。linux用戶層程序通過設備文件來使用驅動程序操作字符設備或塊設備。

二、字符設備驅動與用戶空間訪問該設備的程序三者之間的關係

設備包括字符設備、塊設備、網絡設備。
字符設備是3大類設備中較簡單的一類設備,其驅動程序中完成的主要工作是初始化、添加和刪除 struct cdev 結構體,申請和釋放設備號,以及填充 struct file_operations 結構體中斷的操作函數,實現 struct file_operations 結構體中的read()、write()和ioctl()等函數是驅動設計的主體工作。

如下圖,在Linux內核代碼中:
在這裏插入圖片描述
使用struct cdev結構體來抽象一個字符設備;
通過一個dev_t類型的設備號(分爲主設備號(major)、次設備號(minor))一確定字符設備唯一性
通過struct file_operations類型的操作方法集來定義字符設備提供個VFS的接口函數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章