linux驱动——中断

news2025/1/13 13:37:59

1.Cortex-A系列的中断的简介

中断的基本概念:(interrupt)

        中断本质上是系统内部的异常机制,当中断产生之后,他会停下当前正在执行的任务,转而去做其他的事情,在停下当前正在执行的任务之前,要先入栈(保护现场,其他的事情做完之后,我们要继续执行先前的任务,就需要先恢复现场(出栈)。

linux下的中断一般是分为两类:

软中断: 信号、软件定时器

硬中断:跟硬件相关的,如:按键

A系类的芯片支持的中断的类型:

        SGI:软件生成中断;

        PPI:私有外设中断;

        SPI:共享的外设的中断,使用的比较多的中断的类型;

A系列的芯片:

        可以设置中断的优先级;

        可以使能或者失能中断;

        在linux系统中,中断其实就是一个编号,要想使用某个中断我们必须先知道这个中断的编号;

        在系统里要想查看中断的使用情况 : cat /proc/interrupts

2.linux的外部中断的介绍

        外部中断输入spi的共享中断,中断并不能直接使用硬件的中断号,要想使用中断必须借助与内核提供的函数,将引脚转换成linux认同的中断号。

3.linux中断注册相关的API

函数的原型:int gpio_to_irq(unsigned int gpio)

功能:将一个GPIO口转换成中断号

头文件:<linux/gpio.h>

参数:unsigned int gpio:你要转换成中断号的GPIO口的编号

返回值:成功返回要使用的中断号

有了中断号之后就可以对中断进行注册 等等相关的操作;

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

函数的原型:void enable_irq(unsigned int irq)

功能:使能中断

头文件:<linux/irq.h>

参数:unsigned int irq:就是前边你通过gpio_to_irq获取到的中断号

函数的返回值:无

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

函数的原型: void disable_irq(unsigned int irq)

功能:失能中断号

函数的头文件 :<linux/irq.h>

函数的参数:unsigned int irq:中断号

函数的返回值:无

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

函数的原型:

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

功能:向内核注册一个中断

头文件:<linux/interrupt.h>

参数:

        unsigned int irq:中断号

        irq_handler_t handler:中断的服务函数,当产生中断的时候会调用此函数

        irqreturn_t (*irq_handler_t)(int, void *)

        unsigned long flags,:触发的方式

                IRQF_TRIGGER_FALLING:下降沿

                IRQF_TRIGGER_RISING:上升沿

                IRQF_TRIGGER_HIGH:高电平

                IRQF_TRIGGER_LOW:低电平

        const char *name:中断的名字  会出现在/proc/interrupts这个文件里

        void *dev:跟中断服务函数传的私有数据  一般不用

返回值:

        成功返回    0

        失败返回  负数

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

函数的原型:void free_irq(unsigned int irq, void *dev_id)

功能:注销一个中断

头文件:<linux/interrupt.h>

参数:

        irq:中断号

        void *dev_id:要和中断注册函数的最后一个参数dev相同

函数的返回值:无

4.下面是练习的部分代码,仅供参考

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

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

相关文章

漏洞原理 | CORS跨域学习篇

0x01&#xff1a;原理 1、 什么是CORS 全称跨域资源共享&#xff0c;用来绕过SOP(同源策略)来实现跨域访问的一种技术。 CORS漏洞利用CORS技术窃取用户敏感信息 2、 同源策略简介 同源策略是浏览器最核心也是最基本的安全功能&#xff0c;不同源的客户端脚本在没有明确授权…

UDP连接树莓派时提高连接速度,降低卡顿感

背景 树莓派4B刷的是ubuntu20.4系统&#xff0c;使用win10自带的远程桌面连接和其连接&#xff0c;卡的一批&#xff0c;于是探索并记录下如何降低连接卡顿感 步骤一 点击显示选项&#xff0c; 降低显示配置和颜色深度&#xff1a; 步骤二 我的树莓派是通过电脑移动热点的方式…

中科大计网学习记录笔记(十八):网络层:数据平面:导论

前言&#xff1a; 学习视频&#xff1a;中科大郑烇、杨坚全套《计算机网络&#xff08;自顶向下方法 第7版&#xff0c;James F.Kurose&#xff0c;Keith W.Ross&#xff09;》课程 该视频是B站非常著名的计网学习视频&#xff0c;但相信很多朋友和我一样在听完前面的部分发现信…

今天做了两个工具

URL可用性检测 2.影视 第一个工具为第二个工具服务&#xff0c;一定程度上检测了搜集到视频解析接口是否可用。

AI知识库也太方便了吧,中小型企业都要知道它!

生活在这个信息爆炸的时代&#xff0c;信息的获取变得前所未有的方便&#xff0c;但随之而来的却是信息筛选和管理的难题。对于中小型企业来说&#xff0c;如何有效运用自身积累的各类信息&#xff0c;直接影响着企业的运营效率和市场竞争力。而这&#xff0c;正是AI知识库可以…

linux系统adb调试工具

adb的全称为Android Debug Bridge&#xff0c;就是起到调试桥的作用。通过adb可以在Eclipse中通过DDMS来调试Android程序&#xff0c;说白了就是调试工具。 adb的工作方式比较特殊&#xff0c;采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯&#xff0c;默认情况下adb会…

电脑丢失msvcr120.dll文件怎么办-丢失msvcr120.dll文件的五种解决方法

今天有看到小伙伴们在问msvcr120.dll文件是什么&#xff0c;所以今天的这篇文章将给大家科普msvcr120.dll文件是什么&#xff0c;msvcr120.dll文件在电脑系统中的重要性&#xff0c;如果你的电脑中出现了关于msvcr120.dll文件丢失的问题&#xff0c;也可以参考这篇文章&#xf…

2024 年中国高校大数据挑战赛赛题 C:用户对博物馆评论的情感分析完整思路以及源代码分享

博物馆是公共文化服务体系的重要组成部分。国家文物局发布&#xff0c; 2021 年我国新增备案博物馆 395 家&#xff0c;备案博物馆总数达 6183 家&#xff0c;排 名全球前列&#xff1b;5605 家博物馆实现免费开放&#xff0c;占比达 90%以上&#xff1b;全国 博物馆举办展览 3…

汇编课设——秒表2

1. 设计要求 基于 51 开发板,利用键盘作为按键输入,将数码管作为显示输出,实现电子秒表。 功能要求: (1)计时精度达到百分之一秒; (2)能按键记录下5次时间并通过按键回看 (3)设置时间,实现倒计时,时间到,数码管闪烁 10 次,并激发蜂鸣器,可通过按键解除。 2. 设计思…

走进网络世界 了解一些基础知识

走进网络 1.认识计算机 1.计算机网络是由计算机和通讯构成的&#xff0c;网络研究的是“通信”。 ------1946 世界上第一台计算机 2.终端&#xff1a;只有输入和输出功能&#xff0c;没有计算和处理功能。3.数据&#xff1a;一串数字&#xff08;二进制数&#xff09;&#x…

CentOS7.4+REDHAWK2.3.1安装教程——折腾篇

文章目录 前言一、CentOS7.4 安装二、REDHAWK2.3.1 安装1、第1个问题及解决方案2、第2个问题及解决方案3、第3个问题及解决方案 三、打开 REDHAWK 测试 前言 之前安装的 REDHAWK2.3.1 在使用过程中存在着问题&#xff0c;花了整整三天才把问题解决&#xff0c;期间尝试了不同的…

Docker进阶:深入了解容器数据卷

Docker进阶&#xff1a;深入了解容器数据卷 一、前言二、容器数据卷的作用三、容器数据卷的使用方法四、实战--使用docker部署前端项目&#xff08;数据卷挂载&#xff09;4.1 重要&#xff1a;准备工作&#xff0c;先在本地创建挂载目录4.2 启动一个临时的nginx容器&#xff0…

苍穹外卖学习-----2024/03/010---redis,店铺营业状态设置

1.Redis入门 2.在Java中操作Redis 3.店铺营业状态设置 BUG!!! 今天在启动项目时&#xff0c;用到了Redis缓存数据库&#xff0c;但是却出现了报错信息&#xff1a; ERR Client sent AUTH, but no password is set。Caused by: io.lettuce.core.RedisCommandExecutionException…

ThreeJs 射线拾取不准确设置

欢迎关注进来点个关注; 关注获取更多咨询!关注获取答案! 1、效果图如下: 2、问题描述:点击一开始无法获取当前的位置,官方推荐直接使用 mouseClick.x = (event.offsetX / window.innderWidth) * 2 - 1; mouseClick.y = -(event.offsetY / window.innderHeight) * 2 + 1;…

真空泵系统数据采集远程监控解决方案

行业背景 半导体制造业可以说是现代电子工业的核心产业&#xff0c;广泛应用于计算机、通信、汽车、医疗等领域。而在半导体生产加工过程中&#xff0c;如刻蚀、 镀膜、 扩散、沉积、退火等环节&#xff0c;真空泵都是必不可少的关键设备&#xff0c;它可以构建稳定受控的真空…

UE5 GAS开发p30 创建UI HUD 血条

新建AuraUserWidget,AuraWidgetController,AuraHUD 首先设置AuraWidgetController.h // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "AbilitySystemComponent.h" #in…

数据结构系列-链表实现

&#x1f308;个人主页: 会编辑的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” #define _CRT_SECURE_NO_WARNINGS #include"List.h" void ListTest01() {LTNode* plist LTInit();LTPushFront(plist, 1);LTPushFront(plist, 2);LTPushFront(plist, 3);…

yum安装mysql、数据库tab自动补全,快来浅了解下 ?

centos7上面没有mysql&#xff0c;它的数据库名字叫做mariadb [rootlocalhost ~]#yum install mariadb-server -y [rootlocalhost ~]#systemctl start mariadb.service [rootlocalhost ~]#systemctl stop firewalld [rootlocalhost ~]#setenforce 0 [rootlocalhost ~]#ss -na…

UE5 局域网联机,寻找会话失败。

目录 参考资料&#xff1a; 尝试解决办法 1.1在【项目名.Build.cs】脚本中添加该行&#xff0c;添加后关闭编辑器&#xff0c;重新生成解决方案。​编辑 2.检查是否在同一个C类子网 参考资料&#xff1a; 1.Cant find session in LAN - Programming & Scripting / Mul…

外包干了30天,技术明显退步。。。。

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 这次来聊一个大家可能也比较关心的问题&#xff0c;那就是就业城市选择的问题。而谈到这个问题&a…