[ARM入门]ARM模式及其切换、异常

news2025/5/18 23:25:37

ARM技术特征

  • ARM处理器有如下特点
    • 体积小、功耗低、成本低、性能高
    • 支持Thumb(16位)/ARM(32位)双指令集,能很好地兼容8位/16位器件
    • 大量使用寄存器,指令执行速度更快
    • 大多数数据操作都在寄存器中完成
    • 寻址方式灵活简单,执行效率高
    • 指令长度固定

ARM的基本数据类型

ARM采用的是32位架构,ARM的基本数据类型有以下三种

  • Byte:字节,8bit
  • Halfword:半字,16bit(半字必须与2字节边界对齐)
  • word:字,32bit(字必须与4字节边界对齐)

存储器可以看作是序号为0-2^32-1的线性字节阵列,每一个字节都有唯一的地址

ARM处理器工作模式

Cortex-A系列的ARM处理器工作模式有8种:
在这里插入图片描述

  • 用户模式
    用户模式是用户程序的工作模式
    他运行在OS的用户态,没有权限去操作其他硬件资源,只能执行处理自己的数据
    也不能切换到其他模式下,想要访问硬件资源或切换到其他模式只能通过软中断(SWI)或产生异常

  • 系统模式
    系统模式是特权模式,不受用户模式的限制
    用户模式和系统模式共用一套寄存器
    操作系统在该模式下可以方便的访问用户模式的寄存器,而且操作系统的一些特权任务可与使用这个模式访问一些受控的资源

  • 一般中断模式
    一般中断模式也叫普通中断模式,用于处理一般的中断请求
    通常在硬件产生中断信号之后自动进入该模式
    该模式为特权模式,可以自由访问系统硬件资源

  • 快速中断模式
    是相对于一般中断模式而言的,它是用来处理对时间要求比较紧急的中断请求
    主要用于高速数据传输及通道处理中

  • 管理模式(SVC)
    是CPU上电后默认模式
    因此在该模式下主要用来做系统的初始化
    软中断处理也在该模式下,当用户模式下的用户程序请求使用硬件资源时通过软件中断进入该模式

  • 中止模式
    用于支持虚拟内存或存储器保护
    当用户程序访问非法地址,没有权限读取的内存地址时,会进入该模式
    linux下编程时经常出现的segment fault通常都是在该模式下抛出返回的

  • 未定义模式
    用于支持硬件协处理器的软件方针,CPU在指令的译码阶段不能识别该指令操作时,会进入未定义模式

  • Monitor
    是为了安全而扩展出的用于执行安全监控代码的模式
    也是一种特权模式

模式切换

ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变
应用程序运行在用户模式下
当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的

异常(Exception)

指由处理器执行指令导致原来运行程序的种植
异常与指令运行相关,是CPU执行程序产生的,是同步的,可分为精确异常和非精确异常
异常处理遵守严格的程序顺序,不能嵌套,只有当第一个异常处理完并返回后才能处理后续的异常

  • ARM中的异常源
    在这里插入图片描述
  • 异常源与模式关系
    • 快速中断请求异常进入快速中断模式,支持高速数传输及通道处理(FIQ异常响应时进入此模式)
    • 中断请求异常进入中断模式,用于通用中断处理
    • 欲取指中止,数据中止异常进入中止模式,用于支持虚拟内存和/或存储器保护
    • 未定义指令异常进入未定义模式
    • 支持硬件协处理器的软件仿真软件中断(swi),复位异常(reset)进入管理模式,操作系统保护代码

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

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

相关文章

亚马逊云AI应用科技创新下的Amazon SageMaker使用教程

目录 Amazon SageMaker简介 Amazon SageMaker在控制台的使用 模型的各项参数 pytorch训练绘图部分代码 Amazon SageMaker简介 亚马逊SageMaker是一种完全托管的机器学习服务。借助 SageMaker,数据科学家和开发人员可以快速、轻松地构建和训练机器学习模型&#…

基于STM32单片机抢答器设计

**单片机设计介绍, 基于STM32单片机抢答器设计-Proteus仿真 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于STM32单片机的抢答器设计可以用于教育和培训场景中的抢答游戏或考试环节。以下是一个基本的介绍设计步骤…

翻译环境(编译和链接)(简单讲解,理解图就行)

前言 这是我们学习代码的最重要的一个知识点之一,因为我们要去运行一个代码并不是简单的去直接出结果,而是经过了很多我们看不到的步骤,我们在这里以C语言为例子在Linux的环境下讲解,大家没有学过Linux的不用担心,最后…

creo6.0教程之旋转,扫描

目录 一、旋转:二、扫描: 一、旋转: 案例1:旋转一个球: 任意一个平面绘制草图: 确定草图后,然后退出草图,点击旋转: 案例2:旋转一个杯子雏形: …

Clickhouse学习笔记(11)—— 数据一致性

使用合并树引擎时,无论是ReplacingMergeTree还是SummingMergeTree,都只能保证数据的最终一致性,因为数据的去重、聚合等操作会在数据合并的期间进行,而合并会在后台以一个不确定的时间进行,因此无法预先计划&#xff1…

【Redis】redis的下载安装

目录 1.window安装 2.Linux安装 下载 解压 移动redis目录 编译 1.window安装 在github 下载redis的安装包 https://github.com/microsoftarchive/redis/releases 下载完后安装相应的目录下,比如我是放在c盘的Program Files下 开启redis,双击运行…

Java必刷入门递归题×5(内附详细递归解析图)

目录 1.求N的阶乘 2.求12...N的和 3.顺序打印数字的每一位 4.求数字的每一位之和 5.求斐波拉契数列 1.求N的阶乘 (1)解析题目意思 比如求5的阶乘,符号表示就是5!;所以5!5*4*3*2*1我们下面使用简单的…

C++套接字库sockpp介绍

sockpp是一个开源、简单、现代的C套接字库,地址为:https://github.com/fpagliughi/sockpp,最新发布版本为0.8.1,license为BSD-3-Clause。目前支持Linux、Windows、Mac上的IPv4、IPv6和Unix域套接字。其它*nix和POSIX系统只需很少的…

冯·诺伊曼体系结构--操作系统

文章目录 1.认识冯诺依曼系统1.1约翰冯诺依曼1.2冯诺依曼结构1.3存储器的读写速度1.4对冯诺依曼结构的认识1.5冯诺依曼结构在生活中的演示 2.操作系统--“搞管理”的软件2.1概念2.2OS存在的意义2.3管理的方式2.4系统调用和库函数概念 1.认识冯诺依曼系统 1.1约翰冯诺依曼 1.2冯…

【论文】利用移动性的比例公平蜂窝调度测量和算法

(一支笔一包烟,一节论文看一天 )(一张纸一瓶酒,一道公式推一宿) 摘要1. 引言2. 相关工作3. 模型和问题公式4. 预测FPF调度 ( P F ) 2 S (PF)^2S (…

js 加密解密 cryptojs(对称加密库)

js 加密解密可以使用 crypto-js 这是一个对称加密的库, 可以使用 AES DES 但没有 rsa 等非对称加密的方法 安装方法 npm install crypto-js 它可以进行 MD5 SHA-1 SHA-256 Base64 AES DES 等算法和加密 import crypto from "crypto-js"let md5binary cry…

通过防火墙禁止访问指定网站(个人电脑,Windows系统)

背景 近年沉迷B站视频不能自拔,使用了诸多手段禁用,都很容易破戒。为了彻底杜绝B站的使用,决定手动进行设置。在ChatGPT和文心一言提问,得到了以下四种方法(按个人认为的戒断水平由低到高排序):…

AI驱动的软件测试,何时可以信赖?

综合编译|TesterHome社区 作者|Yuliya Vasilko,数据工程师 以下为作者观点: 越来越多的组织转向人工智能(AI)驱动的测试解决方案,以简化质量保证流程并提高软件可靠性。 随着对人工智能的依赖程…

HDRP图形入门:HDRP渲染管线depth翻转

新项目开坑HDRP渲染管线,花了些时间把项目开发框架和图形工作流更新到最新版本,其间发现HDRP中深度信息和buildin渲染管线翻转了。 以前的buildin渲染管线,距离摄像机越近depth->0,越远depth->1,这也很好理…

JAVA毕业设计110—基于Java+Springboot+Vue的房屋租赁系统小程序(源码+数据库)

基于JavaSpringbootVue的房屋租赁系统小程序(源码数据库)110 一、系统介绍 本系统前后端分离 本系统分为用户、房东、超级管理员三种角色 1、用户: 登录、注册、房屋搜索、房屋收藏、看房预约、租房申请、租房记录、看房记录、收藏记录、我的消息、个人信息修改…

js动态显示当前时间

目录 1、封装时间函数 2、在页面写一个div标签,用来存放时间 3、获取div标签,开启定时器,时间为1000ms 4、先调用时间函数,防止页面加载延迟,再在定时器里调用 完整代码 效果图 1、封装时间函数 function getTi…

美团2024届秋招笔试第二场编程真题-小美的数组构造

分析:暴力角度看,因为数组a和b总和一样,所以实际上是将总和m划分为n个数字,且每个数字都和a数组不一样的方案数。当然会超时。从数据角度看,平方级别算法是可以的。 其实用动态规划的四步法分析起来还是很简单的&…

游戏平台采集数据

首先,你需要在你的项目中添加Kotlin的网络库,例如OkHttp。你可以在你的build.gradle文件中添加以下依赖: dependencies {implementation com.squareup.okhttp3:okhttp:4.9.0 }然后,你可以使用以下代码来创建一个基本的网络爬虫&a…

数据库安全:MySQL 身份认证漏洞(CVE-2012-2122)

数据库安全:MySQL 身份认证漏洞(CVE-2012-2122) MySQL 身份认证漏洞是一个身份认证绕过漏洞,该漏洞的核心原理涉及到 MySQL 在处理身份认证时的一个安全缺陷,这个漏洞可以使攻击者可以绕过安全身份认证,从…

【大模型】大语言模型语料下载

文章目录 概述Hugging Faceobs操作git-lfs例子RedPajama-Data-1TSlimPajama-627B/git clone续传 数据格式参考资料 概述 大模型训练中语料是非常重要的,目前公网上有各种各样的语料可以供下载,但是不可能每个用户、每次训练任务都通过公网去拉取语料&am…