06 misc设备
笔记说明¶
这种驱动的特点是不需要自己申请设备号,他的设备号都是10。只是每个设备的子设备号不一样,主要代码修改的位置就是注册设备那一节代码有变化。
主要参考的文章
正点原子《I.MX6U 嵌入式 Linux 驱动开发指南 V1.81》
本节源码路径02_Firmware/06_led_drv_misc
编程流程¶
创建一个misc设备结构体,里面包含设备操作函数信息,注册的名称,子设备号。
/* MISC 设备结构体 */
static struct miscdevice led_miscdev = {
.minor = 144, //子设备号
.name = "led_drv", //注册名称
.fops = &led_fops,
};
然后就是注册设备驱动,这个注册,就不需要cdev,class,device啥的。
/* 注册misc字符设备驱动 */
ret = misc_register(&led_miscdev);
if(ret < 0){
printk("misc device register failed!\r\n");
return -EFAULT;
}
然后就是注销设备驱动。
编译加载¶
参考之前的,有一个问题就是加载不同的设备树,需要重启后加载