【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 同步和信号量

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

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

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

相关文章

【JAVASE】带你了解面向对象三大特性之一(多态)

✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页:再无B~U~G-CSDN博客 1.多态 1.1 多态的概念 多态的概念:通俗来说&#…

鸿蒙学习记录

问题小测记录 总结链接:小测总结 学习笔记:鸿蒙开发学习记录 1、 main_pages.json存放页面page路径配置信息。 2、在stage模型中,下列配置文件属于AppScope文件夹的是? app.json5 3、module.json5配置文件中,包含…

Java集合基础知识点复习

目录 Java提供的常见集合ListArrayList底层实现与扩容机制ArrayList listnew ArrayList(10)中的list扩容几次如何实现数组和List之间的转换用Arrays.asList转List后,如果修改了数组内容,list受影响吗?List用toArray转数组后,如果修…

uniapp项目问题及解决(前后端互联)

1.路由跳转的问题 uni.navigateTo() 保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面 uni.redirectTo() 关闭当前页面,跳转到应用内的某个页面。 uni.reLaunch&…

揭开Spring Bean生命周期的神秘面纱

目录 一、Spring IOC 1.1 Spring IOC 的加载过程 二、Spring Bean 生命周期 2.1 实例化前置 2.2 实例化后置 2.3 属性赋值 2.4 初始化前置 2.5 初始化 2.6 初始化后置 2.7 Bean 销毁 Spring 是一个开源的企业级Java应用程序框架,它简化了企业级应用程序开…

开源数据湖iceberg, hudi ,delta lake, paimon对比分析

Iceberg, Hudi, Delta Lake和Paimon都是用于大数据湖(Data Lake)或数据仓库(Data Warehouse)中数据管理和处理的工具或框架,但它们在设计、功能和适用场景上有所不同。 Iceberg: Iceberg是用于大型分析表的高性能格式。Iceberg将SQL表的可靠性和简易性带入到大数据领域,同…

【java的本地锁到分布式锁介绍】

文章目录 1.java本地自带锁介绍及应用synchronized(1)synchronized原理和优化(2)synchronized作用(3)synchronized的使用 CAS(1) CAS原理(2)CAS和synchronized优缺点 lock 2.分布式锁…

idea常用配置

IDEA设置全局配置 参考:IDEA设置全局配置_idea如何打开一个项目,全局设置-CSDN博客 idea提交代码到git或svn上时,怎么忽略.class、.iml文件和文件夹等不必要的文件 参考:idea提交代码到git或svn上时,怎么忽略.class、.iml文件和文…

LeetCode-74. 搜索二维矩阵【数组 二分查找 矩阵】

LeetCode-74. 搜索二维矩阵【数组 二分查找 矩阵】 题目描述:解题思路一:先二分查找行,再二分查找列。解题思路二:暴力遍历,也能过。解题思路三:用python的in。 题目描述: 给你一个满足下述两条…

VSCODE目录树缩进调整

VSCode默认的缩进太小了,简直看不出来,很容易弄混目录。在设置里修改就行了。 修改后效果:

何为网络协议?一图知晓网络过程。

网络协议就是计算机之间沟通的语言 为了有效地交流,计算机之间需要一种共同的规则或协议, 就像我们和老外沟通之前,要先商量好用哪种语言, 要么大家都说中文,要么大家都说英语,这才能有效地沟通。 网络协…

OSPF中配置静态路由负载分担实验简述

OSPF中配置静态路由负载分担 实验简述 在静态路由负载分担中,多个路由器被配置为共享负载的目标,以实现流量的均衡分配。 到达目的地有N条相同度量值的路径,默认值60,N条路由是等价路由,数据报文在N条链路上轮流发送。…

探索基于WebRTC的有感录屏技术开发流程

title: 探索基于WebRTC的有感录屏技术开发流程 date: 2024/4/7 18:21:56 updated: 2024/4/7 18:21:56 tags: WebRTC录屏技术屏幕捕获有感录屏MediaStream实时传输音频录制 第一章:技术原理 WebRTC(Web Real-Time Communication)是一种开放源…

SQL Sever 2008 安装教程

先从官网下载程序:下载地址 打开上述链接后,点击下载按钮。 就会跳出下面这个界面,如果你的电脑是64位的请选择下图中这两个程序。 下载完成后,在电脑磁盘中找到这两个文件,注意安装的顺序,先安装 SQLEXPR…

Linux:软硬链接及动静态库

一、Linux中的链接文件 1.1硬链接及应用场景 ln//创建硬链接 我们再创建一个硬链接生成的文件。 我们可以看到mlink.hard的inode和makefile.c的inode都是一样的,inode一样里面的数据自然也是一样。相当于对make.file进行了一个重命名,所以硬链接一定没…

2023年蓝桥杯省赛——买二赠一

目录 题目链接:1.买二赠一 - 蓝桥云课 (lanqiao.cn) 题目描述 输入格式 输出格式 样例输入 样例输出 样例说明 思路 队列贪心 代码实现 总结 题目链接:1.买二赠一 - 蓝桥云课 (lanqiao.cn) 题目描述 某商场有 N 件商品,其中第 i 件…

漫谈:“标准”是一种幻觉 C++语言标准的意义

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 “标准”这个词很迷惑&#xf…

铸铁平台的单围和双围是什么——北重机械

铸铁平台的单围和双围是指平台的围栏结构。单围指平台只有一面围栏,通常用于平台的三个边界上,另一边是与建筑物相连的。双围指平台两侧围栏都有,即平台四个边界都有围栏。双围结构比单围结构更加安全,可以防止人员和物品从平台四…

CleanmyMac 苹果电脑清理软件,为你的 Mac 提速!

Apple Macbook 已成为当今职场不可或缺的高效助手,尤其在普遍的远程办公场景下,其运行流畅度对工作效率及用户体验至关重要。虽然长期使用会使Mac电脑性能自然衰退,但大部分导致系统变慢的因素其实可经由用户自行调整得到显著改善&#xff0c…

linux 设置命令输入行高亮(与软件无关:xshell等)

在命令执行后输出内容比较多的情况下,很难查看自己的历史命令 这个配置是系统的配置:取消.bashrc文件中force_color_prompt=yes的注释即可 (和连接服务器的软件无关) 具体的操作如下: 执行以下命令,查看配置所在的行数root@hecs-166280:~# cat .bashrc -n | grep force_…