"); //-->

定义一个misc 设备,一般只需要填充minor、name、fops 这三个成员变量。
minor指次设备号,可以从“内核源码/include/linux/miscdevice.h”文件中预定义的次设备号挑选,也可以自行定义子设备号(没有被其他设备使用即可),通常情况下将该参数设置为MISC_DYNAMIC_MINOR,表示自动分配子设备号。
name表示misc设备的名字。misc设备驱动注册成功之后,会在dev目录下生成名为name的设备节点。
fops 指向了file_operations的结构体,表示字符设备的操作集合。
13.2 杂项设备的注册和卸载
不同于字符设备的注册和卸载的繁琐,杂项设备的注册可以直接使用函数misc_register函数来完成,杂项设备的卸载可以直接使用misc_deregister函数来完成。上述两个函数均定义在“内核源码/include/linux/miscdevice.h”文件当中。
杂项设备的注册:
函数原型:
int misc_register(struct miscdevice *misc)
函数作用:
基于misc_class构造一个设备,将miscdevice结构挂载到misc_list列表上,并初始化与linux设备模型相关的结构。进而起到杂项设备注册的作用。
参数含义:
misc: 杂项设备的结构体指针
函数返回值:申请成功返回0,申请失败返回负数
杂项设备的卸载:
函数原型:
int misc_deregister(struct miscdevice *misc)
函数作用:
从mist_list中删除miscdevice,进而起到杂项设备卸载的作用。
参数含义:
misc: 杂项设备的结构体指针
**函数返回值:**卸载成功返回0,申请失败返回负数
至此,注册和卸载杂项设备的API函数就讲解完成了,会在接下来的驱动章节中对上述函数进行具体使用。
13.3 杂项设备驱动框架
MISC驱动一般使用以下结构:

13.4 实验程序的编写
本实验对应的网盘路径为:iTOP-RK3568开发板【底板V1.7版本】\03_【iTOP-RK3568开发板】指南教程\02_Linux驱动配套资料\04_Linux驱动例程\08。
本小节将编写最简单的misc驱动,在驱动入口函数中通过misc_register(…)函数注册杂项设备驱动,在驱动出口函数中通过misc_deregister(…)函数注销杂项设备驱动。编写完成的miscdevice.c代码如下所示:

在上一小节中的miscdevice.c代码同一目录下创建 Makefile 文件,Makefile 文件内容如下所示:

Makefile保存退出之后,来到存放miscdevice.c和Makefile文件目录下,如下图(图13-1)所示:

然后使用命令“make”进行驱动的编译,编译完成如下图(图 13-2)所示:

编译完生成 miscdevice.ko目标文件,如下图(图 13-3)所示:

至此我们的驱动模块就编译成功了,下面进行驱动的运行测试。

可以看到驱动加载之后,打印“misc registe is succeed”,说明misc驱动注册成功。输入以下命令查看加载的驱动模块,驱动加载成功如下(图13-5)所示:

然后来到/sys/class/misc目录下,可以看到名为“test”的文件夹已经被创建了,在/sys/class/misc目录下有misc类的所有设备,每个注册的杂项设备对应一个文件夹目录,如下图(图13-6)所示:

驱动加载成功之后会生成/dev/test设备驱动文件,输入以下命令查看杂项设备的主次设备号。

结果如下图(图 13-8)所示:

从上图可以看出,/dev/test这个杂项设备的主设备号为10,次设备号为53,最后可以使用以下命令对驱动进行卸载,卸载完成如下图(图 13-9)所示:

更多内容:B站搜索迅为RK3568开发板
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
出一个全新正点原子STM32战舰开发板,全新板二手价
6TOPS算力驱动30亿参数LLM,米尔RK3576部署端侧多模态多轮对话
当6 TOPS不再是极限:米尔RK3576 + Hailo-8,让高帧率摄像头真正“实时”
莱迪思联手英伟达推出 Sensor Bridge 方案 加速边缘 AI 产品落地
在米尔FPGA上实现Tiny YOLO V4,助力AIoT应用
AN2131开发板原理图.rar
AM3359支持WINCE7.0
拆解:树莓派5 8 GB AI 套件
单片机开发板
51单片机开发板
Badge USB OCD 与 78F0513D 使用演示视频
国产FPGA SoC芯选择,米尔安路飞龙核心板重磅发布
NEC MCU 78F0513D开发板使用教程
米尔出席openEuler Summit 2024,携全志T536和RK3562核心模组亮相
慕尼黑电子展上展出的开发板(还有3D 打印机等~)
SL811HS开发板原理图.rar
(已送出,结贴)送一块51开发板,你出邮费
CY7C68013开发板原理图.rar
米尔-瑞萨RZ/G2L核心板开发板的系统启动时间优化应用笔记
ARM嵌入式系统开发板三星S3C44B0X的完整Protel电路图.rar
Kinetis K60系列MCU开发板CFUMEVK-KIT
3G高分辨率平板开发板设计方案
利用PIC24F Curiosity开发板简化设计
Jobs芯科EFR32xG24 Dev Kit开发板开箱视频
Microchip PIC24FJ256DA210开发板在图形显示上的应用
米尔出席2025安路科技FPGA技术沙龙
CFUMEVK-KIT开发板设计方案
建议王总组织个开发板的捐赠活动
12路1080P高清视频流,米尔RK3576开发板重塑视频处理极限
GWEVB_XC蓝牙设备开发板