嵌入式学习---ARM中断控制系统

目录

  • 外部事件与CPU的交互方式
    • 查询方式
    • 中断方式
  • 什么是中断源
    • S3C2440支持60个中断源
    • FIQ和IRQ
  • 中断处理流程
    • 将外设中断通知给CPU
      • SUBSRCPND寄存器
      • INTSUBMSK寄存器
      • SRCPND寄存器
      • INTMSK寄存器
      • INTMOD寄存器
      • INTPND寄存器

  • 硬件中断处理是实时系统设计的最重要、最关键的问题。

外部事件与CPU的交互方式

查询方式

  • 程序不断地查询各设备的状态,并做出相应的反应。该方式实现比较简单,常用在比较单一的系统中,比如一个温控系统中可以使用查询方式不断检测温度的变化。
  • 特点:实现简单;但CPU利用率很低,不适合多任务的系统。

中断方式

  • 当事件发生时,硬件会设置某个寄存器;CPU在每执行完一个指令时,查看这个寄存器,如果所关注的事件发生了,则中断当前程序,跳转到一个固定的地址处理这个事件,处理完后返回到被中断的程序中继续运行。
  • 特点: 实现相对复杂,但效率较高,是常用的方法。

什么是中断源

  • 中断源是指能够触发中断请求的事件或信号源。在计算机系统中,中断源可以是硬件设备(如键盘、鼠标、定时器等)或软件程序(如操作系统或应用程序)发出的信号。当中断源触发中断请求时,处理器会立即中断当前正在执行的任务,转而去处理中断服务程序,以响应中断事件。中断源的存在可以提高系统的响应速度和处理效率,使得处理器能够及时处理重要的事件或任务。

S3C2440支持60个中断源

在这里插入图片描述

FIQ和IRQ

FIQ(Fast Interrupt Request)和IRQ(Interrupt Request)是两种不同类型的中断请求。

  • IRQ是一种标准的中断请求,用于处理一般的中断事件。它是由外部设备(如键盘、鼠标、定时器等)或软件程序发出的中断信号。当IRQ中断请求被触发时,处理器会中断当前正在执行的任务,保存当前的上下文,并跳转到IRQ中断服务程序去处理中断事件。IRQ中断请求具有较低的优先级,可以被其他中断请求打断。
  • FIQ是一种快速中断请求,用于处理紧急或高优先级的中断事件。与IRQ相比,FIQ具有更高的优先级和更快的响应速度。FIQ中断请求通常由特定的硬件设备(如DMA控制器、硬盘控制器等)发出,用于处理一些需要快速响应的关键任务。当FIQ中断请求被触发时,处理器会立即中断当前任务,保存当前的上下文,并跳转到FIQ中断服务程序去处理中断事件。由于FIQ具有较高的优先级,它可以打断正在执行的IRQ中断请求。

总结来说,IRQ用于处理一般的中断事件,而FIQ用于处理紧急或高优先级的中断事件。FIQ具有更高的优先级和更快的响应速度,适用于一些对实时性要求较高的任务。

  • IRQ模式下,中断处理程序需要自己保存R8到R12这几个寄存器,退出中断处理时需要自己恢复这几个寄存器,而FIQ模式由于这几个寄存器都有back寄存器(fiq_R8…),模式切换时CPU自动保存这些值到back寄存器,退出FIQ模式时自动恢复,所以这个过程FIQ比IRQ快。FIQ比IRQ有更高优先级,如果FIQ和IRQ同时产生,那么FIQ先处理。

中断处理流程

在这里插入图片描述

  • 中断控制器汇集各类外设发出的中断信号【中断控制器通常具有多个中断输入引脚,每个引脚对应一个外设的中断信号。当外设发出中断请求时,相应的中断输入引脚会被置为高电平或触发一个特定的信号。中断控制器会监测这些引脚的状态,并确定哪个外设发出了中断请求】,中断控制器会将中断请求的优先级进行排序,然后将最高优先级的中断请求发送给CPU。
  • CPU保存当前程序的运行环境,然后调用中断服务程序 (ISR)来处理中断。
  • 在ISR中通过读取外设的相关寄存器来识别中断的类型,并进行相应的处理。

将外设中断通知给CPU

在这里插入图片描述

SUBSRCPND寄存器

  • SUBSRCPND寄存器用来标明子中断 (如:INT_RXDO)是否发生。S3C2440有15个子中断,SUBSRCPND中每一位对应一个子中断,当这些子中断发生时,相应的位被置为1清除子中断只需向SUBSRCPND寄存器中相应位写入1。

在这里插入图片描述

INTSUBMSK寄存器

  • INTSUBMSK寄存器用来屏蔽SUBSRCPND寄存器所标示的中断。INTSUBMSK寄存器中某位被设为1时,相应的子中断被屏蔽。设为0时,表示子中断被允许。

在这里插入图片描述

SRCPND寄存器

  • SRCPND中每一位用来标明一个 (或一类)中断是否已经发生。例如: SUBSRCPND寄存器中的子中断INT_RXDO发生了,且没有被INTSUBMSK屏蔽,则SRCPND的INT UARTO位被置1。SRCPND寄存器的清除与SUBSRCPND寄存器相似,若想清除某一位,往此位写入1。

在这里插入图片描述

INTMSK寄存器

  • INTMSK寄存器用来屏蔽SRCPND所标示的中断。INTMSK某位被设置为1时,对应的中断被屏蔽,设置为0时,相应中断被允许。INTMSK只能屏蔽设为IRQ的中断,不能屏蔽设为FIQ的中断。

在这里插入图片描述

INTMOD寄存器

  • 当INTMOD寄存器中某位被设置为1时,它所对应的中断源会被设置为FIQ模式,即此中断发生时,CPU将进入快速中断模式,这通常用来处理特别紧急的中断。当该位被置为0时,表示为IRQ模式。

在这里插入图片描述

INTPND寄存器

  • 经过中断优先级仲裁器选出优先级高的中断后,这个中断在INTPND寄存器中的相应位被置1,随后,CPU将进入中断模式处理它。同一时间内,此寄存器只有一位被置1;在ISR中可以根据这个位确定中断类型。清除该中断时,往这个位写入0。

在这里插入图片描述

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

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

相关文章

Linux shell编程学习笔记33:type 命令

目录 0 引言1 type 命令的功能和格式 1.1 type命令的功能1.2 type 命令的格式2 type命令用法实例 2.1用type命令查看shell内置命令(以echo命令为例)2.2 用type命令查看别名(以ls命令为例)2.3 用type命令同时查看shell内置命令和别…

抽象类和接口(超重点!!)

[本节目标] 1.抽象类 2.接口 3.Object类 1.抽象类 1.1 抽象类概念 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象&a…

LabVIEW发开发电状态监测系统

LabVIEW发开发电状态监测系统 对发电设备的持续监测对于确保可靠的电力供应至消费者极为重要。它不仅能够及时提醒操作员注意发电设备的潜在损坏,还能减少由于设备故障造成的停机时间。为了达到这一目标,开发了一款基于LabVIEW的软件,专门用…

C语言进阶之路之内存镜像与字符操作函数篇

目录 一、学习目标: 二、内存镜像 什么是进程 C进程内存布局 栈内存 静态数据 数据段(存储静态数据)与代码段 堆内存 三、字符操作函数 函数strstr 函数strlen strlen与sizeof的区别 函数strtok 函数strcat与strncat 函数strc…

string类:`reserve()`,`resize()`详解

string类的重要接口说明(1):reserve(),resize() 一、reserve() 和 resize() 注意不要把 reserve(储备) 和 reverse(逆向) 搞混了! 1.1 reserve():用于为字符串预留空间(扩容),以便后续操作可以…

【MySQL数据类型】

目录: 前言数据类型分类整数类型tinyintbit 小数类型floatdecimal 字符串类型charvarchar日期和时间enum & set在集合中查找find_in_set 前言 剑指offer:一年又4天 数据类型分类 整数类型 tinyint 整数类型都分为有符号和无符号两种,默…

Linux重要基本命令

重要基本命令 1.ls命令 语法: ls [选项][目录或文件] 功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。 常见的选项包括: -l:以长格式显示文件信息&#xf…

git 使用记录

远程仓库为空初始化 初始化本地仓库 git init 在本地仓库书写代码(这里可以编辑一个文本文件做测试,如hello.txt) 5)执行:git add 要让git管理的文件(git add hello.txt)>执行完此操作将我…

手持机|三防智能手机_4寸/5寸/6寸安卓系统三防手机PDA手持终端方案

随着科技的不断发展,三防手持机作为一种多功能设备,正逐渐在各行业得到广泛应用。这款手持机采用高性能处理器,支持高精度北斗定位和工业本安防爆功能,并具备IP67级防水防尘性能和1.5米防跌落能力。因此,它在仓储管理、…

【Docker】从零开始:17.Dockerfile基本概念

【Docker】从零开始:17.Dockerfile 概述1.什么是Dockerfile2.Dockerfile构建三大步骤3.Docker执行Dockerfile流程 一张图理解Dockerfile常用保留指令~FROM~~MAINTAINER~~RUN~两种格式 ~EXPOSE~~WORKDIR~~USER~~ENV~~ADD~~COPY~两种格式 ~VOLUME~~CMD~两种格式注意 ~…

Mac端 DevEco Preview 窗口无法展示,提示文件中的node.dir错误

语雀知识库地址:语雀HarmonyOS知识库 飞书知识库地址:飞书HarmonyOS知识库 DevEco版本:Build Version: 3.1.0.501, built on June 20, 2023 环境信息 问题描述 打开 Preview 标签窗口后,提示Preview failed。 Run窗口提示如下 F…

Stable Diffusion AI绘画系列【18】:东方巨龙,威武霸气

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

PyTorch 基础篇(2):线性回归(Linear Regression)

# 包import torchimport torch.nn as nnimport numpy as npimport matplotlib.pyplot as plt # 超参数设置input_size 1output_size 1num_epochs 60learning_rate 0.001 # Toy dataset # 玩具资料:小数据集x_train np.array([[3.3], [4.4], [5.5], [6.71], [6.…

2024年江苏省职业院校技能大赛信息安全管理与评估 第三阶段学生组(样卷)

2024年江苏省职业院校技能大赛信息安全管理与评估 第三阶段学生组(样卷) 竞赛项目赛题 本文件为信息安全管理与评估项目竞赛-第三阶段样题,内容包括:网络安全渗透、理论技能与职业素养。 本次比赛时间为180分钟。 介绍 GeekSe…

【C++】简单工厂模式

2023年12月6日,周三下午 今天又学习了一次简单工厂模式 每多学习一次,都会加深对设计模式的理解 目录 什么是简单工厂模式简单工厂模式的优缺点举例说明 什么是简单工厂模式 简单工厂模式(Simple Factory Pattern)是一种创建型…

香港科技大学广州|机器人与自主系统学域博士招生宣讲会—北京专场!!!(暨全额奖学金政策)

在机器人和自主系统领域实现全球卓越—机器人与自主系统学域 硬核科研实验室,浓厚创新产学研氛围! 教授亲临现场,面对面答疑解惑助攻申请! 一经录取,享全额奖学金1.5万/月! 时间:2023年12月09日…

虚拟机配置网络(这里以centos为例)

①、点击“编辑”里面的“虚拟网络编辑器”,取消勾选DHCP服务将IP地址分配给虚拟机。 2.点击nat设置,看看对应的子网ip和网关地址还有子网掩码,然后在安装虚拟机生成的vmware8适配器配置中配置和刚刚nat配置中一样的配置 3,然后和第二部一样…

git 面试字节时,老师问:合并分支中 rebase 和 merge 的区别

实际开发工作的时候,我们都是在自己的分支开发,然后将自己的分合并到主分支,那合并分支用2种操作,这2种操作有什么区别呢? git上新建一个项目,默认是有master分支的,将项目克隆到本地&#xff…

聚观早报 |东方甄选将上架文旅产品;IBM首台模块化量子计算机

【聚观365】12月6日消息 东方甄选将上架文旅产品 IBM首台模块化量子计算机 新思科技携手三星上新兴领域 英伟达与软银推动人工智能研发 苹果对Vision Pro供应商做出调整 东方甄选将上架文旅产品 东方甄选宣布12月10日将在东方甄选APP上线文旅产品,受这一消息影…

python二维数组创建赋值问题:更改单个值却更改了所有项的值

test_list [] dic1 {} test_list [dic1 for _ in range(3)] ll [1, 2, 3]for i in range(3):test_list[i][value] ll[i]print(test_list)运行结果:每次赋值都更改了所有项 原因:python的二位数据创建方式就是这样,官方文档中有描述Wha…