版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35886943/article/details/90073780
首先想要实现一个字符设备,需要以下3步
- 注册设备号
- 初始化字符设备
- 实现需要的文件操作
- 注册设备号
- 主次设备号以及设备ID
一般情况下,设备的注册是在模块加载入口所指向的函数中完成的。
第一步先将主次设备号合成为设备ID,这里需要用到LINUX内核提供的宏MKDEV
- 主次设备号以及设备ID
#include <linux/fs.h> //for MKDEV register_chrdev_region
dev_t devno = MKDEV(LED_MA, LED_MI); //把主次设备号合并生成设备ID
/*****内核中MKDEV宏的实现*******/
#define MINORBITS 20
#define MKDEV(ma,mi) (((ma) << MINORBITS) | (mi))
//作用:将主设备号MA左移20位于次设备号MI相或,最后得到设备ID
/*
| 31~12位 | 11~0位 |
| 主设备号 | 次设备号 |
*/