首页 > 其他分享 >ARM嵌入式学习--第五天

ARM嵌入式学习--第五天

时间:2024-10-23 16:18:57浏览次数:3  
标签:FIQ 优先级 -- IRQ 模式 嵌入式 中断 异常 ARM

ARM核的异常处理

-ARM核的8种异常源

-reset--复位异常

    描述:在内核复位时执行

    优先级:1级

    模式:SVC(管理模式

-undefined  instruction--未定义指令异常

    描述:流水线执行非法指令产生,该异常发生在流水线译码阶段,如果当前指令不能被识别为有效指令,将会出现此类异常

    优先级:6级

    模式:UDF(未定义模式

-SVC,SWI--软中断异常

    描述:用于程序触发软件中断执行,该异常是由应用程序自己调用时产生,该异常在管理模式(SVC)下运行

    优先级:6级

    模式:SVC(管理模式

-prefetch abort--预取指令中止异常

    描述:当一条指令从内存种取出时由于某些原因失败,且如果它能到达执行状态将会触发此异常

    优先级:5级

    模式:ABT(终止模式

-Data Abort--数据访问中止异常

    描述:如果一个预取指令试图存取一个不存在或违法的内存单元,将会触发此异常

    优先级:5级

    模式:ABT(终止模式

-FIQ与IRQ

    FIQ:一般中断异常;优先级为3级;异常工作模式为FIQ(快中断模式

    IRQ:快速中断异常;优先级为4级;异常工作模式为IRQ(慢中断模式

-FIQ较IRQ快的原因:

    一、FIQ在异常向量表位于最末

        1.所以可以直接把异常处理程序写在异常向量表之后,省去了跳转的过程

        2.而IRQ需要执行向量表对应的跳转指令后,跳转到指定的中断处理程序

    二、FIQ模式有5个私有寄存器(R8-R12)

        1.执行中断处理程序前无需压栈保存寄存器,可直接处理中断

        2.而IRQ的R8-R12寄存器是与和其它模式共用的,在中断前需要保护现场,即把R8-R12的数据保存到栈中

    三、FIQ的优先级高于IRQ

        1.俩个中断同时发生时先响应FIQ

        2.FIQ可以打断IRQ,IRQ不能打断FIQ

ARM核异常处理过程

    异常产生,ARM核自动做的事情:

        1.拷贝CPSRSPSR

        2.修改CPSR

            ①改变处理器状态进入ARM态

            ②改变处理器模式进入相应的异常模式

            ③设置中断禁止位禁止相应中断

        3.保存返回地址当前PCLR

        4.PC设置到异常向量表相应位置 

    异常产生之前,需要做的事情:

        1.设置异常向量表

        2.告诉ARM核异常向量表的基地址

        3.编写异常处理函数

            ①设置SP寄存器

            ②将通用的寄存器(r0-r12)进行压栈保护

            ③异常处理

            ④异常返回

标签:FIQ,优先级,--,IRQ,模式,嵌入式,中断,异常,ARM
From: https://blog.csdn.net/xujiashuo1/article/details/143076616

相关文章

  • 安工PTA自主智能体1-10题python
    7-1jmu-Java&Python-统计一段文字中的单词个数并按单词的字母顺序排序后输出a=input()b=[]whilea!="!!!!!":a=a.split()foriinrange(len(a)):b.append(a[i])a=input()b=list(set(b))b=sorted(b)print(len(b))iflen(b)<......
  • LeetCode刷题-移除元素
    给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素。元素的顺序可能发生改变。然后返回nums中与val不同的元素的数量。假设nums中不等于val的元素数量为k,要通过此题,您需要执行以下操作:更改nums数组,使nums的前k个元素包含不等于val的......
  • 第四章 面向对象(2)
    一.this关键字this关键字代表当前对象(哪一个对象在访问,this就表示哪个)使用this关键字引用成员变量使用this关键字引用成员方法或构造方法。在一个类的方法或构造方法内部,可以使用“this.成员变量名”这样的格式来引用成员变量名,常常用来区分同名的成员变量和局部变量。......
  • 真心安利所有老师都去用这个AI工具!!!
    让我看看还有谁在加班写教案、教学计划、家访记录blabla一系列材料呢!看到这里你的福气就来了!AI时代,有的苦咱们真的不必吃!“笔墨写作”AI产品——真正的新质生产力。集AI写教案、教学计划、主题班会策划书、教研记录、家访记录以及海量教案课件、免费PPT/展板模板等功能于一身......
  • Javascript数据类型及转换
    Javascript代码引入方式同HTML相似分为行内式、内嵌式、外链式    1.行内式:行内式是将JavaScript代码作为HTML标签的属性值使用。<ahref="javascript:alert('Hello');">test</a>代码杂乱容易混淆不推荐    2.嵌入式:也称为内嵌式,使用<script>标签包......
  • 大厂面试Java工程师为什么总爱问Spring相关问题?
    因为Spring框架自从诞生以来就一直备受开发者青睐,很多Java程序员实质上就是Spring程序员,它涵盖了Spring、Springboot、SpringCloud等诸多解决方案,一般我们都会统称为Spring全家桶!出于Spring框架在Java开发者心中中的统治地位,所以不管是面试还是工作,Spring都是绕不开的重点也是......
  • Java程序员换工作有必要刻意在金三银四或者金九银十吗?
    Java面试谈到Java面试,相信大家第一时间脑子里想到的词肯定是金三银四,金九银十。好像大家的潜意识里做Java开发的都得在这个时候才能出去面试,跳槽成功率才高!但LZ不这么认为,LZ觉得我们做技术的一生中会遇到很多大大小小的面试,金三银四(金九银十)只是机会比平时多一些,但也未必每个......
  • STM32蓝牙插座项目(hal)
    这是一个非常简单的蓝牙小项目项目要求,能够在手机上发送开启闸门时,继电器相应的打开,在手机上发送关闭闸门时,继电器相应关闭,且在开始时,发送“hello,帅气的雷先生”使用PIN脚:蓝牙:RX2TXDTX2RXDGNDGND5V5V继电器:PB6INGNDGND3.3VVCC 代码实现:1、串口蓝牙通信我们这里的蓝牙......
  • 服务器端渲染和客户端渲染(前后端分离)
    前后端分离的优势◼早期的网页都是通过后端渲染来完成的:服务器端渲染(SSR,serversiderender):客户端发出请求->服务端接收请求并返回相应HTML文档->页面刷新,客户端加载新的HTML文档;◼服务器端渲染的缺点:当用户点击页面中的某个按钮向服务器发送请求时,页面本质上只是......
  • 手把手教你如何下载千聊上面的视频课程到本地
    前言:很多同学都想把网课保存导出到本地,然后离线观看,或者转存到ipad或者电脑上大屏观看学习,但事实是很多网课只能在手机app上面观看,这里就教大家如何用学无止下载器,下载千聊上面的视频课程。(提示:操作需要用到windows系统,Mac系统暂不支持)一:网页登录千聊小课页面(登录入口: https:/......