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

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

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

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 等函数。

相关推荐
编程圈子8 小时前
电机驱动开发学习21. R3_2 双相扇区电流采样与第三相重构
驱动开发·学习·重构
小此方10 小时前
Re:Linux系统篇(四十八)线程篇 · 一:线程概念的初步认识
linux·运维·驱动开发
sukalot10 小时前
windows网络适配器驱动开发-双 STA 连接(下)
windows·驱动开发·stm32
编程圈子1 天前
电机驱动开发学习20. 霍尔有感 SVPWM FOC 速度闭环
驱动开发·学习
王莎莎-MinerU1 天前
别让 Agent 重读 PDF:文档解析要交付可缓存资产
网络·数据库·人工智能·驱动开发·缓存·pdf·ocr
木木_王2 天前
嵌入式学习 | STM32 裸板驱动开发(Day06) | DHT11温湿度传感器超详解(单总线时序+全套驱动代码+智能温湿度报警项目)
驱动开发·stm32·学习
sukalot2 天前
windows网络适配器驱动开发-WiFiCx 低延迟连接质量
驱动开发
dok123 天前
Johannes 《Linux内核模块与设备驱动开发:编写Linux驱动程序》(2)better hello
linux·运维·驱动开发
sukalot4 天前
windows网络适配器驱动开发-WiFiCx WPA3-SAE 身份验证
驱动开发
charlie1145141914 天前
RK3506B — SD启动移植,上电零输入到 shell
驱动开发·开源项目