Linux字符驱动设备

一、字符设备基础

字符设备:是指只能一个字节一个字节进行读写操作的设备,不能随机读取设备中的某一数据、读取数据要按照先后数据。
字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和LED等。

一般每个字符设备或者块设备都会在/dev目录(可以是任意目录,这样是为了统一)下对应一个设备文件。linux用户层程序通过设备文件来使用驱动程序操作字符设备或块设备。

二、字符设备驱动与用户空间访问该设备的程序三者之间的关系

设备包括字符设备、块设备、网络设备。
字符设备是3大类设备中较简单的一类设备,其驱动程序中完成的主要工作是初始化、添加和删除 struct cdev 结构体,申请和释放设备号,以及填充 struct file_operations 结构体中断的操作函数,实现 struct file_operations 结构体中的read()、write()和ioctl()等函数是驱动设计的主体工作。

如下图,在Linux内核代码中:
在这里插入图片描述
使用struct cdev结构体来抽象一个字符设备;
通过一个dev_t类型的设备号(分为主设备号(major)、次设备号(minor))一确定字符设备唯一性
通过struct file_operations类型的操作方法集来定义字符设备提供个VFS的接口函数。

发布了83 篇原创文章 · 获赞 55 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45380951/article/details/102239257