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

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

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

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

相关推荐
2401_862880827 小时前
iMX6ULL 驱动工程搭建 + LED 灯驱动
c语言·驱动开发·嵌入式硬件
硅基手札12 小时前
【串口技术系列文档 07】UART控制器寄存器详解
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
硅基手札13 小时前
【串口技术系列文档 09】FIFO管理与流控
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
硅基手札13 小时前
【串口技术系列文档 08】中断驱动vs轮询vs DMA
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
傲世仙尊15 小时前
inline与nullptr-从宏的坑到符号表的真相
驱动开发
gwf2161 天前
RDMA事件与异步通知机制:CMA事件与设备事件深度解析
驱动开发·linux内核·rdma·rdma_cm·异构计算·异步事件·cve分析
万物智能信息科技1 天前
温湿度传感器驱动开发—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
人工智能·驱动开发·华为·开源·harmonyos·鸿蒙
硅基手札2 天前
【串口技术系列文档 04】UART协议深度解析
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
kakakahahahaha2 天前
Windows 10禁用自动更新:gpedit、services.msc、计划任务与风险边界
windows·驱动开发·电脑·笔记本电脑·软件需求·windows系统更新
sukalot2 天前
Windows 驱动实例分析系列:injdrv 驱动分析 - src篇(三)
windows·驱动开发