7.1 介绍
杂项设备是主设备号是10的封装好了的设备。
杂项设备部分初始化文件(强制编译的简单的):drivers/char/ misc.c
7.2 杂项设备注册文件
1.杂项设备注册头文件---------- include/linux/miscdevice.h
结构体miscdevice:
– .minor设备号:一般设为MISC_DYNAMIC_MINOR系统自动取
– .name生成设备节点的名称:取其他名字都行
– .fops指向一个设备节点文件,就是file_operations定义的结构体地址
2.杂项设备内核文件的结构体
设备节点就是新建一个特殊的文件,包含文件名,打开、关闭、其他操作的函数指针。
包含文件结构体的头文件是“include/linux/fs.h ”文件的结构体file_operations:
必选的是参数是
– .owner一般是THIS_MODULE,
– .open打开文件函数
– .release关闭文件函数
这里在必选之外使用参数(为了介绍接下来的GPIO的操作)
– .unlocked_ioctl对GPIO的操作,应用向底层驱动传值
7.3 实验:驱动程序
在probe_linux_module基础上写devicenode_linux_module驱动
加载驱动后在/dev中查看是否生成了设备节点---------让应用程序调用
(从下往上看代码,看调用的一个函数一个函数看)
注:
- 生成设备节点,和设备注册没有关系,而且设备节点名称不需要和设备名称相同。一般情况下,是将设备节点注册放到probe中,但是放到init函数中的驱动也是有的
- Linux设备驱动一般分为:字符设备、块设备和网络设备。– 杂项设备多数是属于字符设备,后续我们将介绍字符设备,杂项设备可以理解为挂载在字符设备上的设备