嵌入式学习笔记——ARM的编程模式和7种工作模式

 

ARM提供的指令集

    ARM态-ARM指令集(32-bit)

    Thumb态-Thumb指令集(16-bit)

    Thumb2态-Thumb2指令集(16 & 32 bit)

Thumb指令集是对ARM指令集的一个子集重新编码得到的,指令长度为16位。通常在处理器执行ARM程式时,称处理器处于ARM状态;当处理器执行Thumb程式时,称处理器处于Thumb状态。Thumb指令集中的数据处理指令的操作数仍然为32位,指令寻址地址也是32位的。(在处理中断程序中只能使用ARM态)。

Thumb2指令集是Thumb指令集的一个扩充,既包含了16位也包含了32位,几乎可以提供与ARM相同的功能,但是指令密度(单位内存所存放的指令数)与Thumb指令集相似。有了Thumb2指令集就不再需要在ARM与Thumb两者之间切换了,因为Thumb2就够了!

更多嵌入式学习笔记、实战项目,点击这里即可免费领取

 

ARM的7种工作模式

  -User:非特权模式,大部分任务执行在这种模式

  -FIQ(快中断):当一个高优先级(fast)中断产生时将会进入这种模式

  -IRQ(中断):当一个低优先级(normal)中断产生时将会进入这种模式

  -Supervisor(svc):当复位或者软中断指令执行时将会进入这种模式

  -Abort(中止abt):当存取异常时将会进入这种模式

  -Undef(未定义und):当执行未定义指令时会进入这种模式

  -System:使用和User模式相同寄存器集的特权模式

ARM有7种工作模式,除User为非特权模式(普通模式)外,其他6中工作模式为特权模式(Privilege),特权模式中除系统模式外,其他5种异常模式,其中Abort、Undef是异常中的异常。CPU同时只能在一种模式下工作,模式的切换,可以是程序员通过代码主动切换(通过写CPSR寄存器);也可以是CPU在某些情况下自动切换(例如按键或触摸屏产生中断,CPU就会自动进入中断异常模式)。各种模式下权限和可以访问的寄存器不同。

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

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

相关文章

Jtti:如何通过宝塔面板快速安装WordPress博客源码?

通过宝塔面板快速安装WordPress博客源码是非常简单的。宝塔面板提供了图形化界面,使安装过程变得直观和方便。以下是通过宝塔面板安装WordPress的步骤: 登录宝塔面板: 打开您的Web浏览器,访问您的宝塔面板地址(通常是 …

【Spring Boot】数据库持久层框架MyBatis — MyBatis简介

MyBatis简介 本节首先会介绍什么是ORM、什么是MyBatis、MyBatis的特点以及核心概念,最后介绍MyBatis是如何启动、如何加载配置文件的? 1.什么是ORM ORM(Object Relational Mapping,对象关系映射)是为了解决面向对象…

LoginPage.vue中的form

const form ref() const login async () > {await form.value.validate()const res await userLoginService(formModel.value)console.log(res)UserStore.setToken(res.data.token)ElMessage.success(登录成功)router.push(/) }<el-form:model"formModel":r…

高亮img、pdf重点部分(html2canvas、pdfjs-dist、react-pdf)

可用业务场景 报销单据审批中&#xff0c;高亮发票部分 需求 后台返回一张图片或者pdf、返回一组坐标&#xff0c;坐标类型[number,number,number,number]&#xff0c;分别代表了x、y、width、height。需要根据坐标在图片上高亮出来坐标位置。如下图 高亮的坐标是&#xff1…

Android 权限机制与及运行时权限申请示例

一、Android 权限机制 安装时权限声明 权限机制说明 安装软件时弹出软件所需要申请的全部权限&#xff0c;如果用户认可软件申请的权限&#xff0c;就会继续安装软件&#xff1b;如果用户不认可所申请的权限&#xff0c;就可以拒绝安装。 实现方式 在 AndroidManifest.mxl …

linux————keepalived+LVS(DR模式)

一、作用 使用keepalived解决LVS的单点故障 高可用集群 二、 调度器配置 环境 两台LVS服务 一主一备 两台web服务 采用nginx &#xff08;实现LVS负载均衡&#xff09; 服务ip 主LVS 192.168.100.3 备LVS 192.168.100.6 web1 192.…

nestjs:docker build时执行npm install sharp提示downloading libvips socket hang up

问题&#xff1a; 如题 参考&#xff1a; sharp - High performance Node.js image processing 参考chinese-mirror处理 原因&#xff1a; 默认是从github上下载libvips库&#xff0c;但是使用socket协议&#xff0c;linux下不挂载梯子是无法加速的&#xff0c;因此得更换下镜像…

创作2周年纪念日-特别篇

创作2周年纪念日-特别篇 1. 与CSDN的机缘2. 收获3. 憧憬 1. 与CSDN的机缘 很荣幸&#xff0c;在大学时候&#xff0c;能够接触到CSDN这样一个平台&#xff0c;当时对嵌入式开发、编程、计算机视觉等内容比较感兴趣。后面一个很偶然的联培实习机会&#xff0c;让我接触到了Pych…

中国平台软件市场研究报告:OceanBase为金融行业国产分布式数据库销售额第一

近日&#xff0c;《2022-2023年度中国平台软件市场研究报告》&#xff08;以下简称“报告”&#xff09;发布&#xff0c;报告对包括数据库、操作系统等在内的平台软件市场发展进行了分析。报告指出&#xff0c;在对平台软件需求增长最快的金融行业&#xff0c;OceanBase已占据…

音频母带制作::AAMS V4.0 Crack

自动音频母带制作简介。 使用 AAMS V4 让您的音乐听起来很美妙&#xff01; 作为从事音乐工作的音乐家&#xff0c;您在向公众发布材料时需要尽可能最好的声音&#xff0c;而为所有音频扬声器系统提供良好的商业声音是一项困难且耗时的任务。AI掌握的力量&#xff01; 掌控您…

关系型数据库与非关系型数据库类比

关系型数据库和非关系型数据库都有多种不同类型&#xff0c;每种类型都针对不同的数据存储需求和使用场景。以下是一些常见的关系型数据库和非关系型数据库类型&#xff1a; 关系型数据库类型&#xff1a; MySQL&#xff1a; 一种开源的关系型数据库管理系统&#xff0c;用于处…

Android studio APK切换多个摄像头(Camera2)

1.先设置camera的权限 <uses-permission android:name"android.permission.CAMERA" /> 2.布局 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"and…

Spring redis使用报错Read timed out排查解决

文章目录 使用场景报错信息解决方式 使用场景 我们使用redis作为缓存服务&#xff0c;缓存一些业务数据&#xff0c;如路口点位信息、渠化信息、设备信息等有一些需要实时计算的数据&#xff0c;缓存在redis里&#xff0c;如实时信号周期相位、周期内过车数量等有需要不同服务…

三分钟深入了解threejs的常见面试知识点

前序 由于金九银十准备到了。而且自己也有threejs的项目&#xff0c;但是threejs的面试知识点了解的比较少&#xff0c;然后就去学习了一些面试常见知识点&#xff0c;以备不时之需&#xff0c;用于记录的同时也可以通过了解这些知识点同时也能提高对threejs更多的认知。虽然没…

Druid配置类、Dubbo配置类、Captcha配置类、Redis配置类、RestTemplate配置类

DruidConfig配置类package com.xdclass.app.config;import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; import org.springframework.beans.factory.annotation.V…

Nodejs+Typescript+Eslint+Prettier+Husky项目构建

NodejsTypescriptEslintPrettierHusky项目构建 准备工作初始化项目Eslint安装和配置Prettier安装和配置在Eslint中使用Prettier插件Husky安装和配置修改tsconfig.json启用表示src目录 修改package.json设置vscode调试 仓库地址 准备工作 确保已经安装了git以及Node.js和npm&a…

docker高级(redis集群三主三从)

1. 新建6个docker容器redis实例 docker run -d --name redis-node-1 --net host --privilegedtrue -v /redis/share/redis-node-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381docker run -d --name redis-node-2 --net host --privilegedtrue -v /…

在 Windows 下使用 conda 的一些注意点

之前一直使用 MacOS 或者 Ubuntu 作为开发环境&#xff0c;最近因为某些特殊原因需要转为使用 Window 作为开发环境。遇到的第一个问题就是不同开发工具的多环境管理。本文是关于 Windows 下使用 conda 的一些记录&#xff0c;关于如何在 Linux 做多环境管理&#xff0c;可以参…

Linux驱动开发:技术、实践与Linux的历史

一、引言 Linux&#xff0c;这个开源的操作系统&#xff0c;已经在全球范围内赢得了开发者和企业的广泛支持。它的强大之处在于其内核以及无数的驱动程序&#xff0c;这些驱动程序使得各种硬件设备可以在Linux操作系统上运行。本篇文章将深入探讨Linux驱动开发&#xff0c;包括…

JVM 访问对象的两种方式

Java 程序会通过栈上的 reference 数据来操作堆上的具体对象。由于 reference 类型在《Java 虚拟机规范》里面只规定了它是一个指向对象的引用&#xff0c;并没有定义这个引用应该通过什么方式去定位、访问到堆中对象的具体位置&#xff0c;所以对象访问方式也是由虚拟机实现而…