字符设备驱动框架
字符设备是 Linux 驱动中最基础的设备类型,按字节流方式访问,如串口、LED、按键等。
核心数据结构
struct cdev {
struct kobject kobj;
struct module *owner;
const struct file_operations *ops;
struct list_head list;
dev_t dev;
unsigned int count;
};
驱动框架
static struct file_operations fops = {
.owner = THIS_MODULE,
.open = my_open,
.release = my_release,
.read = my_read,
.write = my_write,
};
static int __init my_driver_init(void) {
// 1. 分配设备号
alloc_chrdev_region(&dev, 0, 1, "mydev");
// 2. 初始化 cdev
cdev_init(&my_cdev, &fops);
// 3. 注册设备
cdev_add(&my_cdev, dev, 1);
return 0;
}
总结
掌握字符设备驱动框架是学习 Linux 驱动开发的基础。