Linux驱动 混杂设备

混杂设备的定义

定义: 在Linux驱动当中把无法归类的五花八门的设备定义为混杂设备(用miscdevices结构体),简化字符设备创建的流程,混杂设备也是字符设备,它可以替代字符设备的设计模型。


查看混杂设备的方式

  1. 进入 /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

  1. 进入 /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

  1. 混杂设备的主设备号默认为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: 设备号