字元裝置入門理解

2021-09-13 20:22:26 字數 584 閱讀 7249

基本字元裝置驅動模型

1.字元裝置驅動程式設計步驟

(1)定義乙個字元裝置結構體struct cdev------用來描述某個字元裝置

(2)初始化字元裝置結構體,struct file_operations檔案操作集合---cdev_init

(3)申請裝置號(id)

(4)註冊字元裝置cdev_add

(5)建立裝置檔案(裝置節點)

(a)手動建立----mknod

(b)自動建立----建立class(建立目錄),在class下建立device   

自動建立class_create  device_create會在/dev下建立乙個裝置檔案且在  /sys/class/  下建立乙個資料夾與檔案

(6)申請io記憶體----為了資源的互斥訪問

(7)對映為虛擬位址   (因為在模組中伸請的是實際位址,要給上層用,所以得虛擬位址

(8)通過虛擬位址操作硬體  

我對字元裝置驅動的理解

實驗要求 編寫簡單的字元裝置驅動模組,能夠支援建立和刪除節點,節點進行讀寫操作時分別列印 you are reading 和 you are writing 思想整理 1.本實驗需要我們編寫乙個驅動程式,如mymodule.c 2.該驅動程式經編譯後生成.ko檔案,使用makefile檔案生成mym...

對linux字元裝置的理解(整體架構)

主要資料結構 struct cdev 通過i節點可以判斷裝置是字元裝置還是塊裝置,並得到裝置號,得到裝置號找到kobject,在通過kobject找到cdev 怎麼通過裝置號找到kobject的,可以通過下面這個資料結構和相關的函式實現 struct kobj map probes 255 stru...

理解scull裝置

scull裝置是乙個操作記憶體的字元裝置,不是真正的裝置,只是向核心註冊為字元裝置,並使用記憶體來訪問資料。當使用者向其中寫資料時,它就申請空閒記憶體來存放使用者資料 當使用者讀取其資料時,便按順序讀取資料。接下來兩個結構貫穿整個驅動,理解它是很必要的。struct scull qset struc...