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

【ARMv7-M】| 01——阅读笔记 | 简介|应用程序级编程和内存模型

系列文章目录
【ARMv7-M】| 01——阅读笔记 | 简介|应用程序级编程和内存模型


失败了也挺可爱,成功了就超帅。

文章目录

  • 前言
  • 1、简介
  • 2、应用程序级编程模型
    • 2.1 编程模式和访问等级
    • 2.2 数据类型和运算操作
    • 2.3 寄存器和执行状态
    • 1.2.4 异常和中断
    • 1.2.5 浮点单元寄存器
  • 3、内存模型
    • 3.1 地址空间
    • 3.2 对齐
    • 3.3 大小端
    • 3.4 同步和信号量

前言

本文为ARMv7-M参考手册的阅读笔记

1、简介

ARMv7架构根据不同应用场景和性能 分为三个分支 -A -R -M

ARMv7-A:用于高性能应用型SOC 支持ARM和Thumb指令集 内存管理单元使用 MMU 支持虚拟内存

ARMv7-R:用于实时性要求很高的SOC 支持ARM和Thumb指令集 内存管理单元使用 MPU支持内存保护

ARMv7-M:用于低成本低功耗性能够用的MCU 只支持Thumb指令集(Thumb-2) 如扩展浮点运算单元的MCU 会在此基础上加入浮点指令

ARMv7-M架构支持两种扩展功能:DSP和FP浮点指令
DSP扩展:包含 饱和指令及SIMD指令(单指令多数据)
FP扩展:可选单精度和双精度
基于Cortex-M4带FPU的MCU 支持DSP和FP单精度

2、应用程序级编程模型

2.1 编程模式和访问等级

两种:处理模式和线程模式

程序正常运行在线程模式 执行异常中断时会处于处理模式

程序运行又分为两种访问权限:特权访问和非特权访问

特权:所有资源都可以控制 非特权:有限制

线程模式可以通过程序控制处于特权/非特权运行 处理模式总是特权模式

2.2 数据类型和运算操作

该架构中 支持 字节、半字、字类型的数据。

当加载字节、半字大小的指令时可以通过加载指令指定零/符号扩展

可以对64位整数数据直接操作 一般情况通过两个指令合并它们。

指令集提供了对寄存器中值的一些操作指令:按位逻辑与或非、移位、加减乘 和我们编程语言中支持的运算操作符类似 只不过使用方式不同

使用方式如下:使用内置函数/ARM指令(ARM汇编)

LSL逻辑左移: 将一个寄存器中的值进行逻辑左移

eg:LSL R1, R2, #3  将R2寄存器中的值逻辑左移3位 写入R1中

LSR逻辑右移:将一个寄存器中的值进行逻辑右移

eg:LSR R1, R2, #3  将R2寄存器中的值逻辑右移3位 写入R1中

ASR算术右移:将一个寄存器中的值进行算术右移

eg:ASR R1, R2, #3  将R2寄存器中的值算术右移3位 写入R1中

ROR循环右移:指令把所有位都向右移,最低位复制到进位标志位和最高位

eg:ROR R1, R2, #3  将R2寄存器中的值循环右移3位 写入R1中

RRX循环右移:对寄存器中的内容进行带扩展的循环右移的操作。是一种协处理器指令。按操作数所指定的位数向右循环移位,左端用进位标志位C来填充。其中,操作数可以是寄存器,也可以是立即数(0~31)。例如,MOV R0,R1,RRX#2;将R1中的内容进行带扩展的循环右移两位后传送到R0中。

2.3 寄存器和执行状态

一共有16个32位寄存器 其中13个通用寄存器(R0-R12) 和 3个特殊功能寄存器(SP/LR/PC)

SP:R13 堆栈指针 指向栈顶

LR:R14 链接寄存器 存储程序返回地址

PC:R15 程序计数器 程序执行向地址

程序执行状态寄存器 APSR 32位
在这里插入图片描述

1.2.4 异常和中断

中断是异常的一种 可以由异常/中断行为触发 也可通过软件触发

系统异常如 SVC/PendSV systick等

它们的控制都用 中断控制状态寄存器 ICSR决定 后面章节详解

1.2.5 浮点单元寄存器

只有支持该扩展的MCU才有 Cortexm4带FPU的会有

32个单精度寄存器 S0-S31 两两一组 16个双精度寄存器 D0-D15

更多关于浮点扩展先不看了

3、内存模型

3.1 地址空间

后面章节详解

3.2 对齐

支持非对齐访问
非对齐指令
在这里插入图片描述

3.3 大小端

支持大端和小端 默认小端
通过SCB系统控制寄存器 可以修改

加载寄存器数据/存储数据到寄存器的指令
在这里插入图片描述
对通用寄存器翻转字节的指令
在这里插入图片描述

3.4 同步和信号量

在多线程运行下 信号量同步操作时我们常见的 线程间通信的方式
排他访问 指令具有原子操作 很好的满足了信号量的实现
在这里插入图片描述

相关文章:

【ARMv7-M】| 01——阅读笔记 | 简介|应用程序级编程和内存模型

系列文章目录 【ARMv7-M】| 01——阅读笔记 | 简介|应用程序级编程和内存模型 失败了也挺可爱,成功了就超帅。 文章目录 前言1、简介2、应用程序级编程模型2.1 编程模式和访问等级2.2 数据类型和运算操作2.3 寄存器和执行状态1.2.4 异常和中断1.2.5 浮点单元寄存器…...

用Python做一个4399游戏脚本原来这么简单 !(内含完整思路)

说明 简述:本文将以4399小游戏《宠物连连看经典版2》作为测试案例,通过识别小图标,模拟鼠标点击,快速完成配对。对于有兴趣学习游戏脚本的同学有一定的帮助。 运行环境:Win10/Python3.5。 主要模块:win3…...

【计算机网络】应用层——HTTPS协议详解

文章目录 1. HTTPS 协议简介2. 了解“加密”3. HTTPS 保证数据安全传输的三大机制3.1 引入对称加密3.2 引入非对称加密3.3 引入“SSL/TLS证书”(防止中间人攻击)3.4 HTTPS安全机制总结 📄前言: 前面的文章已经对 HTTP 协议 进行了…...

私家侦探如何追踪难以找到的人?

私家侦探如何追踪难以找到的人? 私家侦探经常受雇于无从下手的情况,要在稀缺的信息中寻找蛛丝马迹,追踪那些难以捉摸的目标。在众多情境中,私家侦探或许能挖掘出丰富的信息。然而,若目标人物决心隐匿行踪,逃…...

一文讲透亚马逊云命令行使用

从配置开始 学习使用亚马逊云,自然免不了使用命令行工具,首先我们从下载和配置开始: 现在都使用V2版本的命令行工具,可以从官网下载最新的二进制安装包。1 首先是配置凭证: aws configure 输入之后会提示输入AK/SK…...

感染了后缀为.jayy勒索病毒如何应对?数据能够恢复吗?

导言: 在当今数字化的世界中,网络安全已经成为了每个人都需要关注的重要议题。而勒索病毒作为网络安全领域中的一大威胁,不断地演变和升级,给个人和组织带来了严重的损失和困扰。近期,一种名为.jayy的勒索病毒引起了广…...

一键快速彻底卸载:Mac软件轻松删除,瞬间释放磁盘空间

在接手使用前任员工遗留的Mac电脑时,经常面临的一个问题是内置了大量的非必要软件,这些软件不仅侵占了硬盘资源,还可能影响电脑整体性能。因此,迅速有效地删除这些冗余软件,以达成设备清爽、高效的初始化状态极其重要。…...

(React Hooks)前端八股文修炼Day9

一 对 React Hook 的理解,它的实现原理是什么 React Hooks是React 16.8版本中引入的一个特性,它允许你在不编写类组件的情况下,使用state以及其他的React特性。Hooks的出现主要是为了解决类组件的一些问题,如复杂组件难以理解、难…...

工厂方法模式:灵活的创建对象实例

在软件开发中,我们经常需要创建对象,但直接new一个实例可能会导致代码的耦合性增加,降低了代码的灵活性和可维护性。工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它提供了一种创建对象的接口…...

vue-codeirror编辑器vue3中的使用

vue-codeirror编辑器vue3中的使用 <script lang"ts" setup> import { ref,reactive } from vue; import { Codemirror } from "vue-codemirror"; import { oneDark } from "codemirror/theme-one-dark"; import { json } from codemirror/…...

搭建python编译环境

目录 1.安装依赖包 2.安装失败进行换源 3. 更新系统 通过C 语言调用 Python 代码&#xff0c;需要先安装 libpython3 的 dev 依赖库&#xff08;不同的 ubuntu 版本下&#xff0c; python 版本 可能会有差异&#xff0c; 比如ubuntu 22.04 里是 libpython3.10-dev &#xff09…...

微信小程序登录流程

文章目录 1. 用户触发登录操作2. 获取临时登录凭证3. 发送登录凭证到服务器4. 后端使用 code 获取 session_key 和 openid5. 后端保存 session_key 和 openid 返回token6. 前端保存登录态 1. 用户触发登录操作 用户在小程序内部点击登录按钮或进行需要登录权限的操作&#xff…...

FPGA + 图像处理(三)生成3x3像素矩阵

前言 生成NxN的像素矩阵是对图像进行各类滤波操作的基本前提&#xff0c;本文介绍一种通过bram生成3x3矩阵的方法。 程序 生成bram核 因为本文介绍的是基于bram生成的3x3像素矩阵&#xff0c;所以要先生成两个bram核&#xff0c;用于缓存前两行图像数据 在 IP catalog中选…...

Redis安装说明2

Redis安装说明 1.3.2.指定配置启动 如果要让Redis以后台方式启动&#xff0c;则必须修改Redis配置文件&#xff0c;就在我们之前解压的redis安装包下&#xff08;/usr/local/src/redis-6.2.6&#xff09;&#xff0c;名字叫redis.conf&#xff1a; 我们先将这个配置文件备份一…...

ArcGIS10.8保姆式安装教程

ArcGIS 10.8是一款非常强大的地理信息系统软件&#xff0c;用于创建、管理、分析和可视化地理数据。以下是ArcGIS 10.8的详细安装教程&#xff1a; 确保系统满足安装要求 在开始安装之前&#xff0c;请确保您的计算机满足以下系统要求&#xff1a; 操作系统&#xff1a;Windo…...

设计原则、设计模式、设计模式项目实战

设计原则 封装、继承、多态、抽象分别可以解决哪些编程问题 封装&#xff1a;也叫做信息隐藏或数据保护访问。数据 通过暴露有限的访问接口&#xff0c;授权外部仅能通过类提供接口访问&#xff0c;对内的类private私有化属性&#xff0c;通过封装简化操作&#xff0c;让用户更…...

【Redis】解决List类型的消息可靠性问题

前言 平时做后端开发时&#xff0c;如果需要用到消息队列功能&#xff0c;但公司的IT环境又没有提供专业的队列软件&#xff08;RabitMQ/Kafka…&#xff09;&#xff0c;那么在简单且要求不高的场景下&#xff0c;可以使用 Redis 的List数据类型来做消息队列。 但List类型有…...

挑战30天C++基本入门(DAY8--树)[part 3](速通哦~)

#上一章我们把搜索二叉树的知识给传授完毕&#xff0c;如果认真的看下去并且手打了几遍&#xff0c;基本上内部的逻辑还是可以理解的&#xff0c;那我们现在就截至继续学习树的一些重要知识啦~~ 树高怎么求呀&#xff1f;如果用上一次学的层次遍历来求树高&#xff0c;有点小题…...

在虚拟机尝试一次用启动盘重装系统

在虚拟机尝试一次用启动盘重装系统 没有自己重装过系统&#xff0c;也不敢对自己的笔记本下手&#xff0c;用虚拟机重装玩玩试试。 先设置成u盘启动 从boot中选择相应的创建的硬盘即可&#xff08;刚刚突然发现图片不能上传了&#xff0c;经过乱七八糟的尝试后&#xff0c;开一…...

力扣347. 前 K 个高频元素

思路&#xff1a;记录元素出现的次数用map&#xff1b; 要维护前k个元素&#xff0c;不至于把所有元素都排序再取前k个&#xff0c;而是新建一个堆&#xff0c;用小根堆存放前k个最大的数。 为什么是小根堆&#xff1f;因为堆每次出数据时只出堆顶&#xff0c;每次把当前最小的…...

SCP 从Linux快速下载文件到Windows本地

需求&#xff1a;通过mobaxterm将大文件拖动到windows本地速度太慢。 环境&#xff1a;本地是Windows&#xff0c;安装了Git。 操作&#xff1a;进入文件夹内&#xff0c;鼠标右键&#xff0c;点击Git Bash here&#xff0c;然后输入命令即可。这样的话&#xff0c;其实自己本…...

plasmo内容UI组件层级过高导致页面展示错乱

我使用plasmo写了一个行内样式的UI组件&#xff0c;但是放到页面上之后&#xff0c;会和下拉组件出现层级错乱&#xff0c;看了一下样式&#xff0c;吓我一跳&#xff1a;层级竟然设置的如此之高 所以就需要将层级设置低一点&#xff1a; #plasmo-shadow-container {z-index: …...

《QT实用小工具·十一》Echart图表JS交互之仪表盘

1、概述 源码放在文章末尾 该项目为Echart图表JS交互之炫酷的仪表盘&#xff0c;可以用鼠标实时改变仪表盘的读数。 下面为demo演示&#xff1a; 该项目部分代码如下&#xff1a; #include "widget.h" #include "ui_widget.h" #include "qurl.h&q…...

深入浅出理解ArrayBuffer对象TypedArray和DataView视图

目录 举例理解 1. ArrayBuffer对象 2. TypedArray 3. DataView 总结 具体讲解 1. ArrayBuffer对象 2. TypedArray 3. DataView 注意事项 举例理解 先举个简单的例子理解ArrayBuffer对象TypedArray和DataView视图的概念和之间的关系 1. ArrayBuffer对象 想象一个场景…...

人工智能 - 服务于谁?

人工智能服务于谁&#xff1f; 人工智能服务于生存&#xff0c;其最终就是服务于战争&#xff08;热战、技术战、经济战&#xff09; 反正就是为了活着而战的决策。 既然人工智能所有结果&#xff0c;来自大数据的分挖掘&#xff08;分析&#xff09;也就是数据的应用&#x…...

软考高级架构师:嵌入式系统的内核架构

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…...

分布式锁实战

4、分布式锁 4.1 、基本原理和实现方式对比 分布式锁&#xff1a;满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁&#xff0c;只要大家使用的是同一把锁&#xff0c;那么我们就能锁住线程&#xff0c;不让线程进行&#x…...

【VMware Workstation】启动虚拟机报错“此主机支持 AMD-V,但 AMD-V 处于禁用状态”

问题出现步骤&#xff1a; 打开虚拟机&#xff1a; 然后报错&#xff1a; “此主机支持 AMD-V&#xff0c;但 AMD-V 处于禁用状态。 如果已在 BIOS/固件设置中禁用 AMD-V&#xff0c;或主机自更改此设置后从未重新启动&#xff0c;则 AMD-V 可能被禁用。 (1) 确认 BIOS/固件设…...

非关系型数据库(缓存数据库)redis的基础认知与安装

目录 一.关系型数据库和非关系型数据库 关系型数据库 非关系型数据库 关系数据库与非关系型数据库的区别 ①非关系数据 关系型数据库 非关系型数据库产生背景 数据存储流向 非关系型数据库 关系数据库 二.redis的简介 1.概念 2.Redis 具有以下几个优点: 3.Redi…...

Go语言如何处理文件

1.文件的重要性 文件不过是硬盘中的数据,看起来好像没什么了不起,但实际上,文件能够让程序员管理配置、存储程序的状态乃至从底层操作系统中读取数据。 UNIX型操作系统的一个重要特征是,将一切都视为文件。这意味着在操作系统看来,从键盘到打印机的所有东西都可像文件那样…...

制作网站不给源代码/软件测试培训机构哪家好

疫情影响&#xff0c;很多人今年上半年根本不敢跳槽找工作&#xff0c;甚至相当多的程序员遭遇了裁员、调岗、降薪等&#xff01; 好在金九银十季到了&#xff0c;我特地整理了这份**【Java超硬核面试 “备战” 手册】&#xff01;除了Java各种技术专题知识、大厂面试真题**&a…...

商标查询网站/疫情防控最新政策

六类需求 安全管理系统是一个复杂的技术体系&#xff0c;对企业来说&#xff0c;并不意味着上安全管理就一定要选择全套方案。事实上&#xff0c;不少已经吃了螃蟹的用户&#xff0c;都是基于已有的安全基础设施&#xff0c;根据企业的实际需求进行理性选择。 从大多数用户的选…...

网站建设书籍免费/搜狗站长平台验证网站

当演示文稿拥有大量图片素材,并且您需要获得这些图片素材时,可以通过本节演示的方法,快速提取幻灯片中的所有图片素材。 首先在幻灯片文件的名称上点击鼠标右键,打开右键菜单,然后选择重命名命令。 将文件名称的扩展名修改为rar或zip,也就是将灯片文件修改为在压缩文件…...

学网站开发/关键词优化公司

百兆带宽&#xff0c;首先我们要注意一个问题&#xff0c;那就是100M独享带宽和100M共享带宽的区别。 100M独享带宽&#xff0c;即用户独自享用100M机房带宽资源&#xff1b;而100M带宽共享&#xff0c;就是用户与其他用户共享100M机房带宽资源。把带宽比喻成一条马路&#xff…...

网站的建设费用预算/成品网站源码的优化技巧

1、前提&#xff1a;二分查找的前提是需要查找的数组必须是已排序的&#xff0c;我们这里的实现默认为升序 2、原理&#xff1a;将数组分为三部分&#xff0c;依次是中值&#xff08;所谓的中值就是数组中间位置的那个值&#xff09;前&#xff0c;中值&#xff0c;中值后&…...

编程python/厦门网站综合优化贵吗

##1、gitHub Page的的使用我觉得这边博文写的很清楚&#xff0c;方法、步骤、优缺点以及实例&#xff0c;所以就借用一下啦^_^ [搭建一个免费的&#xff0c;无限流量的Blog](http://www.ruanyifeng.com/blog/2012/08/blogging_with_jekyll.html)如果要想更简单快捷的生成有逼格…...