嵌入式面经-ARM体系架构-寄存器与异常处理

  • ARM寄存器组织

    • 寄存器概念

      • 寄存器是处理器内部的存储器,没有地址

    • 寄存器作用

      • 一般用于暂时存放参与运算的数据和运算结果

    • 在某个特定模式下只能使用当前模式下的寄存器,一个模式下特有的寄存器别的模式下不能使用

      • 一共是40个寄存器

    • 寄存器分类

      • 通用寄存器

      • 专用寄存器

        • R15(PC):程序计数器,用于存储当前取址指令的地址

        • R14(LR):链接寄存器,执行跳转指令(BL/BLX)时,LR会自动保存跳转指令下一条指令的地址,产生异常时,对应异常模式下的LR会自动保存被异常打断的指令的下一条指令的地址

        • R13(SP):栈指针:用于存储当前模式下的栈顶地址

        • CPSR:当前程序状态寄存器、控制当前CPU处于哪种状态

      • 控制寄存器

  • ARM异常处理

    • 异常的概念

      • 处理器正常执行程序的过程中可能会遇到一些不正常的事情(例如中断),这是处理器会暂停当前的程序转而处理这个异常事件,等处理结束后再返回被异常打断的点继续执行原本的程序。

    • 异常处理机制

      • 不同处理器上应对异常的流程大体相同,但是再具体实现上可能会有所区别,例如处理器遇到哪些事情会被认定为异常事件、遇到异常事件后处理器有哪些动作、处理器将如何转到异常处理程序等这些细节被成为处理器的异常处理机制

      • arm异常源

        • 导致异常发生的事件成为异常源

        • 异常源

          • FIQ:快速中断请求,比IRQ优先级高

          • IRQ:外部中断请求

          • Reset:复位

          • Software Interrupt:执行swi指令

          • Data Abort:数据终止

          • Prefetch Abort:指令预取终止

          • Undefined Instruction:遇到不能处理的指令

        • 异常模式

          • ARM的基本工作模式中有五种工作模式

          • 在arm工作中会经常遇到模式之间的切换

        • 注意区分异常源和异常模式

    • ARM异常响应

      • 高优先级中断可以打断低优先级中断,同等优先级中断和比自己更低优先级的中断不能打断正在进行的中断

      • ARM产生异常后的动作 (自动完成)

        • 拷贝CPSR寄存器中的内容到对应异常模式下的SPSR寄存器中

        • 修改CPSR寄存器的值:修改中断禁止位禁止相应的中断,修改模式位进入相应的异常模式,修改状态位进入ARM状态 (处理异常必须切换成ARM模式)

        • 保存放回地址到对应异常模式下的LR(R14_*)寄存器中

        • 设置PC(R15)寄存器为相应的异常向量

      • 当前指令执行完才会处理异常,比如假如正在执行一条指令,这时突然来了异常,不管这条指令是刚刚执行还是已经将要结束,都要先执行完才会处理异常

    • 异常向量表

      • 因为异常向量表空间有限不会在这里写异常处理程序,而是在对应的位置写一条跳转指令使其跳转到指定的异常处理程序的入口,这个异常处理程序的入口是固定的,其实也就是异常处理的回调函数。

      • 遇到异常后处理器自动将PC(R15)寄存器修改为对应的地址

      • 表中为每个异常源分配了四个字节的存储空间

      • 异常向量表的本质是内存中的一段代码(32字节)

    • 异常优先级

      • 多个异常同时产生时的顺序

        • Reset:优先级最高

        • Data Abort

        • FIQ

        • IRQ

        • Prefetch Abort

        • Software Interrupt

        • Undefined instruction

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

      • 进入IRQ异常后,首先就是要保护现场,也就是将原本寄存器中的数据存储起来,因为IRQ模式和User模式下,很多寄存器是公用的,如果直接操作会把之前的覆盖掉

      • 为什么只有r8到r12是FIQ特有的?如果将所有的寄存器都变为自己特有的,不是更快吗?

        • 考虑到不同模式之间要交互数据,比如USER要和FIQ模式交互数据,肯定是放到共有的寄存器比较方便

    • ARM微架构

      • 硬件只有一套,但是多条流水线同时进行,如果只有一条流水线,取址后就被闲置了,所以要多流水线进行,不断进行取址

      • 多核处理器

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

勾八头歌之数据科学导论—数据预处理

第1关:引言-根深之树不怯风折,泉深之水不会涸竭 第2关:数据清理-查漏补缺 import numpy as np import pandas as pd import matplotlib.pyplot as pltdef student():# Load the CSV file and replace #NAME? with NaNtrain pd.read_csv(Tas…

http协议中的强缓存与协商缓存,带图详解

此篇抽自本人之前的文章:http面试题整理 。 别急着跳转,先把缓存知识学会了~ http中的缓存分为两种:强缓存、协商缓存。 强缓存 响应头中的 status 是 200,相关字段有expires(http1.0),cache-control&…

C++中类模板的定义和使用

类模板的定义和使用 引言类模板声明和定义有问有答 示例运行结果注意参数传递ref 引言 类模板就是一个模板,但是数据可以适用多种类型。类模板使用时需要模板的特例化,就变成了模板类。 本文只要是记录一下模板的使用。同时对于引用和右值引用传参做一下…

几个redis常用命令

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 ping:测试连接是否存活 例如:测试当前redis数据库是否存活 127.0.0.1:6379> ping #返回PONG&am…

RHEL9 DNF/YUM仓库管理软件包

DNF/YUM仓库管理软件包 一个基于RPM包的软件包管理器能够从指定的服务器自动下载RPM包并且安装,自动处理依赖性关系,并且一次性安装所有依赖的软件包C/S模式 Server服务端提供RPM软件包与数据库文件repodataClient客户端使用dnf仓库 常用组合 组合参…

半导体湿法技术有什么优势

湿法蚀刻工艺的原理是使用化学溶液将固体材料转化为液体化合物。选择性非常高, 因为使用的化学品可以非常精确地适应单个薄膜。对于大多数解决方案,选择性大于100:1。 批量蚀刻 在批量蚀刻中,可以同时蚀刻多个晶圆,过滤器和循环…

返回值不同算方法重载么?为什么?

1、典型回答 返回值不同不算方法重载 方法重载(Overloading)是指在同一个类中定义了多个同名方法,但它们的参数列表不同,方法重载要求方法: 名称相同参数类型、参数个数或参数顺序,至少有一个不同 方法…

【SQL】601. 体育馆的人流量(with as 临时表;id减去row_number()思路)

前述 知识点学习: with as 和临时表的使用12、关于临时表和with as子查询部分 题目描述 leetcode题目:601. 体育馆的人流量 思路 关键:如何确定id是连续的三行或更多行记录 方法一: 多次连表,筛选查询方法二&…

普发Pfeiffer氦质谱检漏仪HLT260/270系列电路图电路板图纸和接线针脚含义非常详细内部国外资料中英操作说明培训PPT课件打包13个文档

普发Pfeiffer氦质谱检漏仪HLT260/270系列电路图电路板图纸和接线针脚含义非常详细内部国外资料中英操作说明培训PPT课件打包13个文档

使用 gin-api-mono 创建简单的 TODO 服务

介绍 首先介绍一下 gin-api-mono 这个项目,这个项目是由 go-gin-api 作者基于用户的需求衍生出来的一个项目。因为有些用户觉得 go-gin-api 是一个前后端都有的一个开源项目,对于很多用户来说,前端部分是不需要的,所以作者看到这…

护眼灯什么价位的好用?推荐五款好价护眼台灯

如今,我们不难发现许多年轻人早早地就戴上了眼镜,近视问题日益严重。在改善近视问题的众多因素中,营造适宜的照明环境,特别是选择一款合适的护眼台灯,显得尤为重要。然而,对于初次选购护眼台灯的人来说&…

通过sqoop把hive数据到mysql,脚本提示成功,mysql对应的表中没有数

1、脚本执行日志显示脚本执行成功,读写数量不为0 2、手动往Mysql对应表中写入数据十几秒后被自动删除了 问题原因: 建表时引擎用错了,如下图所示 正常情况下应该用InnoDB

Request和Response对象

Request和Response都是Servlet的service方法的参数,Request负责获取请求数据,而Response负责设置相应数据~ 一.Request 1.继承体系 Tomcat负责解析数据,因此由Tomcat来提供实现类~ 2.获取请求数据 请求行 请求头 请求体 需要注意的是只有…

【Greenhills】MULTI IDE工程管理的目录结构

【更多软件使用问题请点击亿道电子官方网站查询】 1、 文档目标 关于的GHS的Project Manager中工程的目录结构的组成 2、 问题场景 在GHS中去创建项目后,对于在Project Manager窗口中的目录结构不太清晰,目录中有多个gpj文件,无法确认哪个是…

掼蛋如何识人

掼蛋的吸引力在于其充满变化和挑战性。它不仅仅可以考验玩家的技巧、智慧和决策能力,也是一种社交活动。通过玩家之间的出牌习惯和方式,能快速帮助我们推测出对方的思维方式和性格特征。 一、保守型 这类玩家按部就班,在游戏开始的时候&#…

【JAVA】HashMap扩容性能影响及优化策略

🍎个人博客:个人主页 🏆个人专栏:JAVA ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 结语 我的其他博客 前言 在软件开发中,HashMap是一种常用的数据结构,但在处理大量数据时,其扩容…

广西省行政村边界shp数据/广西省乡镇边界/广西省土地利用分类数据/径流分布

广西壮族自治区,地处中国南部,北回归线横贯中部。南北以贺州——东兰一线为界,此界以北属中亚热带季风,以南属南亚热带季风。 数据范围:全国行政区划-行政村界 数据类型:面状数据,全国各省市县…

华为数通方向HCIP-DataCom H12-821题库(多选题:141-160)

第141题 以下关于802.1X认证的触发机制,描述正确的有? A、802.1X认证不能由认证设备(如802.1交换机)发起 B、802.1X客户端可以组播或广播方式触发认证 C、认证设备可以以组播或单播方式触发认证 D、802.1X认证只能由客户端主动发起 【参考答案】BC 【答案解析】 第142题 以…

java-ssm-基于jsp商场停车服务管理信息系统

java-ssm-基于jsp商场停车服务管理信息系统

Python网站的搭建和html基础

1.Python网站代码及讲解 一般我们搭建小型的网站就用flask库就行了。 (1)安装flask库 安装完python后,按住windows徽标键和r,弹出“运行”,在里面输入cmd。 回车打开,输入“pip install flask”。 (2&am…