《linux设备驱动》读书笔记二——字符驱动

1、字符驱动:操作从内核分配的内存
2、/dev目录ls -l 可以查看 其中“C”开头为字符设备 ,“B”开头为块设备
3、设备主编号标识驱动 次编号标识具体设备
4、dev_t设备主次编号结构 前12位主编号 后20位次编号
5、获取设备主次编号函数 :

MAJOR(dev_t dev);MINOR(dev_t dev);

6、设置设备主次编号函数:

MKDEV(int major,int minor);

7、cat /proc/devices可以查看系统所有设备以及编号
8、动态分配设备号:

int alloc_chrdev_region(dev_t *dev,unsigned int firstminor,unsigned int count, char *name);

9、回收设备号:

void unregister_chrdev_region(dev_t form,unsigned int count);

10、重要的结构体file_operations,用来存放内核模块对设备的提供的操作的函数指针,通俗说就是把所有要用的函数集合起来。

struct file_operations scull_fops = {
.owner = THIS_MODULE,
.llseek = scull_llseek,
.read = scull_read,
.write = scull_write,
.ioctl = scull_ioctl,
.open = scull_open,
.release = scull_release,
};

11、struct file结构体和flip结构体指针
12、struct cdev指向设备的结构体指针,步骤:
定义一个结构体指向自己的设备;

struct cdev *mydev; 

初始化:

cdev_init(mydev, &my_fops);

告诉内核“你拥有了一个字符设备”

cdev_add(mydev, devno, 1);

猜你喜欢

转载自blog.csdn.net/demondhxq/article/details/79148212
今日推荐