Linux驱动 混杂设备
混杂设备的定义
定义: 在Linux驱动当中把无法归类的五花八门的设备定义为混杂设备(用miscdevices结构体),简化字符设备创建的流程,混杂设备也是字符设备,它可以替代字符设备的设计模型。
查看混杂设备的方式
- 进入
/sys/class/misc目录 然后使用Linux指令 ls 查看。
[root@GEC6818 misc]# ls
CEC android_adb_enable device-mapper psaux
HPD apm_bios mtp_usb s3c-jpg
alarm ashmem network_latency s3c-mfc
android_adb cpu_dma_latency network_throughput sec-g2d
- 进入
/dev目录 然后使用Linux指令 ls 或 ls -l查看。
[root@GEC6818 /dev]# ls -l
total 0
crw-rw---- 1 root root 10, 242 Jan 1 12:00 CEC
crw-rw---- 1 root root 10, 243 Jan 1 12:00 HPD
crw-rw---- 1 root root 10, 59 Jan 1 12:00 alarm
crw-rw---- 1 root root 10, 62 Jan 1 12:00 android_adb
crw-rw---- 1 root root 10, 61 Jan 1 12:00 android_adb_enable
crw-rw---- 1 root root 10, 134 Jan 1 12:00 apm_bios
crw-rw---- 1 root root 10, 63 Jan 1 12:00 ashmem
- 混杂设备的主设备号默认为10,我们也可以
\Documentation\devices.txt。
混杂设备的设计模型(流程)
字符设备的设计模型:
1.定义一个cdev
2.申请设备号
.静态注册
.MKDEV
.register_chrdev_region
.动态注册
.alloc_chrdev_region
3.定义file_operations,并且初始化
4.cdev初始化
.cdev_init
5.将cdev加入到内核
.cdev_add
6.创建设备文件
.手动创建设备文件,去/dev目录进行创建
.自动创建
混杂设备函数接口
- 注册混杂设备到内核
int misc_register(struct miscdevice * misc);
参数说明:
misc: 设备号
- 注销混杂设备函数
int misc_deregister(struct miscdevice *misc);
参数说明:
misc: 设备号