linux
字符设备驱动设计与实现
TDLCD(Test Device For Linux Char Drives)
的设计
- 主要参考
Linux Device Drives
第三章-字符设备驱动程序中的scull(Simple Chararter Utility for Loading Localities)
TDLCD
实现步骤
-
字符设备结构定义与初始化
定义设备结构体,并完成结构初始化函数 -
申请字符设备号
动态申请主、次设备号 -
完成字符设备的注册与消除函数
-
实现驱动方法
llseek
方法read
方法write
方法ioctl
方法open
方法release
方法
结构设计
模块部分
1 |
宏定义及头文件
1 |
|
字符设备结构设计
为设备定义一个结构体,包含cdev
,私有数据及锁等相关信息。
1 | struct tdlcd_dev{ |
file_operations
结构设计
将自实现的驱动方法函数传递给结构
1 | static const struct file_operations tdlcd_fops={ |
字符设备模块的加载与卸载函数
-
static int __init tdlcd_init(void);
- init cdev
- get char device number
- register devices
-
static void __exit tdlcd_exit(void);
- release devices
- release device number
Makefile
1 | KVERS = $(shell uname -r) |