【嵌入式开发——ARM】1ARM架构
嵌入式领域,使用ARM架构的芯片公司可不占少数吧,intel的x86架构主要占据PC、服务器市场,ARM架构主要占据移动市场。x86架构和ARM架构不同的主要原因,是背后使用的计算机指令集不同。计算机有自己的语言系统(汇编,进一步地mov等指令也得翻译成相应二进制码),众多指令的集合称为指令集架构(Instruction Set Architecture, ISA),计算机发展历史终,指令集形成两种风格,即:复杂指令集计算机(CISC,Complex Instruction Set Computer),精简指令集计算机(RISC,Reduced Instruction Set Computer),ARM架构就是使用RSIC(这里插一句,使用不同指令集,CPU就设计成不同架构吗,还真是,一定程度上可以说软件/指令集决定硬件架构,RSIC能流行起来一个原因就是因为按照RSIC指令集能降低硬件设计成本)

1 架构
1.1 架构种类
有些人将“指令集体系结构”称为架构,于是有ARMv8架构,ARMv7-A架构等等,这些都是ARM设计的一些RISC指令集。
所谓指令集体系结构,就是ARM公司推出的一整套精简指令,它是计算机最底层的命令,如APP从内存读取数据,最终就是通过调用ARM设计的指令实现内存存取。
为了清楚表达ARM应用实例所使用的指令集,ARM公司定义了几种重要的ARM指令集架构版本,以版本号v1-v8表示。
ARM采用IP授权的商业模式,收取一次性技术授权费用和版税提成,有三种授权模式:使用层级授权模式,内核层级授权模式,架构层级使用模式。
ARMv7架构开始,命名方式有所改变,分为三个系列:Cortex-A,Cortex-R,Cortex-M;
Cortex-A:针对高性能计算。如现在手机常出现Cortex-A76等;
Cortex-R:针对实时操作处理,主要是面向嵌入式实时处理器。在汽车电子制动系统,工控等领域常见;
Cortex-M:专为低功耗,低成本系统设计。目前火热的IoT领域常用该系列。

1.2 ARM微处理器特点
1、ARM指令都是32位定长的;
2、寄存器数量丰富(37个);
3、普通的Load/Store指令;
4、多寄存器的Load/Store指令;
5、指令的条件执行;
6、单个时钟周期中的单条指令完成数据移位操作和ALU操作;
7、通过变种和协处理器来扩展ARM处理器功能;
8、扩展了16位的Thumb指令来提高代码密度;
1.3 ARM状态和Thumb状态
1.3.1 状态简介
ARM状态:ARM处理器工作于32位指令的状态,所有指令都是32位。
Thumb状态:ARM处理器执行16位指令的状态。
Thumb-2状态:这是ARM7版本处理器所具有的的状态,thumb-2内核技术兼有16位及32位指令,实现了更高的性能,更有效的功耗及更少地占用内存。
1.3.2 ARM状态和Thumb状态的切换
(1)由ARM状态切换到Thumb状态
寄存器最低位置为1
BX指令:R0[0]=1,则执行BX R0指令将进入Thumb状态
(2)由Thumb状态切换到ARM状态
寄存器最低位设置为0
BX指令:R0[0]=0,则执行BX R0将进入ARM状态
当处理器进行异常处理时,则从异常向量地址开始执行,自动进入ARM状态。
注意:
ARM处理器复位后开始执行时总是处于ARM状态;
Cortex-M3只有Thumb-2状态和调试状态;
由于Thumb-2具有16/32位指令功能,因此有Thumb-2就无需Thumb了;此外,具有Thumb-2技术的ARM处理器也无需在ARM状态和thumb状态之间切换了,因为thumb-2具有32位和16位指令功能。
1.3.3 为什么需要Thumb状态模式?
ARM体系结构除了支持执行效率很高的32位ARM指令集外,为了兼容总线宽度为16位的应用系统,所以也支持16位的Thumb指令集。Thumb指令集是ARM指令系统的一个子集,允许指令编码长度为16位。Thumb指令集大大节省了存储空间。
2 编程模型
2.1 ARM数据类型
在ARM体系结构中,字(Word)的长度为32位,半字(Half-Word)长度为16位,字节(字节)长度为8位。
2.2 ARM处理器的工作状态
1、ARM状态,处理器执行32位的字对齐ARM指令,绝大部分工作在此状态;
2、Thumb状态,处理器执行16位的半字对齐Thumb指令。
2.3 ARM处理器工作模式
1、用户模式(usr,User Mode):ARM处理器正常执行程序;
2、快速中断模式(fiq,Fast Interrupt Request Mode):用于高速数据传输或通道处理,当触发快速中断时进入此模式;
3、外部中断模式(irq,Interrupt Request Mode):用于通常中断处理,当触发外部中断时进入此模式;
4、管理模式(svc,Supervisor Mode):操作系统使用的保护模式,在系统复位或执行软中断时进入此模式;
5、数据访问中止模式(abt,Abort Mode):数据或指令预取中止时进入此模式,可用于虚拟存储及存储保护;
6、系统模式(sys,System Mode):运行具有特权的操作系统任务;
7、未定义指令中止模式(und,Undefined Mode):未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真;
除用户模式外,其余六种都是特权模式。除用户模式和系统模式外,其余五种都是异常模式。在特权模式下可以访问所有系统资源。
2.4 ARM处理器寄存器组织
ARM处理器有37个32位寄存器,其中31个是通用寄存器,6个状态寄存器。

在所有寄存器中,有些是各模式共用同一个物理寄存器,有些是各模式自己独立拥有的物理寄存器。
r0-r3主要用于子程序间传递参数;
r4-r11用于保存局部变量,但在Thumb状态下,通常只能使用r4-r7保存局部变量;
r12是子程序间的scratch寄存器,即ip寄存器;
r13通常用于栈指针,即sp;
r14是连接寄存器(lr),用于保存子程序和中断返回地址;
r15即程序计数器(pc),ARM采用流水线机制,该寄存器存储下一条指令地址。
不分组寄存器(r0-r7)
在所有运行模式下,都是同一个物理寄存器,系统未把它们用做特殊用途。
分组寄存器(r8-r14)
FIQ模式下,使用r8_fiq-r12fiq,其他模式下还是使用r8-r12;
对于r13,r14,每个寄存器对应6个不同的物理寄存器,系统模式和用户模式使用r13,r14,其他模式都有自己独立的物理寄存器;
SPSR
(Saved program status register备份的程序状态寄存器),除usr,sys外,用于保存CPSR的备份,异常时,保存CPSR值,异常退出时,将该值恢复到CPSR。五种异常模式都有各自的物理寄存器。
CPSR
(Current program status register当前程序状态寄存器),可以在任何模式下被访问,包括条件标志位,中断禁止位。
N:两整数运算时,1表示结果为负数,0表示结果为0或正数;
Z:1表示结果为0。对于CMP指令,1表示两数相等。
C,V代表溢出。
I:1表示禁止外部硬件中断(irq);
F:1表示禁止快速中断(fiq);
T:1表示Thumb状态,0表示ARM状态,默认都是ARM状态;
M[4:0],用来设置处理器的工作模式。


3 其他知识

当年知道ARM这么收钱的时候,有点纳闷又有点无语,包括现在,也对版权这个东西感到不可思议,还能这样收费。它不用造个成品出来,就是一套知识点,而且最麻烦的是能一直收费,不是像买个东西比如手机,一次交完就行了。即便是买手机,我下次买,那你厂商也得再造个新手机出来,和之前的手机是俩东西了,而这套知识点第一次买长这样,下次买还长这样,,,但就是能一直收费。顺便在吐槽一句,也不知道啥时候我们国家比如听歌啥的,也开始版权收费了,一次又一次的交,不要说这是贴近西方,西方也不是文明的代名词,也不是绝对权威,我一直感觉这基本就是西方搞得一种无赖收费方式;你但凡是那种花了一次钱买了就行了也不会说啥,毕竟给予知识创造者回馈是正常的,但这种一劳永逸的在我感觉就是很奇葩;而且这样能收费的话,我真替中西方古往今来各个领域研究出东西的先贤感到不值,毕竟我们现在生活用的的所有,包括衣食住行,琴棋书画,数理医艺等,肯定都是在先贤研究的基础上发展得到的,他们的版权费呢?找谁要?要不要给他们后代?我是理工科的,有点对资本这方面嗤之以鼻(尤其是前几年看到新闻ARM公司被其股东卖来卖去时候感到痛心,一个叱咤风云的技术公司被所谓股东说卖就卖,无语到令人想笑),很多东西和钱/利益挂钩后,就很难纯粹了,真切感觉每个人,或者说整个人类在近现代被金钱控制的有点离谱了,所有的道义等品质都被金钱破坏了,感觉都在像金钱看齐,这样下去的话,即便人类科技在进步,也会是生活在冰冷麻木的社会中。不好意思,有点愤青了,扯得有点远,大家就当看个热闹。


相关文章:
【嵌入式开发——ARM】1ARM架构
嵌入式领域,使用ARM架构的芯片公司可不占少数吧,intel的x86架构主要占据PC、服务器市场,ARM架构主要占据移动市场。x86架构和ARM架构不同的主要原因,是背后使用的计算机指令集不同。计算机有自己的语言系统(汇编&#…...
Linux中.NET读取excel组件,不会出现The type initializer for ‘Gdip‘ threw an exception异常
组件,可通过nuget安装,直接搜名字: ExcelDataReader using ConsoleAppReadFileData.Model; using ExcelDataReader; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Task…...
mmclassification的配置文件样本
# 需要修改的参数 img_size 480 class_name [fuqi,ok] num_classes len(class_name) data_root /home/apulis-test/teamdata/yz_dataset/fuqi max_epochs300 val_interval1 train_batch_size 16 val_batch_size 1 load_from "swin_tiny_224_b16x64_300e_imagenet_…...
Java基础——类和对象的定义链表的创建,输出
目录 什么是类? 什么是对象? 如何创建链表? 尾插法: 头插法: 输出链表的长度 输出链表的值 什么是类? 创建Java程序必须创建一个类class. .java程序需要经过javac指令将文件翻译为.class字节码文件,…...
Linux应用项目之量产工具(一)——显示系统
目录 前言 项目特点及介绍 ① 简单易用 ② 软件可配置、易扩展 ③ 纯 C 语言编程 软件总框架 显示系统 1.数据结构抽象 disp_manager.h 2.Framebuffer编程 framebuffer.c 3.显示管理 disp_manager.c 4.单元测试 disp_test.c 顶层目录Makefile 顶层目录Makefil…...
Python小白学习教程从入门到入坑------第二十九课 访问模式(语法进阶)
目录 一、访问模式 1.1 r 1.2 w 1.3 1.3.1 r 1.3.2 w 1.3.3 a 1.4 a 一、访问模式 模式可做操作若文件不存在是否覆盖r只能读报错-r可读可写报错是w只能写创建是w可读可写创建是a只能写创建否,追加写a可读可写创建否,追加写 1.1 r r&…...
使用 PageHelper 在 Spring Boot 项目中实现分页查询
目录 前言1. 项目环境配置1.1 添加 PageHelper 依赖1.2 数据库和 MyBatis 配置 2. 统一的分页响应类3. 使用 PageHelper 实现分页查询3.1 Service 层分页查询实现3.2 PageHelper 分页注意事项 4. 控制层调用示例5. 常见问题与解决方案5.1 java.util.ArrayList cannot be cast t…...
深度学习-张量相关
一. 张量的创建 张量简介 张量是pytorch的基本数据结构 张量,英文为Tensor,是机器学习的基本构建模块,是以数字方式表示数据的形式。 例如,图像可以表示为形状为 [3, 224, 224] 的张量,这意味着 [colour_channels, h…...
电脑提示xinput1_3.dll丢失怎么解决,分享6种有效的解决方法
xinput1_3.dll 是一个动态链接库(DLL)文件,它在Windows操作系统中扮演着重要的角色,特别是在处理游戏控制器和其他输入设备的交互方面。这个文件是Microsoft DirectX软件包的一部分,DirectX是微软公司开发的一个多媒体…...
【计网】数据链路层笔记
【计网】数据链路层 数据链路层概述 数据链路层在网络体系结构中所处的地位 链路、数据链路和帧 链路(Link)是指从一个节点到相邻节点的一段物理线路(有线或无线),而中间没有任何其他的交换节点。 数据链路(Data Link)是基于链路的。当在一条链路上传送数据时&a…...
蓝牙FTP 协议详解及 Android 实现
文章目录 前言一、什么是蓝牙 FTP 协议?二、FTP 的工作流程1.蓝牙设备初始化2. 设备发现与配对3. 建立OBEX FTP 连接4. 文件传输文件上传(通过OBEX PUT命令)文件下载(通过OBEX GET命令) 5. 关闭OBEX会话 三、进阶应用与…...
【前端】Svelte:动画效果
在现代前端开发中,动画效果可以大大提升用户体验,使应用更生动、易用。Svelte 提供了灵活的动画 API,让开发者能够快速实现从简单过渡到复杂动画的各种效果。本文将系统性地介绍 Svelte 的动画功能,并通过多个示例演示如何创建动感…...
2024系统架构师--论基于架构的软件设计方法(ABSD)及应用(论文范文)
题目: 基于架构的软件设计(Architecture-Based Software Design,ABSD)方法以构成软件架构的商业、质量和功能需求等要素来驱动整个软件开发过程。ABSD是一个自顶向下,递归细化的软件开发方法,它以软件系统功能的分解为基础,通过选择架构风格实现质量和商业需求,并强调在架…...
ORU 的 Open RAN 管理平面 (M 平面)
[TOC](ORU 的 Open RAN 管理平面 (M 平面)) ORU 的 Open RAN 管理平面 (M 平面) https://www.techplayon.com/open-ran-management-plane-m-plane-for-open-radio-unit/ ORU M 平面 在 ORAN 中,设置参数的 O-RU 管理功能是通过 M-Plane 完成的。管理功能包括 O-…...
软件缺陷等级评定综述
1. 前言 正确评估软件缺陷等级,在项目的生命周期中有着重要的作用: 指导缺陷修复的优先级和资源分配 在软件开发和维护过程中,资源(包括人力、时间和资金)是有限的。通过明确缺陷的危险等级,可以帮助团队合…...
Nuxt.js 应用中的 schema:extend事件钩子详解
title: Nuxt.js 应用中的 schema:extend事件钩子详解 date: 2024/11/10 updated: 2024/11/10 author: cmdragon excerpt: schema:extend 钩子使开发者能够扩展默认数据模式,为特定业务需求添加自定义字段和验证。 categories: 前端开发tags: Nuxt钩子数据扩展自定义验证应…...
自然语言处理在客户服务中的应用
💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 自然语言处理在客户服务中的应用 自然语言处理在客户服务中的应用 自然语言处理在客户服务中的应用 引言 自然语言处理概述 定义…...
OpenCoder:首个完全开源的顶级代码大模型,训练秘籍全公开!| LLM×MapReduce,无需训练就超越GPT-4!
大模型领域的发展日新月异,每天都有许多有趣的论文值得深入品读。下面是本期觉得比较有意思的论文: 1、OpenCoder:首个完全开源的顶级代码大模型,训练秘籍全公开!2、超长文本处理新突破!LLMMapReduce&…...
springboot静态资源映射不生效问题
最近有个同事问我,静态资源映射不生效的问题,很正常我想不就是配置下资源路径就可以了吗?类似配置如下代码 Configuration public class CorsConfig implements WebMvcConfigurer {Overridepublic void addResourceHandlers(ResourceHandlerR…...
通过 SSH 隧道将本地端口转发到远程主机
由于服务器防火墙,只开放了22端口,想要通过5901访问服务器上的远程桌面,可以通过下面的方式进行隧道转发。 一、示例命令 这条代码的作用是通过 SSH 创建一个 本地端口转发,将你本地的端口(5901)通过加密的 SSH 隧道连接到远程服务器上的端口(5901)。这种方式通常用于在…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...
《信号与系统》第 6 章 信号与系统的时域和频域特性
目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...
