【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 代码,需要先安装 libpython3 的 dev 依赖库(不同的 ubuntu 版本下, python 版本 可能会有差异, 比如ubuntu 22.04 里是 libpython3.10-dev )…...
微信小程序登录流程
文章目录 1. 用户触发登录操作2. 获取临时登录凭证3. 发送登录凭证到服务器4. 后端使用 code 获取 session_key 和 openid5. 后端保存 session_key 和 openid 返回token6. 前端保存登录态 1. 用户触发登录操作 用户在小程序内部点击登录按钮或进行需要登录权限的操作ÿ…...
FPGA + 图像处理(三)生成3x3像素矩阵
前言 生成NxN的像素矩阵是对图像进行各类滤波操作的基本前提,本文介绍一种通过bram生成3x3矩阵的方法。 程序 生成bram核 因为本文介绍的是基于bram生成的3x3像素矩阵,所以要先生成两个bram核,用于缓存前两行图像数据 在 IP catalog中选…...
Redis安装说明2
Redis安装说明 1.3.2.指定配置启动 如果要让Redis以后台方式启动,则必须修改Redis配置文件,就在我们之前解压的redis安装包下(/usr/local/src/redis-6.2.6),名字叫redis.conf: 我们先将这个配置文件备份一…...
ArcGIS10.8保姆式安装教程
ArcGIS 10.8是一款非常强大的地理信息系统软件,用于创建、管理、分析和可视化地理数据。以下是ArcGIS 10.8的详细安装教程: 确保系统满足安装要求 在开始安装之前,请确保您的计算机满足以下系统要求: 操作系统:Windo…...
设计原则、设计模式、设计模式项目实战
设计原则 封装、继承、多态、抽象分别可以解决哪些编程问题 封装:也叫做信息隐藏或数据保护访问。数据 通过暴露有限的访问接口,授权外部仅能通过类提供接口访问,对内的类private私有化属性,通过封装简化操作,让用户更…...
【Redis】解决List类型的消息可靠性问题
前言 平时做后端开发时,如果需要用到消息队列功能,但公司的IT环境又没有提供专业的队列软件(RabitMQ/Kafka…),那么在简单且要求不高的场景下,可以使用 Redis 的List数据类型来做消息队列。 但List类型有…...
挑战30天C++基本入门(DAY8--树)[part 3](速通哦~)
#上一章我们把搜索二叉树的知识给传授完毕,如果认真的看下去并且手打了几遍,基本上内部的逻辑还是可以理解的,那我们现在就截至继续学习树的一些重要知识啦~~ 树高怎么求呀?如果用上一次学的层次遍历来求树高,有点小题…...
在虚拟机尝试一次用启动盘重装系统
在虚拟机尝试一次用启动盘重装系统 没有自己重装过系统,也不敢对自己的笔记本下手,用虚拟机重装玩玩试试。 先设置成u盘启动 从boot中选择相应的创建的硬盘即可(刚刚突然发现图片不能上传了,经过乱七八糟的尝试后,开一…...
力扣347. 前 K 个高频元素
思路:记录元素出现的次数用map; 要维护前k个元素,不至于把所有元素都排序再取前k个,而是新建一个堆,用小根堆存放前k个最大的数。 为什么是小根堆?因为堆每次出数据时只出堆顶,每次把当前最小的…...
复杂技术决策如何避免“竞选广告”陷阱?工程师必备的4项流程变革
1. 从一场“选举广告”引发的思考:工程师如何审视复杂系统设计午餐时看新闻,每个广告时段都被政治竞选广告塞满,内容无一例外都在攻击对手,却对自身主张闭口不谈。这场景让我这个在电子设计自动化(EDA)和半…...
电源设计和效率优化案例C01
本文重点讲清楚三个非常重要的问题: 手把手教会计算电源的效率计算,包括线性电源和开关电源等 1-电源的上下管的 Qg和Rdson为什么是一对矛盾量? 2-单相30A的电流输出电源要求,对上下管子应该如何取舍这两个参数,为什么? 电源设计是硬件设计的核心组成部分,尤其事目前…...
Perplexity AI集成开发工具:MCP协议与零成本API实战指南
1. 项目概述:将Perplexity AI深度集成到你的开发工作流 如果你是一名开发者,或者经常需要处理信息检索、代码问题排查、技术方案调研这类工作,那么你肯定对“搜索”这件事又爱又恨。爱的是它能瞬间连接海量知识,恨的是在IDE和浏览…...
NodeMCU PyFlasher:ESP8266图形化固件烧录终极解决方案
NodeMCU PyFlasher:ESP8266图形化固件烧录终极解决方案 【免费下载链接】nodemcu-pyflasher Self-contained NodeMCU flasher with GUI based on esptool.py and wxPython. 项目地址: https://gitcode.com/gh_mirrors/no/nodemcu-pyflasher 对于ESP8266开发者…...
中小项目如何通过按token计费模式灵活启动AI功能
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 中小项目如何通过按token计费模式灵活启动AI功能 对于预算有限的中小项目团队而言,在探索产品方向、验证市场需求的早期…...
小白程序员必看:收藏这份AI黑话指南,轻松入门大模型世界!
本文用大白话解释了AI领域几个核心概念:AI是总称,LLM是推理模型,Agent能独立执行任务,MCP是标准化接口,Skills是技能包。文章通过生活化比喻和实例,帮助读者理解这些概念如何协同工作,实现高效自…...
基于MCP协议构建Jira Tempo工时管理AI助手:从原理到实践
1. 项目概述:一个专为Jira Tempo设计的MCP服务器 如果你和我一样,每天都要在Jira里手动填写Tempo工时,然后对着那些重复的、琐碎的操作感到厌倦,那么这个项目可能就是你的“救星”。 ivelin-web/tempo-mcp-server 是一个基于Mo…...
Taotoken 官方价折扣与活动价助力个人开发者降低创新门槛
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken 官方价折扣与活动价助力个人开发者降低创新门槛 对于个人开发者和学生而言,探索大模型应用的最大挑战之一往往…...
NHSE:5分钟掌握动物森友会存档编辑,打造你的完美岛屿
NHSE:5分钟掌握动物森友会存档编辑,打造你的完美岛屿 【免费下载链接】NHSE Animal Crossing: New Horizons save editor 项目地址: https://gitcode.com/gh_mirrors/nh/NHSE 你是否曾经为了收集某个稀有家具而花费数周时间?是否因为地…...
ComfyUI ControlNet Aux预处理器深度解析:从模型下载到性能优化全攻略
ComfyUI ControlNet Aux预处理器深度解析:从模型下载到性能优化全攻略 【免费下载链接】comfyui_controlnet_aux ComfyUIs ControlNet Auxiliary Preprocessors 项目地址: https://gitcode.com/gh_mirrors/co/comfyui_controlnet_aux ComfyUI ControlNet Aux…...
