linux字元裝置驅動開發之MISC

2021-10-01 12:14:24 字數 2465 閱讀 7696

misc 雜項驅動。

雜項驅動其實是字元裝置驅動,巢狀在platform匯流排中,實現複雜的驅動。

當所使用外設無法分類,一般採用misc驅動。

misc驅動固定主裝置號10,次裝置號因不同裝置不同。

misc驅動裝置使用如下結構體描述:

include/linux/miscdevice.h

struct miscdevice  

;

通過如下兩個函式註冊到核心:

extern

intmisc_register

(struct miscdevice *misc)

;extern

intmisc_deregister

(struct miscdevice *misc)

;

相比於傳統字元傳統字串裝置,misc_register函式其實是實現了裝置的註冊+初始化功能;***misc_deregister***函式其實是實現了解除安裝模組+裝置功能。

misc_register

alloc_chrdev_region()

;/* 申請裝置號 */

cdev_init()

;/* 初始化 cdev */

cdev_add()

;/* 新增 cdev */

class_create()

;/* 建立類 */

device_create()

;/* 建立裝置 */

misc_deregister

cdev_del()

;/* 刪除 cdev */

unregister_chrdev_region()

;/* 登出裝置號 */

device_destroy()

;/* 刪除裝置 */

class_destroy()

;/* 刪除類 */

misc 驅動框架 (在platform驅動中加入misc註冊與解除安裝)

/* 裝置結構體 */

struct ***_dev

;struct ***_dev ***dev;

/* 定義個裝置結構體變數 */

static

int***_open

(struct inode *inode,

struct file *filp)

static ssize_t ***_write

(struct file *filp,

const

char __user *buf, size_t cnt, loff_t *offt)

/* * 字元裝置驅動操作集

*/static

struct file_operations ***_fops =

;static

struct miscdevice ***_miscdev =;/*

* misc驅動的 probe 函式

* 驅動與裝置匹配成功以後此函式就會執行

*/static

int***_probe

(struct platform_device *dev)

static

int***_remove

(struct platform_device *dev)

/* 匹配列表 */

static

const

struct of_device_id ***_of_match=

,};module_device_table

(of, leds_of_match);/*

* platform 平台驅動結構體

*/static

struct platform_driver ***_driver =

,.probe = ***_probe,

.remove = ***_remove,};

/* 驅動模組載入 */

static

int __init ***driver_init

(void

)/* 驅動模組解除安裝 */

static

void __exit ***driver_exit

(void

)module_init

(***driver_init)

;module_exit

(***driver_exit)

;module_license

("gpl");

module_author

("tom"

);

驅動載入成功,在/sys/class/misc/中生成相應裝置名稱資料夾。

驅動 linux裝置驅動 字元裝置驅動開發

preface 前面對linux裝置驅動的相應知識點進行了總結,現在進入實踐階段!linux 裝置驅動入門篇 linux 裝置驅動掃盲篇 fedora下的字元裝置驅動開發 開發乙個基本的字元裝置驅動 在linux核心驅動中,字元裝置是最基本的裝置驅動。字元裝置包括了裝置最基本的操作,如開啟裝置 關閉...

Linux驅動開發之字元裝置驅動例項

1 驅動標頭檔案mem dev.h ifndef memdev h define memdev h ifndef memdev major define memdev major 238 預設的mem的主裝置號 endif ifndef memdev nr devs define memdev nr...

Linux裝置驅動之《字元裝置驅動》

linux裝置中最大的特點就是裝置操作猶如檔案操作一般,在應用層看來,硬體裝置只是乙個裝置檔案。應用程式可以像操作檔案一樣對硬體裝置進行操作,如open close read write 等。下面是乙個字元裝置驅動程式的簡單實現test.c 模組分析 1.初始化裝置驅動的結構體 struct fil...