嵌入式知识点总结 ARM体系与架构 专题提升(三)-中断与异常

针对于嵌入式软件杂乱的知识点总结起来,提供给读者学习复习对下述内容的强化。

目录

1.中断与异常有何区别?

2.中断与DMA有何区别?

3.中断能不能睡眠,为什么?下半部能不能睡眠?

4.中断的响应执行流程是什么?

5.当一个异常出现以后,ARM微处理器会执行哪几步操作?

6.写一个中断服务需要注意哪些?如果中断产生之后要做比较多的事情你是怎么做的?

7.为什么FIQ比IRQ要快?

8.中断和轮询哪个效率高?怎样决定是采用中断方式还是采用轮询方式去实现驱动?


1.中断与异常有何区别?

中断:由外部事件触发,如外设请求服务(例如串口接收数据、计时器溢出、键盘输入)。

异常:由内部事件触发,通常是处理器在执行指令时检测到的错误或特定条件(如除零错误、非法指令)。

中断是指外部硬件产生的一个电信号从CPU的中断引脚进入,打断CPU的运行。
异常是指软件运行过程中发生了一些必须作出处理的事件,CPU自动产生一个陷入来打断CPU的运行。异常在处理的时候必须考虑与处理器的时钟同步,实际上异常也称为同步中断,在处理器执行到因编译错误而导致的错误指令时,或者在执行期间出现特殊错误,必须靠内核处理的时候,处理器就会产生-个异常。

 

2.中断与DMA有何区别?

DMA:是一种无须CPU的参与,就可以让外设与系统内存之间进行双向数据传输的硬件机制,使用DMA可以使系统CPU从实际的I/0数据传输过程中摆脱出来,从而大大提高系统的吞吐率。
中断:是指CPU在执行程序的过程中,出现了某些突发事件时,CPU必须暂停执行当前的程序,转去处理突发事件,处理完毕后CPU又返回源程序被中断的位置并继续执行。
所以中断和DMA的区别就是:DMA不需CPU参与,而中断是需要CPU参与的

其实本质也不是一类东西。一个是执行的动作,一个是数据转运的方式。

 

3.中断能不能睡眠,为什么?下半部能不能睡眠?

1.中断处理的时候,不应该发生进程切换。因为在中断上下文中,唯一能打断当前中断handler的只有更高优先级的中断,它不会被进程打断。如果在中断上下文中休眠,则没有办法唤醒它,因为所有的wake_up_xxx都是针对某个进程而言的,而在中断上下文中,没有进程的概念,没有一个task struct(这点对于softirq和tasklet一样)。因此真的休眠了,比如调用了会导致阻塞的例程内核几乎肯定会死。
2.schedule()在切换进程时,保存当前的进程上下文(CPU寄存器的值、进程的状态以及堆栈中的内容),以便以后恢复此进程运行。中断发生后,内核会先保存当前被中断的进程上下文(在调用中断处理程序后恢复)。
但在中断处理程序里,CPU寄存器的值肯定已经变化了(最重要的程序计数器PC、堆栈SP等)。如果此时因为睡眠或阻塞操作调用了schedule(),则保存的进程上下文就不是当前的进程上下文,所以,不可以在中浙处理程序中调用schedule()

3.2.4内核中schedule()函数本身在进来的时候判断是否处于中断上下文:
if(unlikely(in interrupt())
BUG();
因此,强行调用schedule()的结果就是内核BUG,但看2.6.18的内核schedule()的实现却没有这句,改掉了。
4.中断handler会使用被中断的进程内核堆栈,但不会对它有任何影响,因为handler使用完后会完全清除它使用的那部分堆栈,恢复被中断前的原貌。5.处于中断上下文时候,内核是不可抢占的。因此,如果休眠,则内核一定挂起。

特性中断上半部中断下半部
是否可以睡眠是(前提是能被调度)
执行上下文中断上下文进程上下文
调度能力不可调度可调度
典型场景硬件事件的快速响应延迟处理非实时任务

 

4.中断的响应执行流程是什么?

中断的响应流程:cpu接受中断->保存中断上下文跳转到中断处理历程->执行中断上半部->执行中断下半 部->恢复中断上下文。

 

5.当一个异常出现以后,ARM微处理器会执行哪几步操作?

1.将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。若异常是从ARM状态进入,则LR寄存器中保存的是下一条指令的地址(当前PC+4或PC+8,与异常的类型有关);若异常是从Thumb状态进入,则在LR寄存器中保存当前PC的偏移量这样,异常处理程序就不需要确定异常是从何种状态进入的。例如:在软件中断异常SW!,指令MOV PC,R14 svc总是返回到下一条指令,不管SWI是在ARM状态执行,还是在Thumb状态执行。
2.将CPSR复制到相应的SPSR中,
3.根据异常类型,强制设置CPSR的运行模式位。
4.强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。

  • 异常触发
  • 保存CPSR到SPSR
  • 切换模式并屏蔽中断(可选)
  • 跳转到异常向量表地址
  • 执行异常处理程序
  • 恢复状态并返回

 

6.写一个中断服务需要注意哪些?如果中断产生之后要做比较多的事情你是怎么做的?

1.写一个中断服务程序要注意快进快出,在中断服务程序里面尽量快速采集信息,包括硬件信息,然后退出中断,要做其它事情可以使用工作队列或者tasklet方式。也就是中断上半部和下半部。2.中断服务程序中不能有阻塞操作。应为中断期间是完全占用CPU的(即不存在内核调度),中断被阻塞住,其他进程将无法操作。
3.中断服务程序注意返回值,要用操作系统定义的宏做为返回值,而不是自己定义的。
4.如果要做的事情较多,应将这些任务放在后半段(tasklet,等待队列等)处理。

 

7.为什么FIQ比IRQ要快?

FIQ模式下,ARM处理器提供了一组专用的寄存器,可以避免上下文切换时保存和恢复通用寄存器的开销:

  • 专用寄存器:FIQ模式下的 R8 ~ R14 是专用寄存器,而 IRQ 和普通模式共享寄存器。
  • 优势:当进入FIQ中断时,R8~R14已经独立,不需要保存通用寄存器的上下文,直接可用,从而加快中断响应速度。
特性FIQIRQ
优先级更高(最高优先级)较低
寄存器使用使用专用的 R8~R14与用户模式共享寄存器
中断屏蔽自动屏蔽所有IRQ中断可能被FIQ中断抢占
适用场景紧急、实时、短时间任务处理通常的中断服务
响应速度较快较慢

 

8.中断和轮询哪个效率高?怎样决定是采用中断方式还是采用轮询方式去实现驱动?

中断是CPU处于被动状态下来接受设备的信号,而轮询是CPU主动去查询该设备是否有请求。
凡事都是两面性,所以,看效率不能简单的说那个效率高。如果是请求设备是一个频繁请求cpu的设备,或者有大量数据请求的网络设备,那么轮询的效率是比中断高。如果是一般设备,并且该设备请求cpu的频率比较低,则用中断效率要高一些。主要是看请求频率。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode:541

1,题目 2,思路 用List集合来装字符串其中每k个为一个元素单位我们根据题目意思就可以明白list中偶数位需要反转reverse,奇数保持原样再全部拼接一块最后return tostring 3,代码 import java.util.ArrayList; import java.util.…

CSS 背景与边框:从基础到高级应用

CSS 背景与边框:从基础到高级应用 1. CSS 背景样式1.1 背景颜色示例代码:设置背景颜色 1.2 背景图像示例代码:设置背景图像 1.3 控制背景平铺行为示例代码:控制背景平铺 1.4 调整背景图像大小示例代码:调整背景图像大小…

【机器学习】自定义数据集使用框架的线性回归方法对其进行拟合

一、使用框架的线性回归方法 1. 基础原理 在自求导线性回归中,我们需要先自定义参数,并且需要通过数学公式来对w和b进行求导,然后在反向传播过程中通过梯度下降的方式来更新参数,从而降低损失值。 2. 实现步骤 ① 散点输入 有一…

DeepSeekMoE:迈向混合专家语言模型的终极专业化

一、结论写在前面 论文提出了MoE语言模型的DeepSeekMoE架构,目的是实现终极的专家专业化(expert specialization)。通过细粒度的专家分割和共享专家隔离,DeepSeekMoE相比主流的MoE架构实现了显著更高的专家专业化和性能。从较小的2B参数规模开始&#x…

【ESP32】ESP-IDF开发 | WiFi开发 | UDP用户数据报协议 + UDP客户端和服务器例程

1. 简介 UDP协议(User Datagram Protocol),全称用户数据报协议,它是一种面向非连接的协议,面向非连接指的是在正式通信前不必与对方先建立连接, 不管对方状态就直接发送。至于对方是否可以接收到这些数据内…

Oracle Primavera P6自动进行进度计算

前言 在P6 Professional 有一个自动计划计算的选项,很多人不了解该设置如何使用,以及什么时候该启动这项配置。 详情 P6 Professional 默认为非自动进度计算。启用自动选项后,可以快速查看调度更改的效果。 ​ ​ 如图所示,当你…

gesp(C++六级)(6)洛谷:P10109:[GESP202312 六级] 工作沟通

gesp(C六级)(6)洛谷:P10109:[GESP202312 六级] 工作沟通 题目描述 某公司有 N N N 名员工,编号从 0 0 0 至 N − 1 N-1 N−1。其中,除了 0 0 0 号员工是老板,其余每名员工都有一个直接领导…

冯诺依曼结构和进程概念及其相关的内容的简单介绍

目录 ​编辑 冯诺依曼体系结构 操作系统(Operator System) 进程 引入 基本概念 描述进程-PCB task_ struct内容分类 进程 ID (PID)和查看进程 进程状态: 进程创建: 进程终止: 进程间通信 (IPC): 冯诺依曼体系结构 冯诺依曼体系结构是现代计算机的基础架构&#xf…

松灵机器人 scout ros2 驱动 安装

必须使用 ubuntu22 必须使用 链接的humble版本 #打开can 口 sudo modprobe gs_usbsudo ip link set can0 up type can bitrate 500000sudo ip link set can0 up type can bitrate 500000sudo apt install can-utilscandump can0mkdir -p ~/ros2_ws/srccd ~/ros2_ws/src git cl…

Excel 技巧23 - 在Excel中用切片器做出查询效果(★★★)

本文讲如何在Excel中用切片器做出查询效果。 目录 1,在Excel中用切片器做出查询效果 1-1,Excel 中的切片器是什么? 1-2,用切片器做出查询效果 1),点击任一表格内单元格,按下CtrlA&#xff0…

Python从0到100(八十六):神经网络-ShuffleNet通道混合轻量级网络的深入介绍

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

cmd命令行无法进入D:盘怎么办

我找到了一个方法就是 增加一个/d cd /d d: 如下图,我不仅可以进入d盘符下,还可以访问盘符下的文件夹

万物皆有联系:驼鸟和布什

布什?一块布十块钱吗?不是,大家都知道,美国有两个总统,叫老布什和小布什,因为两个布什总统(父子俩),大家就这么叫来着,目的是为了好区分。 布什总统的布什&a…

unity学习24:场景scene相关生成,加载,卸载,加载进度,异步加载场景等

目录 1 场景数量 SceneManager.sceneCount 2 直接代码生成新场景 SceneManager.CreateScene 3 场景的加载 3.1 用代码加载场景,仍然build setting里先加入配置 3.2 卸载场景 SceneManager.UnloadSceneAsync(); 3.3 同步加载场景 SceneManager.LoadScene 3.3.…

在线知识库创建与维护提升企业效率与知识共享能力

内容概要 在当今数字化快速发展的背景下,在线知识库逐渐成为企业管理信息的重要工具。其核心在于将知识进行系统化、结构化的整理和存储,便于员工获取和分享。这不仅提高了信息的访问效率,还促进了团队之间的协作。在线知识库的建立可以有效…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.24 随机宇宙:生成现实世界数据的艺术

1.24 随机宇宙:生成现实世界数据的艺术 目录 #mermaid-svg-vN1An9qZ6t4JUcGa {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-vN1An9qZ6t4JUcGa .error-icon{fill:#552222;}#mermaid-svg-vN1An9qZ6t4JUc…

DeepSeek-R1 论文解读 —— 强化学习大语言模型新时代来临?

近年来,人工智能(AI)领域发展迅猛,大语言模型(LLMs)为通用人工智能(AGI)的发展开辟了道路。OpenAI 的 o1 模型表现非凡,它引入的创新性推理时缩放技术显著提升了推理能力…

进阶数据结构——高精度运算

目录 前言一、高精度运算的定义与背景二、高精度运算的实现方式三、高精度运算的算法实现四、高精度运算的应用场景五、代码模版(c)六、经典例题1.[高精度加法](https://www.lanqiao.cn/problems/1516/learning/?page1&first_category_id1&name…

MYSQL--一条SQL执行的流程,分析MYSQL的架构

文章目录 第一步建立连接第二部解析 SQL第三步执行 sql预处理优化阶段执行阶段索引下推 执行一条select 语句中间会发生什么? 这个是对 mysql 架构的深入理解。 select * from product where id 1;对于mysql的架构分层: mysql 架构分成了 Server 层和存储引擎层&a…

【4Day创客实践入门教程】Day2 探秘微控制器——单片机与MicroPython初步

Day2 探秘微控制器——单片机与MicroPython初步 目录 Day2 探秘微控制器——单片机与MicroPython初步MicroPython语言基础开始基础语法注释与输出变量模块与函数 单片机基础后记 Day0 创想启程——课程与项目预览Day1 工具箱构建——开发环境的构建Day2 探秘微控制器——单片机…