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...