linux驱动--中断

news2024/12/27 13:29:28

中断号和中断的申请

中断号的添加-----定义设备节点,描述当前设备

通过设备树文件获取
/dts/xxxx.dts文件中进行设备的设置
在这里插入图片描述

在dts设备树文件中进行设备的定义,包括继承的设备,中断号的设置

需要对我们的dts设备树文件进行编译,然后重启开发板,在proc目录下device-tree目录下可以找到我们添加的设备

中断号的申请-----在驱动中通过代码获取中断号,申请中断

驱动代码的框架

在这里插入图片描述

中断号申请流程

1、获取到设备树中的节点
2、通过节点去获取中断号
在这里插入图片描述
加载驱动模块:insomd xxxx.ko
卸载驱动模块:rmmod xxxx.ko

申请中断

int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char * name, void * dev)

参数一:中断号
参数二:中断处理函数
参数三:触发方式(上升沿,下降沿,高电平,低电平)
参数四:中断描述 cat /proc/interrupts 查看当前的中断信息,
参数五:传递给中断处理函数指针的值

在这里插入图片描述

释放中断

void free_irq(unsigned_int irq, void *dev)

参数一:中断号
参数二:和申请中断中第五个参数一致即可

实现字符设备驱动的框架

设定一个全局的设备对象-----描述设备信息

在这里插入图片描述
然后对该设备对象分配空间

在这里插入图片描述

申请主设备号

在这里插入图片描述

在这里插入图片描述
参数一:动态申请
参数二:设备名称
参数三:file_operations

创建设备节点文件

在这里插入图片描述

class_create(owner, name)

参数一:所有者
参数二:设备名称

struct device *device_create(struct class *cls, struct device *parent, dev_t devt, void *drvdata, const char *fmt, ...);

参数一:与逻辑设备相关的逻辑类
参数二:当前逻辑设备的父设备的指针
参数三:逻辑设备的设备号,需要用MKDEV(主设备号进行映射)
参数四:中断处理函数的参数
参数五:逻辑设备的设备名

硬件的初始化------地址映射或者中断申请

在这里插入图片描述

驱动将硬件产生的数据传递给用户

硬件如何获取数据

读取硬件对应的GPIO口的状态,来判断硬件的动作。

是通过读取对应GPIO的数据寄存器来获取状态的

在这里插入图片描述
通过ioremap将物理地址GPXDATA_RED宏定义对应的实际物理地址映射到设备虚拟空间data_reg_base中
在这里插入图片描述
通过readl将data_reg_base中的数据读4字节出来

驱动如何将数据传递给用户

在中断处理函数中将event(事先定义好的结构体)进行填充
在这里插入图片描述

然后通过copy_to_user()函数传递给用户
在这里插入图片描述

用户如何拿到数据------编写应用程序

在用户空间调用read函数,会执行驱动中的key_drv_read驱动函数,将key_event结构体中的数据读出来,之后对数据在用户层面进行处理。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1953291.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Flink Doirs Connector 常见问题:Doris目前不支持流读

常见问题 Doris Source 在数据读取完成后,流为什么就结束了? 目前 Doris Source 是有界流,不支持 CDC 方式读取。 问题:对于 Flink Doris DataStream,Flink 想要在 流式读取 Doirs / 实时读 Doris,目前读…

网页的相关概念

什么是网页 网站是指在因特网上根据一定的规则,使用 HTML 等制作的用于展示特定内容相关的网页集合。 网页是网站中的一页,通常是 HTML 格式的文件,需通过浏览器来阅读。 网页是构成网站的基本元素,通常由图片、链接、文字、声…

MySQL表的增删查改(3)——复杂情况

1. 表的设计 三大范式: 一对一:如一个学生可以有一个学号,一个学号只能被一个学生拥有 一对多:如一个学生只能属于一个班级,但一个班级可以有多个学生(这种方案在MySQL中是不可行的,但在有些…

深入浅出mediasoup—关键帧请求

当丢包或者解码错误导致无法正确解码视频流,或者当一个新的接收者加入到视频通话时,需要一个关键帧来恢复和开始正常解码。关键帧请求机制是确保视频流在不可靠网络环境下能够恢复和维持高质量播放的关键技术之一,mediasoup 支持关键帧请求。…

一文掌握YOLOv1-v10

引言 YOLO目标检测算法,不过多介绍,是基于深度学习的目标检测算法中最出名、发展最好的检测器,没有之一。本文简要的介绍一下从YOLOv1-YOLOv10的演化过程,详细技术细节不过多介绍,只提及改进点,适合初学者…

每日OJ_牛客_HJ91 走方格的方案数

目录 牛客HJ91 走方格的方案数 解析代码 牛客HJ91 走方格的方案数 走方格的方案数_牛客题霸_牛客网 解析代码 本题为求取路径总数的题目,一般可以通过递归求解,对于复杂的问题,可以通过动态规划求解。此题比较简单,也可以通过递…

AI学习记录 - transformer的位置编码的理解

看完肯定懂,可能会更新 一看位置编码公式,感觉很懵逼 懵逼四点:(或者你还有其他不懂的点) 1、为什么使用正弦余弦公式?不可以使用其他公式? 2、为什么奇数位置使用余弦,偶数位置使…

向量数据库:从0到original paper

向量数据库相关概念 亿点点历史知识 LLM的模型发展历史,Harnessing the Power of LLMs in Practice: A Survey on ChatGPT and Beyond1: 很多人都是从ChatGPT爆点后才逐渐了解到大模型,但在爆点的前几年大模型的发展已经开始了诸神之战。一…

网络服务综合项目(一键部署shell脚本)

目录 需求: 主机环境描述 注意: 项目需求: 代码讲解 配置本地仓库 安装软件包 配置防火墙 配置策略中的一个布尔值 配置web服务 配置网络仓库 配置DNS服务 配置NTP服务 配置MySQL服务 配置NFS服务 配置论坛服务 进入网站配置…

数据结构(稀疏数组)

简介 稀疏数组是一种数据结构,用于有效地存储和处理那些大多数元素都是零或者重复值的数组。在稀疏数组中,只有非零或非重复的元素会被存储,从而节省内存空间。 案例引入 假如想把下面这张表存入文件,我们会怎么做?…

C语言字符函数与字符串函数超详解

文章目录 前言1. 字符分类函数2. 字符转换函数3. strlen3. 1 strlen 的使用3. 2 strlen 的模拟实现 4. strcpy4. 1 strcpy 的使用4. 2 strcpy 的模拟实现 5. strcat5. 1 strcat 的使用5. 2 strcat 的模拟实现 6. strcmp6. 1 strcmp 的使用6. 2 strcmp 的模拟实现 7. strncpy 函…

如何获得某个Window画面所属包名packageName和用户userId

在安卓上获得某个Window画面所属包名packageName和用户userId的方法 1,用到的工具如下: adb androidSDK里的monitor工具 adb shell dumpsys window animator adb shell dumpsys window命令 jdk 1.8已在安卓14模拟器上测试通过。 以AOSP的launcher中的m…

Nacos适配达梦数据库并制作镜像

背景:因项目需要信创,需将原本的mysql数据库,改成达梦数据库 一、部署达梦数据库 1.1 部署达梦数据库服务 可参考:Docker安装达梦数据库_达梦数据库docker镜像-CSDN博客 1.2 创建nacos数据库 create user SAFE_NACOS identifi…

pythonGame-实现简单的贪食蛇游戏

通过python简单复现贪食蛇游戏。 使用到的库函数: import pygame import time import random 游戏源码: import pygame import time import randompygame.init()white (255, 255, 255) yellow (255, 255, 102) black (0, 0, 0) red (213, 50, 80…

【秋招突围】2024届秋招笔试-美团笔试题-第一套-三语言题解(Java/Cpp/Python)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新 美团 春秋招笔试题**汇总~ 👏 感谢大家的订阅➕ 和 喜欢💗 01.LYA 的音乐播放列表 问题描述 LYA 有一个包含 n n n 首歌曲的音乐播放列表,歌曲编号从 1 1

护网紧急情况应对指南:Linux 应急响应手册

继上一篇:护网紧急情况应对指南:Windows版v1.2全新升级版 之后 收到小伙伴后台要Linux应急手册,今天给大家安排上。 《Linux应急手册》是一本为Linux系统管理员和运维工程师量身打造的实用指南,旨在帮助他们快速应对各种突发状况…

电测量数据交换DLMSCOSEM组件第10部分:智能测量标准化框架

1.GB/T 17215.6XY系列 IEC 62056 DLMS/COSEM组件标准已经由IEC/TC 13完成制定,用于电测量的目的。有些标准——特别是COSEM数据模型——也已经被其他非电量测量的技术委员会使用。IEC62056-X-Y系列标准对应转换国标GB/T 17215.6XY系列(电测量数据交换DLMSCOSEM组件)。如下图…

Electron的入门介绍与使用(1)共30节

Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需要本地开发 经验。 入门指南​ Electron 是网页应用 …

repo 工具安装和使用教程(windows+gitee)

repo是什么 官方的定义:Repo是谷歌用python脚本写的调用git的一个脚本,可以实现管理多个git库。 Android的源代码使用Repo 命令行工具来管理多个git仓库,大概有百多个。要想克隆和管理百多个 Git 仓库,不是一件简单的事情。Repo 命…

Java集合——HashMap的底层实现

HashMap将数据以键值对的形式存储,是线程不安全的(即在多线程中若不用concurrentHashMap会导致结果错误)。 // concurrentHashMap编程示例 import java.util.Map; import java.util.concurrent.ConcurrentHashMap;public class HashMapThrea…