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

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

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

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

相关推荐
l1t5 小时前
DeepSeek总结的使用 eBPF 和硬件断点跟踪 PostgreSQL
数据库·驱动开发·postgresql
高翔·权衡之境21 小时前
缓存一致性——多核系统的默契之约
驱动开发·嵌入式硬件·安全·缓存·系统安全·信息与通信
charlie1145141911 天前
嵌入式Linux驱动开发——驱动错误处理模式 - 当资源分配失败时该怎么办
linux·运维·驱动开发
charlie1145141912 天前
嵌入式Linux驱动开发——class 和 device 模型 - 自动创建设备节点的幕后机制
linux·运维·驱动开发
枳实-叶2 天前
【Linux驱动开发】第四天:dmesg日志全解+驱动加载失败极速排查
linux·运维·驱动开发
Wallace Zhang2 天前
SimpleFOC源码学习10(v2.3.2) - 电流传感器CurrentSense.cpp与CurrentSense.h
驱动开发·stm32·学习·电流环·simplefoc·foc电机控制
进击的小头2 天前
第21篇:TI DSP 寄存器级开发与库函数开发对比
驱动开发·单片机·嵌入式硬件
高翔·权衡之境2 天前
差错控制——噪声中如何保真?
网络·驱动开发·嵌入式硬件·物联网·软件工程·信息与通信
枳实-叶2 天前
【Linux驱动开发】第5天:字符设备驱动核心原理:主次设备号+cdev+数据拷贝全解
linux·运维·驱动开发