基本字元裝置驅動模型
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...