使用者空間和核心資料互動
過程總結
本文為朱老師課程學習筆記
驅動實際上是一組(讀寫硬體暫存器的)api的組合
存到乙個結構體裡
file_operations
static
const
struct file_operations i2cdev_fops =
;
函式指標,實際函式的位址
乙個裝置,對應乙個結構體變數
驅動向核心註冊時提供該結構體型別的變數
驅動向核心註冊,上面的結構體file_operations
核心把file_operations,放到陣列裡
//register_chrdev使用示例
//i2c_major主裝置號,傳0代表核心自動分配
res =
register_chrdev
(i2c_major,
"i2c"
,&i2cdev_fops)
;
cat /proc/devices檢視核心中已經註冊的
硬體,被抽象成檔案,放在/dev下
檢視裝置號 ls -l /dev/***
第乙個字母,b塊裝置,c字元裝置
裝置號:8主裝置號,0次裝置號
//kbuf核心空間的
//ubuf使用者空間的
copy_from_user
(kbuf, ubuf, count)
;copy_to_user
(ubuf, kbuf, count)
;
2.6的核心
insmod,調***_init;lsmod,顯示出載入的驅動
在***_init裡呼叫register_chrdev;用cat /proc/devices顯示註冊的裝置及裝置號
建立裝置檔案mknod /dev/*** c字元裝置 主裝置號 次裝置號
應用可以open,並write或read
2 6字元裝置驅動
chardev.c include include for file f op include include for copy to user include for cdev cdev init,cdev add module license gpl module author helight ...
Linux裝置驅動程式學習(1) 字元裝置驅動程式
linux裝置驅動程式學習 1 字元裝置驅動程式 一 分配裝置號 1 對字元裝置的訪問是通過檔案系統內的裝置名稱進行的 dev ttys0 在核心中,include dev t 用來儲存裝置編號 包括主裝置號和次裝置號。由dev t獲得主次裝置號 major dev t dev minor dev ...
《linux裝置驅動》讀書筆記二 字元驅動
1 字元驅動 操作從核心分配的記憶體 2 dev目錄ls l 可以檢視 其中 c 開頭為字元裝置 b 開頭為塊裝置 3 裝置主編號標識驅動 次編號標識具體裝置 4 dev t裝置主次編號結構 前12位主編號 後20位次編號 5 獲取裝置主次編號函式 major dev t dev minor dev...