4、Linux驱动开发之四:字符设备驱动


一、字符设备驱动概念

字符设备就是一个一个字节,按照字节流进行读写操作的设备,读写数据是分先后顺序的。比如我们最常见的串口、SPI、LCD、键盘等等都是字符设备,这些设备的驱动就叫做字符设备驱动。


二、驱动工作模式层级流程图

从应用到底层,各个层级之间函数调用流程、对应关系,如下图:


三、驱动知识点思维导图

在这里插入图片描述

3.1 设备号

**备注:输入命令“cat /proc/devices”可以查看当前已经被使用掉的设备号 **

主设备号:

次设备号:

3.2 设备名

3.3 设备操作函数集合:file_operations结构体

驱动中实现对设备操作的具体函数,都在内核中的file_operations这个结构体中定义好了。我们需要什么功能或者说需要对驱动设备进行什么操作,只需要实现具体对应的函数内容即可。

该结构体非常重要:

当我们在实现一个驱动的时候,主要有如下步骤:

(1)首先需要分析需求,即:我们需要对驱动设备进行哪些操作,比如打开设备、关闭设备、读设备、写设备等。

(2)确定好要实现的所有功能需求后,然后在file_operations结构体查找适合的函数指针,并逐一实现这些指针对应的功能函数。

(3)最后,将实现的每个函数赋值给file_operations结构体中对应的指针即可。


三、字符设备驱动框架思维导图

3.1 【旧字符驱动代码框架】思维导图

旧字符设备驱动代码框架所用到的主要函数、结构体等如下:


实现框架流程如下图:
在这里插入图片描述

3.2 【新字符驱动代码框架】思维导图


四、驱动常用命令

4.1 驱动模块加载 & 卸载

insmod xxx.ko
rmmod xxx

4.2 创建节点命令

mknod /dev/xxx c 主设备号 次设备号
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章