当前位置: 首页 > article >正文

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)进行压栈保护

            ③异常处理

            ④异常返回


http://www.kler.cn/news/363699.html

相关文章:

  • 【多线程和高并发】多线程和高并发提纲
  • 链表(虚拟头节点)
  • 文件摆渡系统选型指南:如何找到最适合您的数据安全解决方案?
  • Maven入门到实践:从安装到项目构建与IDEA集成
  • FIR数字滤波器在MATLAB中的实现
  • 使用flask构建一个简单的文件同步系统
  • 倪师学习笔记-天纪-斗数星辰介绍
  • 体验先行者平台的一键生成ai神器
  • 论软件著作权
  • 数据库错误 SQLSTATE[HY000] [2002]
  • [MySQL#1] database概述 | 常见的操作指令 | MySQL架构 | 存储引擎
  • 【C#】使用vue3的axios发起get和post请求.net framework部署的API显示跨域
  • mongodb在linux下的部署
  • pyspark==堆叠
  • 【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-3
  • 洛谷 P1186 玛丽卡(最短路,并查集,线段树)
  • 【LeetCode】修炼之路-0006-Zigzag Conversion (Z 字形变换)【python】
  • Python编程指南
  • Oracle T5-2 ILOM配置
  • TH-OCR:强大的光学字符识别工具与车牌识别应用
  • 【大模型实战篇】大模型分词算法BPE(Byte-Pair Encoding tokenization)及代码示例
  • WPF的UpdateSourceTrigger属性
  • 90V转5V4A同步降压芯片WT6037
  • vue前端接包(axios)+ 前端导出excel(xlsx-js-style)
  • 植物端粒到端粒(T2T)基因组研究进展与展望
  • Android 图片相识度比较(pHash)