arm中断保护和恢复_嵌入式ARM系统异常和中断处理知识总结

关于异常处理,分为三部分:

1. ARM异常和模式:core处理异常时的操作,几种模式介绍。
2. Vector table:
3. 异常优先级
4. lr偏移:几种异常如何返回

异常和中断处理简介

在嵌入式系统中异常处理是核心之一。高效的处理能够极大的提升系统的性能。
ARM处理器一共有7种可以暂停指令的执行序列的异常。
主要分为三个部分:

点击这里1小时彻底掌握中断 创客学院带你搞定异常和中断处理


1. Exception handling
2. Interrupts
3. Interrupt handling schemes
今天我们主要介绍第一部分

Exception Handling

1.ARM Processor Exceptions And Modes

任何一种中断模式都可以通过手动的修改cpsr的值来进入。但是User和System模式是仅有的2个不能由相应中断进入的模式,换句话说,我们必须要通过手动修改cpsr才能进入。

90b20f46ec2ada439cedcd403a0cf7ae.png

当一个异常产生的时候,core会自动进行如下4步:
1. saves the cpsr to the spsr of the exception mode
2. saves the pc to the lr of the exception mode
3. sets the cpsr to the exception mode
4. sets the pc to the address of the exception handler

需要注意的是,当异常产生的时候,ARM处理器总是会切换到ARM状态。

2.Vector Table

f5dc3522e89a036707fd2adbdc8d1ddc.png

handler定位在相应内存位置中,如下图的IRQ,FIQ

0x00000018: 0xe59ffa38 IRQ ; ldr pc, [pc, #irq]
0x0000001c: 0xe59ffa38 FIQ ; ldr pc, [pc, #fiq]

3.Exception Priorities

ddaae9bcd10a6e2aa4b5ddce3604fa64.png

4.Link Register Offset

7bf7b03ea083c8dec8f3004b5c56a9e6.png

如下三种从IRQ和FIQ异常处理返回的例子

例1:

handler

...

SUBS pc, r14, #4 ;pc = r14 -4

因为SUB后的S和pc作为目标寄存器,cpsr的值会自动从spsr中恢复出来

例2:

handler

SUB r14, r14, #4 ;r14 -= 4

...

<code>

...

MOVS pc, r14

r14 = r14 -4, pc = r14 , cpsr =spsr(因为S)

例3:

handler

SUB r14, r14, #4 ; r14 = r14 - 4

STMFD r13!, {r0-r3, r14} ;store context

...

LDMFD r13!, {r0-r3, r14}^ ;return

STMFD,LDMFD 分别提供了pop/push的功能。STMFD sp!, {r0-r3, r14}就是依次将r14, r3, r2, r1放入栈中。LDMFD r13!, {r0-r3, r14}^则依次反向取出。^ 这个符号,则强制cpsr从spsr中恢复出来。

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

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

相关文章

计算机工作站 曙光,曙光桌面工作站解析

曙光桌面工作站内部架构从整个结构设计来看&#xff0c;整机采用10升小机箱设计&#xff0c;尺寸为326x90x333.4mm&#xff0c;重量在5KG左右&#xff1b;支持垂直放置或横置&#xff0c;节省办公空间。接口方面&#xff0c;整机在前面板提供了4个USB 3.0接口&#xff0c;后置接…

查看网卡命令 uefi_大神教你开机进入UEFI模式的方法,非常简单

启动电脑时&#xff0c;如果要更改启动优先级、启用或禁用安全启动或更改任何其他低级设置&#xff0c;则需要启动到UEFI模式。根据主板制造商的不同&#xff0c;必须按键盘上的特定键或组合键才能进入UEFI模式。尽管初始屏幕显示了需要按下的键&#xff0c;但对于初学者来说却…

计算机网络拓扑结构说课稿,计算机网络应用基础说课稿修稿稿

计算机网络应用基础说课稿修稿稿 (6页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;19.90 积分计算机网络的分类说课稿第1页共6页计算机网络的分类说课稿蓬溪县中等职业技术学校唐湘各位评委老师大家…

扩展源_瑞萨电子推出具备反向充电WattShare TRx模式的 15W无线充电电源P9415R接收器,扩展无线电源产品线...

News全球领先的半导体解决方案供应商瑞萨电子集团(TSE&#xff1a;6723)日前宣布推出采用瑞萨独有WattShareTM技术的P9415-R无线电源接收器&#xff0c;作为其无线电源解决方案的最新成员。新型15W无线电源接收器使智能手机、移动电源以及便携式工业和医疗设备能够对其它具有无…

postgresql存图片字段类型_PostgreSQL 入门

安装、设置、创建和开始使用 PostgreSQL 数据库。-- Greg Pittman&#xff08;作者&#xff09;每个人或许都有需要在数据库中保存的东西。即使你执着于使用纸质文件或电子文件&#xff0c;它们也会变得很麻烦。纸质文档可能会丢失或混乱&#xff0c;你需要访问的电子信息可能会…

ibm服务器 p5 硬盘,IBM虚拟化实战之p5服务器逻辑分区解读

创建 AIX 分区现在您将创建一个 AIX 分区&#xff0c;它使用 VIO Server 的 SEA 来访问网络。它还将其 rootvg 寄宿在 VIO LPAR 上。创建 AIX 服务器分区和概要除了下面的变化以外&#xff0c;创建 AIX 分区和概要的步骤与创建VIO Server 分区和概要部分中的步骤完全相同。1. 在…

cad动态块制作翻转_装X必学,手把手教你做CAD动态属性块

最近很多粉丝后台问熊大&#xff0c;如何制作CAD动态属性块&#xff0c;这个问题把我难到了。因为这个不是一句两句话能够说得清楚的&#xff0c;于是我拿出珍藏的“西蜀鄙夫”写的教程&#xff0c;并通过与我们设计过程的实际需要给大家说说。干货文章&#xff0c;大家耐心看完…

网和aoe网的区别_运动内衣与普通内衣有什么区别?运动内衣里面还需要穿文胸吗? 小家生活网20201002 11:03:04...

阅读本文前&#xff0c;请您先点击上面的“蓝色字体可以说爱情就是他们最大的软肋。不会在双鱼女那出现。在对于周边的亲戚时。她们那种温柔大方的气势。更符合妈妈的需求。整双腿没有视觉连贯性。但唯独感情这件事一直是水瓶们的知识盲区。他们双商超高。可能最开始还是会去挽…

机器人无限火力无限e符文_LOL:无限火力开黑指南 三大玩法让你快乐加倍

无限火力上线以来受到大家的热烈追捧&#xff0c;今天给大家介绍几个主流的系列&#xff0c;让你在峡谷能够感受到双倍的快乐&#xff01;超强控制流这一类英雄都是带有强力控制的&#xff0c;无限火力的80%减CD&#xff0c;能够让女坦等英雄可以打出长达几秒的完美控制技能。首…

bootstrap-table toolbar图标换文字_iPhone 也能随意换字体啦~

呔咯昨天从老大手里喜提一台 iPhone XS Max &#xff0c;终于让表妹从安卓阵营转入苹果&#xff0c;嘻嘻~当她拿着 iPhone 的时候&#xff0c;一脸懵的问我&#xff1a;iPhone 自带字体也太丑了吧&#xff0c;还我的输入法&#xff01;&#xff01;&#xff01;呔咯&#xff1a…

网络服务器分为文件服务器通信服务器和,近代中国落后、贫困的根本原因是()...

近代far, find, lights, minutes, to, right, tellA: Excuse me. Could you ____ me the way ____ the bookshop?B: Ok. Go along this road and turn____ at the traffic ____. Then go straight on. Youll ____ it next to the post office.A: Is it ____ from here?B: No,…

搭建bitwarden_Docker轻松部署Bitwarden私有密码管理系统服务

0x01. 什么是Bitwarden?开源免费的密码管理器&#xff0c;Bitwarden的原理是使用高强度的AES256 算法对你的个人数据进行本地加密&#xff0c;然后再传输到云端服务器来实现网络同步。bitwarden使用的是微软的Azure云服务器&#xff0c;利用PBKDF2 加密主密码&#xff0c;而且…

取文件 shell_webshell文件上传分析溯源

由于最近比较忙&#xff0c;暂时没有时间更新&#xff0c;所以分享分享一些其他博主文章&#xff0c;大家敬请谅解摘要&#xff1a; dirbuster扫描目录发现几个有用的东东/admin/upload.php/admin/upload1.php/admin/upload2.php访问的时候最后都会跳转到/admin/upload...dirbu…

7系统软raid_使用图形界面来配置RAID

RAID 配置起来要比 LVM 方便&#xff0c;因为它不像 LVM 那样分了物理卷、卷组和逻辑卷三层&#xff0c;而且每层都需要配置。我们在图形安装界面中配置 RAID 1和 RAID 5&#xff0c;先来看看 RAID 1 的配置方法。RAID 1 配置配置 RAID 1 时同样需要启动图形安装程序&#xff0…

合并相同数据的行_R语言笔记(六):数据框重塑(reshape2)

数据处理主要内容包括&#xff1a;1. 特殊值处理1.1 缺失值1.2 离群值1.3 日期2. 数据转换&#xff08;base vs. dplyr&#xff09;2.1 筛选&#xff08;subset vs. filter/select/rename&#xff09;2.2 排序&#xff08;order vs. arrange&#xff09;2.3 转换&#xff08;tr…

启动linux_使用 UEFI 双启动 Windows 和 Linux | Linux 中国

这是一份在同一台机器上设置 Linux 和 Windows 双重启动的速成解释&#xff0c;使用统一可扩展固件接口&#xff08;UEFI&#xff09;。来源&#xff1a;https://linux.cn/article-12891-1.html作者&#xff1a;Alan Formy-duval译者&#xff1a;郑&#xff08;本文字数&#x…

mysql+odbc+ado_MFC ado+mysql+odbc技术分享

第一步&#xff1a;建立数据库假设有一个sql文件mysql>use dbname; //创建一个数据库名为dbname的数据库(空数据库)mysql>set names utf8; //编码&#xff0c;mysql>source D:/dbname.sql; //导入一个数据库源文件创建数据库内容我做…

js 用下标获取map值_javascript怎么获取map的值?

Map对象保存键/值对&#xff0c;是键/值对的集合。任何值(对象或者原始值) 都可以作为一个键或一个值。Object结构提供了“字符串—值”的对应&#xff0c;Map结构提供了“值—值”的对应。JavaScript获取map值示例&#xff1a;map对象如下&#xff1a;var mapObject {id1001:…

python attention机制_从零开始学Python自然语言处理(26)—— 强大的Attention机制...

前文传送门&#xff1a;在上一次面试失利后&#xff0c;我回来仔细研究了一下Attention机制&#xff0c;研究完我不禁感悟&#xff0c;这机制真的厉害啊&#xff01;因为我之前面试被问到的Encoder - Decoder框架中有个瓶颈是编码的结果以固定长度的中间向量表示&#xff0c;这…

[机器人-2]:开源MIT Min cheetah机械狗设计(二):机械结构设计

目录 1、四肢朝向的选择 2、电机布局形式的选择 3、电机的选型及测试&#xff08;非常重要&#xff09; 4、结构优化 5、尺寸效应 6、其他 1、四肢朝向的选择 机械狗的结构设计&#xff0c;第一个摆在我们面前的就说四肢的朝向问题&#xff0c;如下图&#xff0c;我们是…