ARM初识(一)

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

 【1】ARM公司成立于1990年11月,前身为 Acorn计算机公司,主要设计ARM系列RISC处理器内核。

          ARM公司不生产芯片,另外也提供基于ARM架构的开发设计技术


【2】ARM芯片的分类

        cortex_A系列:主要用于多媒体功能-----手机,平板
        cortex_R系列:主要用于实时系统的研发----军工(导弹的发射),汽车电子
        cortex_M系列:主要用作微控制器(MCU)---stm32


【3】工作模式

ARM 有7个基本工作模式:
用户模式(usr)                     User : 非特权模式,大部分任务执行在这种模式
快中断模式(fiq)                  FIQ :   当一个高优先级(fast) 中断产生时将会进入这种模式
中断模式(irq)                     IRQ :   当一个普通外部(normal) 中断产生时将会进入这种模式
管理模式(svc)                    Supervisor :当复位或软中断指令执行时将会进入这种模式
数据访问终止模式(abt)      Abort : 当存取异常时将会进入这种模式
未定义指令终止模式(und)  Undef : 当执行未定义指令时会进入这种模式
系统模式(sys)                    System : 使用和User模式相同寄存器集的特权模式
Cortex-A特有模式:
Monitor : 是为了安全而扩展出的用于执行安全监控代码的模式;也是一种特权模式
除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问(特权模式可以访问任何资源)。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式(只能依靠触发异常进入,由CPU自动切换,不能人为的进入)。
用户模式和系统模式: 这两种模式都不能由异常进入(没有异常源),而且它们使用完全相同的寄存器组。系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。
             用户模式和系统模式之外的5种模式称为异常模式。ARM处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。


【4】寄存器

ARM 有37个32-Bits长的寄存器.
1 个用作PC( program counter)
1个用作CPSR(current program status register)
5个用作SPSR(saved program status registers)
30 个通用寄存器   


【5】程序计数器 PC

为了保证程序能够连续地执行下去,CPU必须具有某些手段来确定下一条取指指令的地址。程序计数器(PC )正是起到这种作用,所以通常又称之为“指令计数器”。CPU总是按照PC的指向对指令序列进行取指、译码和执行,也就是说,最终是PC 决定了程序运行流向。故而,程序计数器(PC )属于特别功能寄存器范畴,不能自由地用于存储其他运算数据。
 在程序开始执行前,将程序指令序列的起始地址,即程序的第一条指令所在的内存单元地址送入PC,CPU  按照 PC的指示从内存读取第一条指令(取指)。当执行指令时,CPU自动地修改PC  的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的字节数(指令字节数),使 PC总是指向下一条将要取指的指令地址。
ARM 处理器中使用R15 作为PC,它总是指向取指单元,并且ARM 处理器中只有一个PC 寄存器,被各模式共用。R15 有32 位宽度(R15[31:0],表示R15 的‘第31位’到‘第0位'),ARM 处理器可以直接寻址4GB 的地址空间(2^32 = 4G )。
当处理器执行在ARM状态:
所有指令 32 bits 宽
所有指令必须 word 对齐
所以 pc值由bits [31:2]决定, bits [1:0] 未定义 (所以指令不能halfword / byte对齐).
当处理器执行在Thumb状态:
所有指令 16 bits 宽
所有指令必须 halfword 对齐
所以 pc值由bits [31:1]决定, bits [0] 未定义 (所以指令不能 byte对齐).


备注:什么是字(word)对齐什么是半字(halfword)对齐

存储器是计算机中用于记忆数据信息的电子装置,它记忆“高/低”电平记忆“1/0”。能记忆1 位“1/0”数据的电子单元,称之为存储元,计算机中的存储器通常将每8个这样的存储元组成一个单元,称之为字节,字节是处理器访问存储器的最小单位。ARM处理器对存储器空间的访问分辨率以字节为最小单位;ARM 处理器还支持 16bit 数据(2 字节)的存储器访问和 32bit数据(4 子节)的存储器访问。在ARM 中将32 位的数据称之为‘字’,将 16 位的数据称之为‘半字’。
       ARM 处理器在对于“字”/ “半字”数据进行访问时,对数据的存储格式是有要求的。要求被访问的“半字”必须存放在存储器紧邻的两个字节单元,并且首字节地址必须能被2整除,这样存储的 16bit 数据称为 ‘半字对齐’存储数据,16bit 数据这样的存储方式称为 ‘半字对齐’存储。类似的,ARM 处理器在进“字”数据访问时,要求被访问的“字”必须 存放在存储器紧邻的4 个字节单元,并且首字节地址必须能被4 整除,这样存储的32bit 数 据称为‘字对齐’存储数据,32bit 数据这样的存储方式称为‘字对齐’存储。


【6】三级流水线

流水线使用3个阶段,因此指令分3个阶段执行。
⑴ 取指从存储器装载一条指令
⑵ 译码识别将要被执行的指令
⑶ 执行处理指令并将结果写会寄存器
处理时实际是这样的:ARM正在执行第1条指令的同时对第2条指令进行译码,并将第3条指令从存储器中取出。
所以,三级流水线只有在取第4条指令时,第1条指令才算完成执行。
无论处理器处于何种状态,程序计数器R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或者正在“译码”的指令。

人们一般会习惯性的将正在执行的指令作为参考点,即当前第1条指令。所以,PC总是指向第3条指令,或者说PC总是指向当前正在执行的指令地址再加2条指令的地址。


【7】程序状态寄存器

CPSR:保存ALU当前操作信息、控制允许和禁止中断、设置处理器操作模式

高四位:条件位

31 N:负数标志位--当ALU的运算结果位负数时,N=1,否则N=0

30 Z:零标志位---当ALU的运算结果为零时,Z=1,否则Z=0

29 C:进借位 --- ALU的操作为加法运算时,当产生进位,C = 1 ,否则C=0

ALU的操作为减法运算时,当产生借位,C = 0,否则C = 1

28 V:溢出位 ---ALU的运算结果产生溢出时,V = 1 ,否则V = 0。

低八位:

7 I:IRQ中断禁止位---当I = 1时,禁止所有的IRQ中断,当I = 0时,打开所有的IRQ中断

6 F:FIQ中断禁止位---当F = 1时,禁止所有的FIQ中断,当F = 0时,打开所有的FRQ中断

5 T:处理器状态位---当T = 1时,处理器位于Thumb态,当T = 0时,处理器位于ARM态

[4:0]模式位:

10000-usr模式 10010-IRQ模式 10011-SVC模式  11111-SYS模式

10001-FIQ模式 10110-monitor模式 10111-abort模式 11011-undef模式

CPSR中【31:24】条件域F表示  【23:16】状态域S表示  【15:8】预留域X表示  【8:0】控制域C表示

CPSR_F 条件域 CPSR_S状态域 CPSR_X预留域 CPSR_C控制域


【8】异常处理

当异常产生时, ARM core:
拷贝 CPSR 到 SPSR_<mode>
设置适当的 CPSR 位:                                 
改变处理器状态进入 ARM 态
改变处理器模式进入相应的异常模式
设置中断禁止位禁止相应中断 (如果需要)
保存返回地址到 LR_<mode>
设置 PC 为相应的异常向量
返回时, 异常处理需要:
从 SPSR_<mode>恢复CPSR
从LR_<mode>恢复PC 
Note:这些操作只能在 ARM 态执行


备注:异常和中断的区别

中断(Interruption),也称外中断,指来自CPU执行指令以外的事件的发生,如设备发出的I/O结束中断,表示设备输入/输出处理已经完成,希望处理机能够向设备发下一个输入 / 输出请求,同时让完成输入/输出后的程序继续运行。时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等。这一类中断通常是与当前程序运行无关的事件,即它们与当前处理机运行的程序无关。
异常(Exception),也称内中断、例外或陷入(Trap),指源自CPU执行指令内部的事件,如程序的非法操作码、 地址越界、算术溢出、虚存系统的缺页以及专门的陷入指令等引起的事件。对异常的处理一般要依赖于当前程序的运行现场,而且异常不能被屏蔽,一旦出现应立即处理。                                


ARM汇编:初识寄存器 文章目录CPU内存寄存器(arm) 汇编语言与机器语言对应,每条机器指令都有与之对应的汇编指令。 CPU 地址总线:它的宽度决定CPU寻址能力,最大为2的总线宽度次方。8086宽度20,所以最大寻址为2的20次方为1M。 数据总线:它的宽度决定单次数据传输量,也就是数据传输速度。8086的数据总线宽度是16,单次最大传递2个字节的数据。32位、64位Cpu指的就是数据吞吐量,64位为8字节。 控制总线:它的宽度决定了CPU对其他器件的控制能力,能有多少种控制。 CPU除了有控制器(控件其它器件)、运算 阅读详情

相关推荐

【笔记】ARM架构和ARM芯片(

【笔记】ARM架构和ARM芯片(

skdhfdfc的博客 3024

ARMv8 异常模型入门及渐进 2 -- ARMv8/v9 寄存器 (SCR_ELn | ELR_ELn | ESR_ELn | CTR | HCR_ELn ... 详细介绍】

ARM8v-A提供了31个通用寄存器,分别是X0-X30。还有SP、PC、XZR等寄存器, 每个寄存器是64bits,可以在任何 Exception Level访问。表1-3因为ARMv8-A为了兼容32位应用程序,所以放ARMv8-A中运行32位应用程序的时候,会时候 W0-W30 寄存器。只使用其中的低32位。下面详细介绍写这些通用寄存器(X0-X7用于参数传递;X9-X15在子函数中使用这些寄存器时,直接使用即可, 无需save/restore. 在汇编代码中x9-x15出现的频率极低,

CodingCos的博客 6437

ARM结构知识点

ARM(Advanced RISC Machine)是种基于RISC(精简指令集计算机)原理的计算机处理器架构。

m0_51830537的博客 1589

ARM 虚拟化简介

arm 虚拟化

只有自己觉到悟到的,才是自己的。 3927

四.ARM 指令

ARM分为ARM状态和Thumb状态,以CPSR T作为状态指示,执行不同的指令集 ARM指令集 指令固定4字节 包含条件码,有条件执行 能访问所有寄存器 THUMB指令集 T1指令2字节,T2指令4字节 仅分支指令存在条件执行 仅能访问R0-R7,SP,LR,PC PC寄存器值 = 当前地址 + 1

crlyn的博客 412

ARM架构kprobe应用及实现分析(10 trap中断注册及回调)

首先可以看下探测点检测到非法指令时候,产生中断的dump_stack: symbol] (dump_backtrace+0x0/0x10c) from [] (dump_stack+0x18/0x1c) symbol] (dump_stack+0x0/0x1c) from [] (handler_pre+0x144/0x19c [kk]) symbol] (handler_pre+0x0/0

李子的备忘录 2311

xen-trap

xen的虚拟化实现有个很重要的机制就是tarp,中文可以暂且叫做陷入。在ARMv8中,trap就是异常等级的个切换。当发生trap的时候,就会进入设定好的异常向量表中,硬件自动判断属于哪种类型的异常。

Justwe的博客 493

ARM架构与体系学习()——初识启动文件

首先决定看ARM模板的启动文件,光这个启动文件就不简单啊,因为ARM汇编不了解,看见个汇编词都是翻阅手册,不懂的就上网或者看书查找,争取明了。 首先就是启动代码的作用,它包含了异常向量入口,还有初始化了堆栈。启动代码的开始时定义了些堆栈的大小。 FIQ_STACK_LEGTH EQU 0 IRQ_STACK_LEGTH EQU

Sugar的专栏 4335

Linux():初识ARM Linux

在实验室学习了两年的51和32,也凭借C8T6拿了不少奖,我自认为对单片机已经有所了解,直想进入ARM Linux领域去学习,了解更多有关嵌入式与计算机的知识,因此在淘宝花了300大洋买了块NanoPi M1 Plus开发板,我的Linux学习之旅也就此开始,希望有始有终。 NanoPi M1 Plus NanoPi M1 Plus wiki网址 开发板简介: NanoPi M1 Plus采用了全志四核A7高性能处理器Allwinner H3,配备1G DDR3内存和8GB eMMC高速闪存,集成Wi

weixin_43879311的博客 2581

机械臂IK逆运动学求解与MuJoCo仿真验证:Pinocchio+CasADi联合方案

在机器人运动学领域,逆运动学(IK)求解是连接几何规划与物理执行的核心环节,其目标是根据末端位姿反解关节角度,广泛服务于机械臂路径规划、足式机器人全身控制等场景。传统解析法受制于机构自由度与奇异位形,数值法则常因约束处理复杂而难以工程落地。借助Pinocchio的高效运动学建模能力,可将URDF模型符号化,再通过CasADi优化框架将IK问题转化为带约束的非线性规划(NLP),配合自动微分实现稳定求解。随后,利用MuJoCo搭建动力学仿真环境,以PD控制器跟踪关节轨迹,可有效验证IK结果的可行性,避免直接上

weixin_33947521的博客 320

Arm Arch」 初识 Arm

本文关键字:Arm 架构、Cortex-A、Cortex-M、Cortex-R、CPU、GPU、NPU; 从过程角度来看,本文以架构概述、架构发展、架构特性、架构演练为主线对 Arm 架构进行了启发式的介绍。从金字塔式知识结构角度来看,本文涉及到了计算机体系结构、Arm 系统架构、微架构、处理器编程模型、应用编程;从系统思维角度来看,本文只是对于读者很可能是浮光掠影,蜻蜓点水,所以后面章节会更加系统化、体系化、深入的讲述 Arm 架构。

最是书香能致远,腹有诗书气自华 3490

ARM初识

ARM体系结构~ ...

graceyun的博客 951

初识ARM

ARM 是单片机从业者,绕不开的门技能,是从业向更深层次进阶的平台。本文章介绍ARM的构成、分布、调用,认真阅读后对此有清晰的认识,扫盲ARM概念。

weixin_46053662的博客 516

初识ARM(内核、SoC)

ARM内核 介绍几种常见的ARM内核1.Cortex-M3 2.Cortex-A7 3.Cortex-A53 4.Cortex-A72 ——什么是SoC芯片 1. STM32F103ZET6 2. i.MX 6ULL 3. A133(全志) 4. RK3399 总结 文章参考

Super辉sir的博客 1万+

初识ARM嵌入式系统

1.为什么要用交叉编译工具、2.反汇编工具、3.通过wsl访问Windows系统、4.通过Windows系统访问wsl、5.wsl调用notepad、6.复杂命令简单化命名、7.通过VScode访问wsl

GRT609的博客 3231

初识 Arm 处理器

英国ARM公司是全球领先的半导体知识产权(IP)提供商。全世界超过95%的智能手机和平板电脑都采用ARM架构。ARM设计了大量高性价比、耗能低的RISC处理器、相关技术及软件。2014年基于ARM技术的全年全球出货量是120亿颗,从诞生到现在为止基于ARM技术的芯片有600亿颗 [2] 。技术具有性能高、成本低和能耗省的特点。在智能机、平板电脑、嵌入控制、多媒体数字等处理器领域拥有主导地位。 现在的嵌入式开发大部分都是ARM处理器了,从MCU级别的M0,M3,M4,M23,M33,到MPU级别的ARM9,A

FlyWine的博客 5402

ARM初识ARM——硬件理论基础

逻辑1和0 :数字电路中用高、低电平来表示逻辑1和0 二极管具有单向导电性 :正向导通,反向截止 三极管具有开关特性 NPN型:电压方向C->E 基极是高电平时CE导通 PNP型:电压方向E->C 基极是低电平时CE导通 电路图如何让查找个元器件: 搜索丝印 通过目录 电路图中网络标号相同的节点在电气上是连接在块的 位操作 unsigned int a; a为32位无符号整型 将a

colorfulshark 819
上一篇: Linux小记(一)
下一篇: C语言中const关键字的用法
Xoco
博客等级 码龄10年 0粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值