字符设备驱动开发基础实验

应用程序和驱动的交互原理

驱动的本质:获取外设或者传感器数据,或者控制外设(比如开关)。数据提交给应用程序。

Linux驱动编写既要编写一个驱动,又要编写一个简单的测试应用程序,app。

Linux的存储分为用户空间和内核空间。

Linux 操作系统的内核和驱动程序运行在内核空间,应用程序运行在用户空间。(为了安全所以分为两个空间)

应用程序想要访问 内核资源,可以使用:系统调用,异常(中断)和陷入。 系统调用处于内核空间,应用程序无法直接访问,因此需要"陷入"到内核,方法就是软中断,陷入内核以后还有指定系统调用号。

字符驱动设备开发流程

在 Linux 里面一切皆是文件,驱动设备表现就是一个 /dev/ 下的文件,比如、dev/led。应用程序调用 opne 函数打开设备,比如 led ,应用程序通过 write 函数向 /dev/led 写数据,比如写 1 表示打开,写 0 表示关闭。如果关闭设备那么就是close 函数。

编写驱动的时候也需要编写驱动对应的 open ,close ,write 函数。字符设备驱动 fileoptions_struct.

1、驱动最终都是被应用调用的,在写驱动的时候要考虑应用开发的便捷性。

2、驱动是分驱动框架的,要按照驱动框架来编写,对于字符设备驱动来说,重点编写应用程序对应的 opne、close、read、wirte 等函数。

相关推荐
小此方16 小时前
Re:Linux系统篇(二十四)进程篇·九:进程从创建到退出的底层机制与写时拷贝全解
linux·运维·驱动开发
都在酒里16 小时前
Linux字符设备驱动开发(九):内核定时器——实现LED周期性闪烁与轮询驱动原理
linux·运维·驱动开发·交互
都在酒里17 小时前
Linux字符设备驱动开发(十):综合实例——I2C传感器 + LED智能控制与进阶指南
linux·运维·服务器·驱动开发·交互
hai3152475431 天前
RISC-V核E203核前向旁路的架构性顽疾
驱动开发·架构·硬件架构·硬件工程·risc-v
hai3152475431 天前
RISC-V CVA6 AXI适配器+DMA桥蜂鸟E203处理器的总线接口单元(BIU)仲裁器
驱动开发·fpga开发·硬件架构·硬件工程·精益工程
都在酒里1 天前
Linux字符设备驱动开发(七):输入子系统——驱动GPIO按键并上报事件
linux·驱动开发·交互
nLif1 天前
基于FUSE的文件系统过滤驱动开发方法
驱动开发
都在酒里2 天前
Linux字符设备驱动开发(八):中断底半部——tasklet与工作队列实现按键消抖
linux·运维·驱动开发·交互
枳实-叶2 天前
【Linux驱动开发】第17天:I2C子系统整体架构
linux·驱动开发·架构
智者知已应修善业2 天前
【proteus仿真CD4511抢答器4路】2024-5-13
驱动开发·经验分享·笔记·硬件架构·proteus·硬件工程