【回眸】牛客网刷刷刷!(八)——中断专题

目录

前言

1、在CortexM内核中,当系统响应一个中断时

2、用与非门和或非门可以实现其他基本门电路。进而实现任何逻辑电路

3、cpu interface提供了功能包含

4、以Cortex-M3内核为例,如果某个中断在得到响应之前,其请求信号以若干的脉冲的方式呈现,则处理器处理的方式是

5、在Linux中,中断分为向量中断和非向量中断

6、对于ARM的处理器,中断给处理器提供了触觉,使处理器能够感知到外界的变化,从而实时的处理。ARM cortex-A系列处理器,提供了4个管脚给soc,实现外界中断的传递,分别是

7、关于中断的描述

8、总线fault是一种严重的错误

9、在Cortex-M系列内核架构中,总线fault 状态寄存器(BFSR)用来记录总线fault中断源,关于总线fault 状态寄存器中断源的描述

10、在CortexM内核中,已经内建了对中断嵌套的全力支持,无需使用汇编写代码,只需要为每个中断适当地建立优先级就可以

11、能够触发中断的信号叫中断源,常见的中断源有

12、存储器管理中断多与MPU有关,其诱因常常是某次访问触犯了MPU设置的保护策略

13、CortexM的Fault 类异常不包括

14、在CortexM内核中,建立一个外部中断的正确顺序

15、中断可分为内部中断和外部中断

16、电机的类型有很多种,若按照能量转换的角度进行划分,可分为

17、在Cortex-M3内核架构中,如果需要动态地更改中断向量表,则对于任何器件来说,中断向量表的起始处都必须包含的向量是

18、中断优先级

19、中断4状态

20、在系统中,中断处理是由内核执行的最敏感的任务之一,因为它必须满足一些约束条件

21、关于GIC中断的边沿触发处理说法

22、IRI与cpu interface通过gic stream协议传输信息,传输的信息,是以包为单位。包,分为两类包

23、中断延迟的定义

24、下面对Linux中IDT的描述

25、关于Linux中struct irq_domain的描述

26、NVIC 中断控制器是物联网芯片常用的中断控制器,在NVIC 的中断控制及状态寄存器中,记录当前正服务中断编号的寄存器是

前言

本周日常学习的内容是中断相关的专项练习,中断也算是博主一个渐进明细的知识点,本篇整理了相关易错点和较为重要的知识点。

1、在CortexM内核中,当系统响应一个中断时

当CM3开始响应一个中断时,系统内部主要有以下操作:
入栈: 把8个寄存器的值压入栈
取向量:从向量表中找出对应的服务程序入口地址
选择堆栈指针MSP/PSP,更新堆栈指针SP,更新连接寄存器LR,更新程序计数器PC。
重定位向量是在系统初始化时完成的

2、用与非门和或非门可以实现其他基本门电路。进而实现任何逻辑电路

3、cpu interface提供了功能包含

cpu interface提供了以下的功能:
将中断请求发送给cpu
对中断进行认可(acknowledging an interrupt)
中断完成识别(indicating completion of an interrupt)
设置中断优先级屏蔽
定义中断抢占策略
决定当前处于pending状态最高优先级中断

4、以Cortex-M3内核为例,如果某个中断在得到响应之前,其请求信号以若干的脉冲的方式呈现,则处理器处理的方式是

中断信号一般是接入到中断控制器中,中断控制器需要判断和过滤中断信号,如果某个中断在得到响应之前,其请求信号以若干的脉冲的方式呈现,中断处理器视为只有一次中断请求,多出的请求脉冲会全部错失。这是情况发生一般是中断请求太快,以致于超出处理器反应限度

5、在Linux中,中断分为向量中断和非向量中断

在linux中,根据中断入口跳转方法的不同,中断分为向量中断和非向量中断。采用向量中断的CPU 通常为不同的中断分配不同的中断号,当检测到某中断号的中断到来后,就自动跳转到与该中断号对应的地址执行。不同中断号的中断有不同的入口地址。非向量中断的多个中断共享一个入口地址,进入该入口地址后再通过软件判断中断标志来识别具体是哪个中断。也就是说,向量中断由硬件提供中断服务程序入口地址,非向量中断由软件提供中断服务程序入口地址。

6、对于ARM的处理器,中断给处理器提供了触觉,使处理器能够感知到外界的变化,从而实时的处理。ARM cortex-A系列处理器,提供了4个管脚给soc,实现外界中断的传递,分别是

ARM cortex-A系列处理器,提供了4个管脚给soc,实现外界中断的传递。分别是:

  • nIRQ: 物理普通中断

  • nFIQ:  物理快速中断

  • nVIRQ: 虚拟普通中断

  • nVFIQ: 虚拟快速中断

7、关于中断的描述

当发生中断嵌套时,比如先发生中断1,紧接着中断2打断了中断1,导致中断2执行,中断2执行完成后继续执行中断1,从而导致后发生的中断先执行,因此我们常说中断的嵌套处理会改变中断处理的次序
通常情况下当发生除0时,会产生中断,但Cortex-M3&M4中可以屏蔽该中断,不过不建议屏蔽该中断
中断是可以嵌套的,刚才描述是中断1和中断2就属于中断嵌套现象
通常使用的系统调用,如果深入系统调用的实现机制,就会发现,其内部实际上是通过中断从而从用户态进入核心态。

8、总线fault是一种严重的错误

总线错误在实际工程中应该尽量避免,严重会导致系统崩溃。关于总线fault,我们需要了解:欲使能总线fault 服务例程,需要在NVIC 的“系统Handler 控制及状态寄存器”中置位BUSFAULTENA 位。要注意的是:在使能之前,总线fault 服务例程的入口地址必须已经在向量表中配置好,否则就成了作法自毙——程序可能跑飞。总线faults 发生时,只要没有同级或更高优先级的异常正在服务,且FAULTMASK=0,就会执行总线fault 的服务例程。如果在检测到总线fault 时还检测到了更高优先级的异常,则先处理后者,而总线fault 则被标记成悬起。最后,如果总线fault 被除能,或者总线fault 发生时正在处理同级或更高优先级异常,则总线fault 被迫成为“硬伤”——上访成硬fault,使得最后执行的是硬fault 的服务例程。如果在硬fault 服务例程的执行中又产生了总线fault,内核将进入锁定状态。

9、在Cortex-M系列内核架构中,总线fault 状态寄存器(BFSR)用来记录总线fault中断源,关于总线fault 状态寄存器中断源的描述

总线fault 状态寄存器中断源描述正确如下:
STKERR R/Wc :入栈时发生错误
UNSTKERR R/Wc :出栈时发生错误
IMPRECISERR R/Wc :不精确的数据访问违例
PRECISERR R/Wc : 精确的数据访问违例
IBUSERR R/Wc :取指时的访问违例

10、在CortexM内核中,已经内建了对中断嵌套的全力支持,无需使用汇编写代码,只需要为每个中断适当地建立优先级就可以

在使用中断嵌套时我们需要注意:

NVIC和CM3处理器会为我们排出优先级解码的顺序,会自动入栈和出栈。因此,在某个异常正在响应时,所有优先级不高于它的异常都不能抢占之,而且它自己也不能抢占自己。
所有服务例程都只使用主堆栈。所以当中断嵌套加深时,对主堆栈的压力会增大。并且何时嵌套多少级也是不可预料的。如果主堆栈的容量本来就已经所剩无几了,中断嵌套又突然加深,则主堆栈有被用穿的凶险。
另一个要注意的,是相同的异常是不允许重入的。因为每个异常都有自己的优先级,并且在异常处理期间,同级或低优先级的异常是要阻塞的,因此对于同一个异常,只有在上次实例的服务例程执行完毕后,方可继续响应新的请求。

11、能够触发中断的信号叫中断源,常见的中断源有

中断系统中,常见的中断源有:
外部设备请求中断。一般的外部设备(如键盘、打印机和A / D转换器等)在完成自身的操作后,向CPU发出中断请求,要求CPU为他服务。
故障强迫中断。系统在一些关键部位都设有故障自动检测装置。如运算溢出、存储器读出出错、外部设备故障、电源掉电以及其他报警信号等,这些装置的报警信号都能使CPU中断,进行相应的中断处理。
实时时钟请求中断。在控制中遇到定时检测和控制,为此常采用一个外部时钟电路控制其时间间隔。需要定时时,CPU发出命令使时钟电路开始工作,一旦到达规定时间,时钟电路发出中断请求,由CPU转去完成检测和控制工作。
数据通道中断。数据通道中断也称直接存储器存取(DMA)操作中断,如磁盘、磁带机或CRT等直接与存储器交换数据所要求的中断。
程序自愿中断。CPU执行了特殊指令或由硬件电路引起的中断是程序自愿中断,当用户调试程序时,程序自愿中断检查中间结果或寻找错误所在而采用的检查手段,如断点中断和单步中断等。

12、存储器管理中断多与MPU有关,其诱因常常是某次访问触犯了MPU设置的保护策略

存储器管理中断是实际应用中遇到最多的异常情况之一,能够触发存储器管理中断的原因坑你是访问了 MPU 设置区域覆盖范围之外的地址,往只读寄存器 写数据,用户级下访问了只允许在特权级下访问的地址和在不可执行的存储器区域试图取指。这里需要注意的是,即使没有MPU在不可执行的存储器区域试图取指也会触发存储器管理中断。

13、CortexM的Fault 类异常不包括

总线 faults
存储器管理 faults
用法 faults
硬 fault

14、在CortexM内核中,建立一个外部中断的正确顺序

正确的顺序是
1. 当系统启动后,先设置优先级组寄存器。
2. 如果需要重定位向量表,先把硬fault和NMI服务例程的入口地址写到新表项所在的地址中。
3. 配置向量表偏移量寄存器,使之指向新的向量表。
4. 为该中断建立中断向量。
5. 为该中断设置优先级。
6. 使能该中断

15、中断可分为内部中断和外部中断

中断可分为内部中断和外部中断,内部中断的中断源来自CPU内部如:软件中断指令、溢出、除法错误等,操作系统从用户态切换到内核态需借助CPU内部的软件中断。外部中断的中断源来自CPU外部,由外设提出请求。定时器属于CPU外设定时模块,因此属于外部中断。

16、电机的类型有很多种,若按照能量转换的角度进行划分,可分为

从能量转换的角度,发电机为机械能转换为电能,电动机为电能转换为机械能,变压器为电能形式转换。从电流的角度划分为直流电机和交流电机。从运动方式划分为旋转电机、直线电机、静止电机。从使用场合划分为潜水电机、防爆电机、航空电机。

17、在Cortex-M3内核架构中,如果需要动态地更改中断向量表,则对于任何器件来说,中断向量表的起始处都必须包含的向量是

如果需要动态地更改向量表,则对于任何器件来说,向量表的起始处都必须包含以下向量:
主堆栈指针(MSP)的初始值
复位向量
NMI
硬 fault 服务例程
除了主堆栈指针和复位向量这两个系统启动必须使用的,后两者也是必需的,因为有可能在引导过程中发生这两种异常。

18、中断优先级

19、中断4状态

对于每一个中断而言,有以下4个状态:
inactive:中断处于无效状态
pending:中断处于有效状态,但是cpu没有响应该中断
active:cpu在响应该中断
active and pending:cpu在响应该中断,但是该中断源又发送中断过来

20、在系统中,中断处理是由内核执行的最敏感的任务之一,因为它必须满足一些约束条件

中断处理是由内核执行的最敏感的任务之一,它必须满足下列约束:
中断应该被尽可能快地处理完。
中断处理程序必须编成使相应的内核控制路径能以嵌套的方式执行。
内核在处理一个中断时,可接受新的中断。但存在一个临界区,中断必须被禁止。
 所以在常见的中断编程中,中断的设计一般将中断处理程序分为两部分执行,即上半部和下半部函数。上半部为中断被禁止的临界区,执行关键而紧急的任务,如把接收到的帧拷贝到输入队列,以便下半部函数执行时能进行处理。
中断可以丰富编程逻辑和架构

21、关于GIC中断的边沿触发处理说法

边沿触发处理:

外部边沿中断到达,中断状态被置为pending状态。

软件读取IAR寄存器值,表示PE认可该中断,中断状态被置为active状态

软件中断处理完毕后,写EOIR寄存器,表示优先级重置。过一段时间后,写DIR寄存器,中断状态被置为idle状态。

22、IRI与cpu interface通过gic stream协议传输信息,传输的信息,是以包为单位。包,分为两类包

RI与cpu interface通过gic stream协议传输信息,传输的信息,是以包为单位。包,分为两类包:

  • 命令包,分为redistributor命令包,cpu interface命令包

  • 响应包,分为redistributor响应包,cpu interface响应包

AXI-stream协议,每次传输2个字节,多次传输,组成一个包。不同的包,大小不是一样的,比如有的是16个字节,有的是8个字节

23、中断延迟的定义

在设计实时系统时,必须对中断延迟进行严肃和仔细地估算,因为这对程序执行的流程有着重大的影响。中断延迟的定义是从检测到某中断请求,到执行了其服务例程的第一条指令时,已经流逝了的时间。

24、下面对Linux中IDT的描述

对于大多数人来说,不会过多的关注IDT,通常在Linux中只需使用中断的API来进行中断配置和处理,但中断是怎么工作起来的呢?实际上IDT起着比较重要的作用,IDT需要在内核引导的过程中进行初始化的

25、关于Linux中struct irq_domain的描述

硬中断号:中断控制器是采用硬中断号标识外设的中断。

软中断号:CPU需要通过该号来识别中断,假如有多个中断控制器,每个中断控制器各自对应16个从0到15的中断号,那CPU收到这个号后,不知道这个中断是从哪一个中断控制器派发过来的,因此引出了irq_domain的概念

在系统启动分配irq_domain时,就会调用函数__irq_domain_add把irq_domain加入到该链表张

除了线性映射外,还有基树映射,直接映射等,这些方法目前内核中有对应API接口,如irq_domain_add_linear, irq_domian_add_tree等

26、NVIC 中断控制器是物联网芯片常用的中断控制器,在NVIC 的中断控制及状态寄存器中,记录当前正服务中断编号的寄存器是

在实际应用中,我们调试程序有时需要知道当前中断服务号是多少,我们可以查看NVIC中断控制器。在NVIC 的中断控制及状态寄存器中,记录当前正服务中断编号的寄存器IPSR。EXTI_IMR是中断屏蔽寄存器,EXTI_EMR是事件屏蔽寄存器。EXTI_RTSR是上升沿触发选择寄存器。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超越时间与人力的软件开发智慧:《人月神话》

目录 1、写在前面2、沟通!沟通!沟通!3、“银弹论”4、“人月神话”不能成立的原因5、影响力6、图书推荐 1、写在前面 《人月神话》是由计算机科学家弗雷德里克布鲁克斯所著的一本经典著作,首次出版于1975年。这本书以一个个小故事…

SSL证书系列--又拍云Let’s Encrypt免费DV SSL证书使用教程

原文网址:SSL证书系列--又拍云Let’s Encrypt免费DV SSL证书使用教程_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何使用又拍云部署Let’s Encrypt免费DV SSL证书。 一、了解Let’s Encrypt 了解和关注SSL证书的朋友,似乎没有理由不知道 Let’s Encr…

苹果与芯片巨头Arm达成20年新合作协议,将继续采用芯片技术

9月6日消息,据外媒报道,芯片设计巨头Arm宣布在当地时间周二提交给美国证券交易委员会(SEC)的最新IPO文件中,透露与苹果达成了一项长达20年的新合作协议,加深了双方之间的合作关系。 报道称,虽然…

进入低功耗和唤醒

休眠模式 进入休眠模式 如果使用 WFI 指令进入睡眠模式,则嵌套向量中断控制器 (NVIC) 确认的任意外设中断都会 将器件从睡眠模式唤醒。 如果使用 WFE 指令进入睡眠模式,MCU 将在有事件发生时立即退出睡眠模式。唤醒事件可 通过以下方式产生&#xff…

jvs-智能bi(自助式数据分析)9.1更新内容

​jvs-智能bi更新功能 1.报表增加权限功能(服务、模板、数据集、数据源可进行后台权限分配) 每个报表可以独立设置权限,通过自定义分配,给不同的人员分配不同的权限。 2.报表新增执行模式 可选择首次报表加载数据为最新数据和历…

搜索二维矩阵 II

题目链接 搜索二维矩阵 II 题目描述 注意点 矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 解答思路 最初想到使用深度优先遍历剪枝实现,但是运行后超出时间限制了可以直接遍历整个矩阵查找,虽然不超时…

升级iOS 17出现白苹果、不断重启等系统问题怎么办?

iOS 17发布后了,很多果粉都迫不及待的将iphone/ipad升级到最新iOS17系统,体验新系统功能。 但部分果粉因硬件、软件的各种情况,导致升级系统后出现故障,比如白苹果、不断重启、卡在系统升级界面等等问题。 如果遇到了这些系统问题…

python 创建 Telnet 客户端

目录 前言 1. Telnet 客户端框架 2. Telnet 代码分解 2.1 基于 TK 创建会话窗口 2.1.1 创建 Text 文本控件 2.1.2 创建 Frame 容器 2.1.2.1 基于 Frame 容器创建主机地址输入框 2.1.2.1.1 主机地址输入框绑定焦点事件 2.1.2.2 创建 Telnet 连接按钮控件 2.1.2.3 创建…

小程序如何上传微信聊天记录的文件

wx.chooseMessageFile({count: 10,type: image,success (res) {// tempFilePath可以作为img标签的src属性显示图片const tempFilePaths res.tempFiles} })参数说明 回调函数说明

【区块链 | IPFS】浅谈 | IPFS数据存储原理

IPFS在数据存储方面采用的是分散式的文件存储,区别于HTTP协议的位置寻址,IPFS是基于内容寻址,当文件上传到IPFS节点存储时,节点会对文件进行Merkle DAG(默克尔有向无环图)的格式组织分块存储,在存储完毕后,文件将以Merkle DAG的根哈希数来表示该文件,用户可以从IPFS构…

TSUMU58CDT9-1显示器芯片方案

TSUMU58CDT9-1是用于LCD显示器的整体解决方案图形处理IC,面板分辨率高达WUXGA。它配置了高速集成三adc /PLL、集成DVI/HDMI接收器、高质量显示处理引擎、集成微控制器和支持LVDS面板接口格式的输出显示接口。TSUMU58CDT9-1支持一个灵活的可配置数字输入接口&#xf…

Ajax介绍、爬取案例实战 + MongoDB存储

Ajax介绍 Ajax(Asynchronous JavaScript and XML)是一种用于在Web应用程序中实现异步通信的技术。它允许在不刷新整个网页的情况下,通过在后台与服务器进行数据交换,实时更新网页的一部分。Ajax的主要特点包括: 异步通…

Python Flask Web开发三:数据表的字段增加和删除

前言 在实际的开发中,数据表中的字段的增加和删除是很正常的操作,在运营的不断提需求下,这个修改的频率是很高的,那么在flask中如何进行字段的增加和删除呢?下面我来给大家讲讲 一、创建迁移脚本 使用数据库迁移工具…

C++内存管理(2)new、delete详解

目录 new operator(new操作) new类对象时加不加括号的差别 new工作任务 delete工作任务 new和delete 堆区空间操作(对比malloc和free) new和delete操作基本类型的空间 new和delete操作基本类型的数组 new和delete操作类的…

Qt开发_调用OpenCV(3.4.7)设计完成人脸检测系统

一、前言 近年来,人脸识别技术得到了广泛的应用,它可以在各种场景中实现自动化的人脸检测和识别,例如安防监控、人脸解锁、人脸支付等。 该项目的目标是设计一个简单易用但功能强大的人脸检测系统,可以实时从摄像头采集视频,并对视频中的人脸进行准确的检测和框选。通过…

0012Java程序设计-springboot基于微信小程序的校园智慧帮系统的设计与实现

摘要目录相关技术2.1 MySQL数据库2.2 SpringBoot框架2.3 uniapp框架2.4 B/S架构 系统设计系统实现开发环境 摘要 随着移动互联网高速发展,手机、移动智能终端设备在生活中有着越来越重要的地位。在高校推崇以人为本的今天,也逐渐重视“移动互联网”技术…

​7.1 项目1 学生通讯录管理:文本文件增删改查(C++版本)(自顶向下设计+断点调试) (A)​

C自学精简教程 目录(必读) 作业目标: 这个作业中,你需要综合运用之前文章中的知识,来解决一个相对完整的应用程序。 作业描述: 1 在这个作业中你需要在文本文件中存储学生通讯录的信息,并在程序启动的时候加载这些…

【Mycat1.6】缓存不生效问题处理

背景 系统做读写分离,有大量读需求,基本没有实时获取数据业务需要,所以可以启用缓存来减缓数据库压力,传统使用mybatis的缓存需要大量侵入式声明,所以结合需求使用Mycat中间件来满足 数据库结构 mysql-master&#…

渗透测试漏洞原理之---【业务安全】

文章目录 1、业务安全概述1.1业务安全现状1.1.1、业务逻辑漏洞1.1.2、黑客攻击目标 2、业务安全测试2.1、业务安全测试流程2.1.1、测试准备2.1.2、业务调研2.1.3、业务建模2.1.4、业务流程梳理2.1.5、业务风险点识别2.1.6 开展测试2.1.7 撰写报告 3、业务安全经典场景3.1、业务…

多维时序 | MATLAB实现GWO-BiLSTM灰狼算法优化双向长短期记忆神经网络的多变量时间序列预测

多维时序 | MATLAB实现GWO-BiLSTM灰狼算法优化双向长短期记忆神经网络的多变量时间序列预测 目录 多维时序 | MATLAB实现GWO-BiLSTM灰狼算法优化双向长短期记忆神经网络的多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现CNN-BiGRU-A…