MISC
混合的, 混杂的, 有一些外设不能进行分类的时候就使用MISC驱动, 其实就是最简单的字符驱动, 嵌套在platform之中
所有的MISC设备驱动的主设备号都为10,不同的设备使用不同的从设备号
MISC设备会自动创建cdev,不需要像我们以前那样手动创建
我们需要向Linux注册一个miscdevice设备
struct miscdevice {
int minor;//次设备号
const char *name;
const struct file_operations *fops;//用户填写
struct list_head list;
struct device *parent;
struct device *this_device;
const struct attribute_group **groups;
const char *nodename;
umode_t mode;
};
驱动编写的核心就是初始化file_operations, name就是此MISC设备名字,当此设备注册成功以后就会在/dev目录下生成一个名为name的设备文件
Linux系统已经预定义了一些MISC设备的子设备号,这些预定义的子设备号定义在include/linux/miscdevice.h
文件中, 定义为255===> 动态分配
使用函数向内核注册
int misc_register(struct miscdevice * misc)
misc
:要注册的MISC设备。返回值:负数,失败;0,成功。1 alloc_chrdev_region();/* 申请设备号*/ 2 cdev_init();/* 初始化cdev */ 3 cdev_add();/* 添加cdev */ 4 class_create();/* 创建类*/ 5 device_create();/* 创建设备*/
相当于以上的函数的集合
int misc_deregister(struct miscdevice *misc)
用来卸载, 相当于所有卸载函数的结合