第二讲ARM微处理器的编程模型
第2章-ARM体系结构与编程模型
特征:MMU, Cache 最快频率、最高性能、合理功耗
特征:MPU, Cache 实时响应、合理性能、较低功耗
特征:no sub-memory system 一般性能、最低成本、极低功耗
ARM体系结构的命名规则
ARM{X}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S} x——系列 y——存储管理/保护单元 z——Cache T——Thumb16位译码器 D——JTAG调试器 M——快速乘法器 I——嵌入式跟踪宏单元 E——增强DSP指令 J——Jazelle F——向量浮点单元 S——可综合版本,以源代码形式提供的ARM核
电
300
温度范围
-40到80度
电源供应
2.5V ( 逻辑电路 ),3.3V (I/O) ,支持 5V I/Os
封装
456-Ball,Enhanced PBGA (35mm x 35mm)
*Dhrystone是一个综合性的基准测试程序,它是为了测试编译器和CPU处 理整数指令和控制功能的有效性,人为地选择一些“典型指令综合起来形 成的测试程序。
ARM1020E, ARM1022E ARM1026EJ-S
三级流水 性能:0.9MIPS/MHz, 可达到130MIPs (Dhrystone2.1)
五级流水, 性能:1.1MIPS/MHz,可达300 MIPS (Dhrystone 2.1),单32-bit AMBA bus 接口,支持MMU
五级流水,支持DSP指令。 性能:1.1MIPS/MHz,可达300 MIPS (Dhrystone 2.1),高性能AHB, 软核 (soft IP)
(excl. DSP)
2,000
0
2000
2001
二、ARM及其编程模型
分开的CPSR(current program status register,当前 程序状态寄存器)和SPSR(saved program status register,备份的程序状态寄存器),当异常发生时, SPSR用于保存CPSR的当前值,从异常退出时则可 以由SPSR来恢复CPSR。 增加了两种异常模式,使操作系统代码可方便地使 用数据访问中止异常、指令预取中止异常和未定义 指令异常。 增加了MRS指令和MSR指令,用于完成对CPSR和 SPSR寄存器的读/写;修改了原来的从异常中返回 的指令
RISC和CISC在构架上有着几个不同的地方:
1)首先是指令集的设计上,RISC构架的指令 格式和长度通常是固定的(如ARM是32位的指令)、 且指令和寻址方式少而简单、大多数指令在一个周期 内就可以执行完毕:CISC构架下的指令通常是可变 的、指令类型也很多、一条指令通常要若干周期 才可 以执行完毕。由于指令集多少与复杂度上的差异,是 RISC的处理器可以利用简单的硬件电路
(5)SIMD变种(ARM媒体功能扩展) ARM的SIMD媒体功能扩展为这些应用系统提供 了解决方案,它为包括音频和视频处理在内的应用 系统提供了优化功能,其主要特点如下: 使处理器的音频和视频处理的性能提高了2-4倍。 可同时进行2个16位操作数或者4个8位操作数的运算。 用户可自定义饱和运算的模式。 可进行2个16位操作数的乘加/乘减运算及32位乘以 32位的小数乘加运算。 同时8/16位选择操作。
2.版本2(v2) 与版本1相比,版本2增加了下列指令: 乘法与乘加指令(multiply& multiply-accumulate) 支持协处理器。 原子性(atomic)加载/存储指令SWP和SWPB(稍后的 版本称v2a)。 FIQ中的两个以上的分组寄存器。 3.版本3(V3) 版本3较以前的版本发生了大的变化,具体改进下: 推出32位寻址能力。
第2章ARM的体系结构及编程模型
第2章 ARM体系结构及编程模型
1 ARM技术的应用领域及特点 2 ARM微处理器系列 3 ARM处理器的工作模式
4 ARM 处理器的寄存器组织 5 ARM 异常处理 6 ARM处理器的存储器格式 7 ARM处理器的工作状态
11
ARM微处理器系列 ARM微处理器系列
? ARM7系列 ? ARM9系列 ? ARM9E系列
第2章 ARM体系结构及编程模型
1 ARM技术的应用领域及特点 2 ARM微处理器系列 3 ARM处理器的工作模式
4 ARM 处理器的寄存器组织 5 ARM 异常处理 6 ARM处理器的存储器格式 7 ARM处理器的工作状态
1
ARM技术的应用领域及特点
ARM-Advanced RISC Machines
13
ARM微处理器系列
ARM7微处理器系列
? 主要应用领域:工业控制、Internet设备、网络和调制 解调器设备、移动电话等多种多媒体和嵌入式应用。
? ARM7系列微处理器包括如下几种类型的核: ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。其 中,ARM7TMDI是目前使用最广泛的32位嵌入式RISC处理 器,属低端ARM处理器核。TDMI的基本含义为:
3
ARM技术的应用领域及特点
ARM微处理器应用领域
? 到目前为止, ARM微处理器及技术的应用已经 广泛深入到国民经济的各个领域
工业控制领域:作为 32的RISC架构,基于 ARM核的微控制器芯片不但占据了高端微控 制器市场的大部分市场份额,同时也逐渐向 低端微控制器应用领域扩展, ARM微控制器 的低功耗、高性价比,向传统的 8位/16位 微控制器提出了挑战。
? ARM既可以认为是一个公司的名字,也可以 认为是对一类微处理器的通称,还可以认为是一 种技术的名字。
ARM微处理器的编程模型(二)分析
2020/9/30
7
嵌入式系统设计与应用
3.7.4 ARM微处理器的数据类型(续)
ARM体系结构可以用两种方法存储字数据
➢ 大端格式(Big endian)(8051) • 字数据的高字节存储在低地址中 • 字数据的低字节存放在高地址中
产生FIQ异常
2020/9/30
14
嵌入式系统设计与应用
3.7.5 ARM微处理器的异常状态(续)
1 对异常的响应 2 从异常返回 3 各类异常的具体描述 4 异常向量 5 异常优先级(CPU内部) 6 应用程序中的异常处理
Bit0=0
字对齐 0x00000000 0x00000004 0x00000008 ……
Bit1=0,Bit0=0
2020/9/30
6
嵌入式系统设计与应用
3.7.4 ARM微处理器的数据类型(续)
ARM体系结构的存储结构(编址以字节为单位)
➢ 从零字节到三字节放置第一个存储的字数据,从第四 个字节到第七个字节放置第二个存储的字数据,依次 排列。那么,字内数据如何存储?
强制对界
编译控制: 汇编align(1/2/4/8) unalign C语言#pragma pack(1/2/4/8)
问:在缺省(自然对界)情况下,上述结构需要 多少存储空间(小端格式)?
12个字节
2020/9/30
12
嵌入式系统设计与应用
3.7.5 ARM微处理器的异常状态
当正常的程序执行流程发生暂时的停止时,称之 为异常(Exception)
第二章 ARM微处理器编程模型-38页精选文档
FIQ异常响应时进入此模式
用于通用中断处理
IRQ异常响应时进入此模式
操作系统保护代码
系统复位和软件中断响应时进入 此模式
用于支持虚拟内存和/或存 储器保护
用于MMU
支持硬件协处理器的软件 未定义指令异常响应时进入此模
仿真
式
ARM处理器工作模式
特权模式
处理器模式
说明
备注
用户 (usr) 正常程序工作模式 不能直接切换到其它模式
未定义
支持硬模件协式处的理状器的态不未可定靠义指。令异常响应时进
(und) 未定义 (un软d) 件仿真
入此模式
ARM处理器工作模式
用户和系统模式
处理器模式
说明
备注
用户 (usr)
正常程序工作模式 不能直接切换到其它模式
用户
系统 (sys) 系统
((usy用特ssr))于权支任持务而操等且作它系这统们两的使种用模与可等完用以特式户直权全都模接相不式切同类换能似到的由,其寄异但它存具模常有式器进组入。,
未定义 (und)
支持硬件协处理器的 未定义指令异常响应时进
软件仿真
入此模式
ARM寄存器组织
• 37个32位寄存器,31个通用寄存器,6个状 态寄存器
• 处理器工作状态和运行模式决定哪些寄存 器可编程访问
• 最多可有18个活动寄存器,16数据寄存器、 2个处理器状态寄存器,程序员可见的数据 寄存器是R0~R15
未未定定义义 (und) (und)
用为 一于通特些用权片中模内断处式外理设。在AR硬IMRQ件内异设部常计响寄应上存时只器进允入和此许模式
操( 访作系或问统者。保可此护代选外码为,只特允权系时统进许模复入)式位此特可和模软式权以件模自中式由断响下的应 用或切于 存支储换持器处虚保理拟护内器存模和式/ ,在A而RM用没户有模大用式处不能 支直持硬接件切协换处理到器别的的模未定式义。指令异常响应时进
ARM处理器编程模型与指令系统
第十九页,共93页。
ARM形状(xíngzhuàn)各形式下
寄存器 寄存器在汇编 类别 中的名称
用户
的各寄模式存下器实际访问的寄存器
系统
管理
中止
未定义
中断
快中断
R0(a1)
R0
R1(a2)
R1
R2(a3)
R2
R3(a4)
R3
R4(v1)
R4
R5(v2)
R5
R6(v3)
通用寄 存器和
一R切7(v(4y) īqiè)的37个寄存
第三页,共93页。
4.1 ARM微处置(chǔzhì)器的义务外 形
• ARM指令集和Thumb指令集均有切换处置器外形 (wài xínɡ)的指令,并可在两种义务外形(wài xínɡ)之 间切换,但ARM微处置器在末尾执行代码时,应该 处于ARM外形(wài xínɡ)
• 进入ARM外形(wài xínɡ):当操作数寄存器的外形 (wài xínɡ)位〔位0〕为0时,执行BX指令时可以使微 处置器从Thumb外形(wài xínɡ)切换到ARM外形(wài xínɡ)。
支持硬模件式协不处理能器直的 接未切定换义指到令别异的常响模应式时进。入此
软件仿真
模式
第十七页,共93页。
处置(chǔzhì)器义务方式
• 用户和系统(xìtǒng)方式
处理器模式
说明
备注
用用户户(u(surs)r) 正常程序工作模式 不能直接切换到其它模式
系系统统(s(syyss) )
用于支持操作系统 与用户模式类似,但具有可以直接
R11(FP,v8)
R12(IP)
R13(SP)
R14(LR)
第2章ARM编程模型和指令集介绍讲述
第3章 ARM体系结构
2.1.4 ARM处理器模式
一、处理器模式
处理器模式:处理器在执行程序时在不同时刻所处的不同情况 ARM体系结构支持7种处理器模式。 (虽然支持7种模式,但实际中并不一定都会使用到) ★ 1、User用户模式(usr) 正常程序执行模式 ★2、System系统模式(sys) 运行具有特权的操作系统任务 ★3、IRQ-外部中断模式(irq) 用于通用的中断处理,CPU的中断来自中断控制器
第3章 ARM体系结构
4、工作模式位 M0、M1、M2、M3和M4是模式位。这些位决定 处理器的工作模式。
M[4:0] 10000 10001 10010 10011 10111 11011 模式 用户 FIQ IRQ 管理 中止 未定义 可访问的寄存器
PC、R14~R0、CPSR PC、R14_fiq~R8_fiq、R7~R0、CPSR、SPSR_fiq PC、R14_irq、R13_irq、R12~R0、CPSR、SPSR_irq PC、R14_svc、R13_svc、R12~R0、CPSR、SPSR_svc PC、R14_abt、R13_abt、R12~R0、CPSR、SPSR_abt PC、R14_und、R13_und、R12~R0、CPSR、SPSR_und PC、R14~R0、CPSR
第3章 ARM体系结构
2、Thumb状态
★处理器执行16位的Thumb指令
★指令半字对齐:指令地址是2的整数倍(bit0=0 ) ★ 执行一条指令,PC值加2个字节(16位) 说明 ★1、处理器可以随时在两种工作状态之间切换。 ★ 2、ARM微处理器初始状态是ARM状态
第3章 ARM体系结构
2.1.3 ARM体系的存储器和格式
ARM 处理器的编程模型
状态
图2.3 ARM状态下的寄存器组织
2.程序状态寄存器
❖ ARM7TDMI 包含当前程序状态寄存器 (CPSR), 加上5个程 序状态保存寄存器SPSR,当异常发生时,用于保存CPSR的 状态
❖ 这些寄存器的功能是: 保存ALD当前操作信息 控制允许和禁止中断 设置处理器操作模式
以为16位(在Thumb状态下)。 ARM微处理器中支持字节(8位)、半字(16位)、字(32位)
三种数据类型,其中,字需要4字节对齐(地址的低两位为0)、半字 需要2字节对齐(地址的最低位为0)。
ARM体系结构将存储器看作是从零地址开始的字 节的线性组合。从零字节到三字节放置第一个存储的 字数据,从第四个字节到第七个字节放置第二个存储 的字数据,依次排列。作为32位的微处理器,ARM
❖ 除了用户模式外,其他模式均可视为特权模式
1.4 ARM 状态下的寄存器组织
1.通用寄存器 通用寄存器包括R0~R15,可以分为三类: 未分组寄存器R0~R7; 分组寄存器R8~R14 程序计数器PC(R15)
可访问的寄存器取决于处理器的模式。 其它寄存器 (the banked registers) 的状态在支持IRQ, FIQ, 管理
从ARM状态切换到Thumb状态 LDR R0,=Label+1 BX R0
从Thumb状态切换到ARM状态 LDR R0,=Label BX R0
1.3 ARM 处理器的工作模式
❖ ARM 处理器有7种工作模式: 用户模式(usr) - 正常的程序执行模式 快速中断模式(fiq) - 支持高速数据传输或通道处理 中断模式(irq) - 用于通用中断处理 管理员模式(svc) - 操作系统的保护模式. 中止模式(abt) - 支持虚拟内存和/或内存保护 系统模式(sys) - 支持操作系统的特殊用户模式(运行操作系统任务) 未定义模式(und) - 支持硬件协处理器的软件仿真
嵌入式系统-第2章 ARM微处理器概述与编程模型
R0
CODE3126
MOV R1, #102
程序代码
跳转地址标号 地地址址最最低低位位为为 1,0表,示表切示换切换 到到ThAuRmMb状状态态
执执行行完完BBXX指指令令,,处处 理理器器切切换换到到ATRhMum状b 态状,态开,始开执始行执A行RM 指Th令umb指令
27
2.4 ARM体系结构的存储器格式
ARM7系列广泛应用于多媒体和嵌入式设备, 包括Internet设备、网络和调制解调器设备,以及 移动电话、PDA等无线设备。
15
2.1.2 ARM微处理器系列
ARM9系列简介
该系列包括ARM9TDMI、ARM920T和带 有高速缓存处理器宏单元的ARM940T。除了 兼容ARM7系列,而且能够更加灵活的设计。
前提下尽量缩小芯片的面积,并降低功耗. ➢ 所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令
的执行效率。 ➢ 可用加载/存储指令批量传输数据,以提高数据的传输效率。 ➢ 可在一条数据处理指令中同时完成逻辑处理和移位处理。 ➢ 在循环处理中使用地址的自动增减来提高运行效率。
20
2、RISC和CISC之间的主要区别:
23
2.2.3 ARM微处理器的指令结构
ARM微处理器在较新的体系结构中支持两种指令集:ARM指令集和 Thumb指令集。
ARM指令为32位的长度 Thumb指令为16位长度 Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较, 可节省30%~40%以上的存储空间,同时具备32位代码的所有优点。
Cortex-M3主要应用于汽车车身系统,工业控制 系统和无线网络等对功耗和成本敏感的嵌入式应用 领域。目前最便宜的基于该内核的ARM单片机售价 为1美元。
第二章 ARM编程模型和指令集-PPT精品文档
问题:三级流水线中PC如何规定? 回答:PC指向被取指的指令,而不是指向正在执行的指令。
2.1.4 ARM的工作模式
ARM的七种运行模式
– – – – – 用户模式(usr) : ARM处理器正常的程序执行状态 快速中断模式(fiq) : 用于高速数据传输或通道处理 外部中断模式(irq) :用于通用的中断处理 管理模式(svc) :操作系统使用的保护模式 数据访问终止模式(abt) :当数据或指令预取终止时进入该模式,可 用于虚拟存储及存储保护。 – 系统模式(sys) : 运行具有特权的操作系统任务。 – 未定义指令中止模式(und) : 当未定义的指令执行时进入该模式, 可用于支持硬件协处理器的软件仿真。
2.1.2 ARM7TDMI的组成
ADD r2,r3,r3,LSL #2
ARM7TDMI的数据流
– 数据:在单循环数据处理指令中,将采用两个寄 存器的操作数。B总线上的数据将通过移位与A总 线上的数据在ALU中合并,结果被写回寄存器组。
– 程序:程序寄存器中的值将存进地址寄存器,再 从这里放进加法器,加后的值再写回寄存器库中 的R15和地址寄存器,作为下一指令的取地址。
8086微处理器没有工作模式之分
4、外部中断模式 (特,异) 5、管理模式 (特,异) 6、数据访问终止模式 (特,异) 7、未定义指令终止模式(特,异)
2.1.5 ARM的寄存器
ARM有37个32位的寄存器
– – – – – – – – 1个专用的程序计数器 1个专用的当前程序状态寄存器 5个专用的程序状态保存寄存器 30个通用寄存器 R0-r12寄存器 R13(堆栈指针,SP)和R14(连接寄存器) 程序计数器,r15(PC) 当前程序状态寄存器,cpsr
第二章 ARM微处理器编程模型
未定义
中国十大品牌IT教育机构
(und)
ARM处理器工作模式
异常模式
快中断 中断 管理
(fiq) (irq) (svc)
中止
们除了可以通过程序切换进入外 ,也可以由特定的异常进入。当特 定的异常出现时,处理器进入相应 的模式。每种异常模式都有一些独 立的寄存器,以避免异常退出时用 户模式的状态不可靠。
第二章
ARM微处理器编程模型
中国十大品牌IT教育机构
主要内容 ARM微处理器的工作状态 ARM体系结构的存储器格式 ARM微处理器的工作模式 ARM体系结构的寄存器组织 ARM微处理器的异常状态
中国十大品牌IT教育机构
R2 R1
未定义
中断
快中断
其中R0~R7为 R0(a1) 未分组的寄存器,也 R1(a2) 就是说对于任何处理 R2(a3) 器模式,这些寄存器 R3(a4) 都对应于相同的32位 R4(v1) 物理寄存器。 R5(v2)
R6(v3) R7(v4) R8(v5) 通用寄 存器和 R9(SB,v6) 程序计 数器 R10(SL,v7) R11(FP,v8) R12(IP)
R13_irq
R10_fiq R11_fiq R12_fiq
R13_fiq
R13(SP)
R13
R13_un R13_svc R13_abt R13_irq R13_fiq d
一般的通用寄存器
寄存器 寄存器在汇 类别 编中的名称 R0(a1) R1(a2) R2(a3) R3(a4) 寄存器R8~R14为分组 R4(v1) 寄存器。它们所对应的物理 R5(v2) 寄存器取决于当前的处理器 R6(v3) 模式,几乎所有允许使用通 R7(v4) 用寄存器的指令都允许使用 R8(v5) 分组寄存器 通用寄 存器和 R9(SB,v6) 程序计 数器 R10(SL,v7) R11(FP,v8) R12(IP)
ARM微处理器的编程模型
第2章 ARM微处理器的编程模型本章简介ARM微处理器编程模型的一些基本概念,包括工作状态切换、数据的存储格式、处理器异常等,通过对本章的阅读,希望读者能了解ARM微处理器的基本工作原理和一些与程序设计相关的基本技术细节,为以后的程序设计打下基础。
本章的主要内容:- ARM微处理器的工作状态- ARM体系结构的存储器格式- ARM微处理器的工作模式- ARM体系结构的寄存器组织- ARM微处理器的异常状态在开始本章之前,首先对字(Word)、半字(Half-Word)、字节(Byte)的概念作一个说明:字(Word):在ARM体系结构中,字的长度为32位,而在8位/16位处理器体系结构中,字的长度一般为16位,请读者在阅读时注意区分。
半字(Half-Word):在ARM体系结构中,半字的长度为16位,与8位/16位处理器体系结构中字的长度一致。
字节(Byte):在ARM体系结构和8位/16位处理器体系结构中,字节的长度均为8位。
2.1 ARM微处理器的工作状态从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:-第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令;-第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。
当ARM微处理器执行32位的ARM指令集时,工作在ARM状态;当ARM微处理器执行16位的Thumb指令集时,工作在Thumb状态。
在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。
状态切换方法:ARM指令集和Thumb指令集均有切换处理器状态的指令,并可在两种工作状态之间切换,但ARM 微处理器在开始执行代码时,应该处于ARM状态。
进入Thumb状态:当操作数寄存器的状态位(位0)为1时,可以采用执行BX指令的方法,使微处理器从ARM状态切换到Thumb状态。
第2章 ARM微处理器的编程模型
第2章ARM微处理器的编程模型本章简介ARM微处理器编程模型的一些基本概念 包括工作状态 换 数据的 储格式 处理器异常等 通过对本章的阅读 希望读者能了解ARM微处理器的基本工作原理和一些 程序 计相关的基本技术 节 后的程序 计打 基础本章的 要内容ARM微处理器的工作状态ARM体系结构的 储器格式ARM微处理器的工作模式ARM体系结构的寄 器组ARM微处理器的异常状态在开始本章之前 首先对 Word 半 字alf-Word 节 Byte 的概念作一个说明 Word 在ARM体系结构中 的长度 32 而在8 /16 处理器体系结构中 的长度一般 16 请读者在阅读时注意区半 字alf-Word 在ARM体系结构中 半 的长度 16 8 /16 处理器体系结构中 的长度一节 Byte 在ARM体系结构和8 /16 处理器体系结构中 节的长度均 82.1 ARM微处理器的工作状态从编程的角度看 ARM微处理器的工作状态一般有两种 并可在两种状态之间 换第一种 ARM状态 时处理器执行32 的 对齐的ARM指第二种 正具umb状态 时处理器执行16 的 半 对齐的正具umb指当ARM微处理器执行32 的ARM指 集时 工作在ARM状态 当ARM微处理器执行16 的正具umb指 集时 工作在正具umb状态 在程序的执行过程中 微处理器可 随时在两种工作状态之间 换 并 处理器工作状态的转 并 影响处理器的工作模式和相应寄 器中的内容状态 换方法:ARM指 集和正具umb指 集均有 换处理器状态的指 并可在两种工作状态之间 换 但ARM 微处理器在开始执行 码时 应 处于ARM状态进入正具umb状态 当操作数寄 器的状态 0 1时 可 采用执行BX指 的方法 使微处理器从ARM状态 换到正具umb状态 外 当处理器处于正具umb状态时发生异常 如存R习 F存习 此ndef Abort 止W存等 则异常处理返回时 自动 换到正具umb状态进入ARM状态 当操作数寄 器的状态 0时 执行BX指 时可 使微处理器从正具umb状态 换到ARM状态 外 在处理器进行异常处理时 把也C指针放入异常模式链接寄 器中 并从异常向量地址开始执行程序 可 使处理器 换到ARM状态2.2 ARM体系结构的 储器格式ARM体系结构将 储器看作是从零地址开始的 节的线性组合 从零 节到 节放置第一个 储的 数据 从第四个 节到第七个 节放置第二个 储的 数据 依次排列 作 32 的微处理器 ARM体系结构所支持的最大 址空间 4GB 232 节ARM体系结构可 用两种方法 储 数据 称之 大端格式和小端格式 体说明如大端格式:在 种格式中 数据的高 节 储在 地址中 而 数据的 节则 放在高地址中 如图2.1所示图2.1 大端格式 储 数据小端格式:大端 储格式相反 在小端 储格式中 地址中 放的是 数据的 节 高地址 放的是 数据的高 节 如图2.2所示图2. 2 小端格式 储 数据2.3 指 长度及数据类型ARM微处理器的指 长度可 是32 在ARM状态 可 16 在正具umb状态 ARM微处理器中支持 节 8 半 16 32 种数据类型 中 需要4 节对齐 地址的 两 0 半 需要2 节对齐 地址的最 02.4 处理器模式ARM微处理器支持7种运行模式─ 用户模式 usr ARM处理器 常的程序执行状态─ 快 中断模式 fiq 用于高 数据传输或通道处理─ 外部中断模式 irq 用于通用的中断处理─ 管理模式 svc 操作系统使用的保护模式─ 数据 问 模式(abt) 当数据或指 预 时进入 模式 可用于虚拟 储及 储保护─ 系统模式 sys 运行 有特权的操作系统任─ 未定 指 中 模式 und 当未定 的指 执行时进入 模式 可用于支持硬件协处理器的软件仿真ARM微处理器的运行模式可 通过软件改 可 通过外部中断或异常处理改大多数的应用程序运行在用户模式 当处理器运行在用户模式 时 某些被保护的系统资源是 能被 问的除用户模式 外 余的所有6种模式称之 非用户模式 或特权模式 也rivile其ed Modes 中除去用户模式和系统模式 外的5种又称 异常模式 Exception Modes 常用于处理中断或异常 及需要 问 保护的系统资源等情况2.5 寄 器组ARM微处理器共有37个32 寄 器 中31个 通用寄 器 6个 状态寄 器 但是 些寄 器 能被同时 问 体哪些寄 器是可编程 问的 决微处理器的工作状态及 体的运行模式 但在任何时候 通用寄 器R14~R0 程序计数器也C 一个或两个状态寄 器都是可 问的2.5.1 ARM状态下的寄存器组织通用寄存器:通用寄 器包括R0~R15 可 类─ 未 组寄 器R0~R7─ 组寄 器R8~R14─ 程序计数器也C(R15)未 组寄存器R0~R7:在所有的运行模式 未 组寄 器都指向同一个物理寄 器 他们未被系统用作特殊的用途 因 在中断或异常处理进行运行模式转换时 由于 同的处理器运行模式均使用相同的物理寄 器 可能会 成寄 器中数据的破坏 一点在进行程序 计时应引起注意组寄存器R8~R14对于 组寄 器 他们每一次所 问的物理寄 器 处理器当前的运行模式有关对于R8~R12来说 每个寄 器对应两个 同的物理寄 器 当使用fiq模式时 问寄 器R8_fiq~R12_fiq 当使用除fiq模式 外的 他模式时 问寄 器R8_usr~R12_usr 对于R13 R14来说 每个寄 器对应6个 同的物理寄 器 中的一个是用户模式 系统模式共用 另外5个物理寄 器对应于 他5种 同的运行模式采用 的记号来区 同的物理寄 器R13_<mode>R14_<mode>中 mode 几种模式之一 usr fiq irq svc abt und寄 器R13在ARM指 中常用作堆 指针 但 只是一种 惯用法 用户 可使用 他的寄 器作 堆 指针 而在正具umb指 集中 某些指 强制性的要求使用R13作 堆 指针 由于处理器的每种运行模式均有自己独立的物理寄 器R13 在用户应用程序的初始化部 一般都要初始化每种模式 的R13 使 指向 运行模式的 空间 样 当程序的运行进入异常模式时 可 将需要保护的寄 器放入R13所指向的堆 而当程序从异常模式返回时 则从对应的堆 中恢复 采用 种方式可 保证异常发生后程序的 常执行R14 称作子程序 接寄 器 止ubroutine Link Re其ister 或 接寄 器LR 当执行BL子程序调用指 时 R14中得到R15 程序计数器也C 的备份 他情况 R14用作通用寄 器 之类似 当发生中断或异常时 对应的 组寄 器R14_svc R14_irq R14_fiq R14_abt和R14_und 用来保 R15的返回值寄 器R14常用在如 的情况在每一种运行模式 都可用R14保 子程序的返回地址 当用BL或BLX指 调用子程序时 将也C的当前值拷贝给R14 执行完子程序后 又将R14的值拷贝回也C 即可完成子程序的调用返回 的描述可用指 完成1 执行 任意一条指MOV PC LRBX LR2 在子程序入口处使用 指 将R14 入堆STMFD SP!,{<Regs>,LR}对应的 使用 指 可 完成子程序返回LDMFD SP!,{<Regs>,PC}R14 可作 通用寄 器程序计数器PC(R15)寄 器R15用作程序计数器 也C 在ARM状态 [1义0] 0 [31义2]用于保 也C 在正具umb 状态 [0] 0 [31义1]用于保 也C 虽然可 用作通用寄 器 但是有一些指 在使用R15时有一些特殊限制 若 注意 执行的结果将是 可预料的 在ARM状态 也C的0和1 是0 在正具umb 状态 也C的0 是0R15虽然 可用作通用寄 器 但一般 使用 因 对R15的使用有一些特殊的限制 当 反了 些限制时 程序的执行结果是未知的由于ARM体系结构采用了多级流水线技术 对于ARM指 集而言 PC总是指向当前指 的 两条指 的地址 即PC的值 当前指 的地址值 8个 节图2.3 ARM状态 的寄 器组在ARM状态 任一时刻可 问 所讨论的16个通用寄 器和一到两个状态寄 器 在非用户模式 特权模式 则可 问到特定模式 组寄 器 图2.3说明在每一种运行模式 哪一些寄 器是可 问的寄存器R16:寄 器R16用作CPSR(Current Program Status Register 当前程序状态寄 器) CPSR可在任何运行模式 被 问 它包括条件 志 中断禁 当前处理器模式 志 及 他一些相关的 制和状态每一种运行模式 又都有一个 用的物理状态寄 器 称 止也止R 止aved 也ro其ram 止tatus Re其ister 备份的程序状态寄 器 当异常发生时 止也止R用于保 C也止R的当前值 从异常 出时则可由止也止R来恢复C也止R由于用户模式和系统模式 属于异常模式 他们没有止也止R 当在 两种模式 问止也止R 结果是未知的2.5.2 Thumb状态下的寄存器组织正具umb状态 的寄 器集是ARM状态 寄 器集的一个子集 程序可 直接 问8个通用寄 器 R7~R0 程序计数器 也C 堆 指针 止也 接寄 器 LR 和C也止R 同时 在每一种特权模式 都有一组止也 LR和止也止R 图2.4表明正具umb状态 的寄 器组图2.4 正具umb状态 的寄 器组Thumb状态下的寄存器组织与ARM状态下的寄存器组织的关系:─ 正具umb状态 和ARM状态 的R0~R7是相同的─ 正具umb状态 和ARM状态 的C也止R和所有的止也止R是相同的─ 正具umb状态 的止也对应于ARM状态 的R13─ 正具umb状态 的LR对应于ARM状态 的R14─ 正具umb状态 的程序计数器对应于ARM状态 R15的对应关系如图2.5所示图2.5 正具umb状态 的寄 器组访问THUMB状态下的高位寄存器 Hi-registers :在正具umb状态 高 寄 器R8~R15并 是 准寄 器集的一部 但可使用汇编语言程序 限制的 问 些寄 器 将 用作快 的暂 器 使用带特殊 量的MO步指 数据可 在 寄 器和高 寄 器之间进行传 高 寄 器的值可 使用CM也和ADD指 进行 较或 寄 器中的值2.5.3 程序状态寄存器ARM体系结构包 一个当前程序状态寄 器 C也止R 和五个备份的程序状态寄 器 止也止Rs 备份的程序状态寄 器用来进行异常处理 能包括─ 保 AL此中的当前操作信息─ 制允许和禁 中断─ 置处理器的运行模式程序状态寄 器的每一 的安排如图2.6所示图2.6 程序状态寄 器格式条件码标志 Condition Code FlagsN Z C 步均 条件码 志 它们的内容可被算术或逻辑运算的结果所改 并 可决定某条指 是否被执行在ARM状态 绝大多数的指 都是有条件执行的在正具umb状态 仅有 支指 是有条件执行的条件码 志各 的 体 如表2-1所示表2-1 条件码标志的具体 义标志位 义N 当用两个补码表示的带符号数进行运算时 N=1 表示运算的结果 负数 N=0 表示运算的结果 数或零Z Z=1 表示运算的结果 零 Z=0表示运算的结果 非零C 可 有4种方法 置C的值─ 法运算 包括 较指 CMN 当运算结果产生了进 时 无符号数溢出 C=1 否则C=0─ 减法运算 包括 较指 CM也 当运算时产生了借 无符号数溢出 C=0 否则C=1─ 对于包 移 操作的非 /减运算指 C 移出值的最后一─ 对于 他的非 /减运算指 C的值通常 改步 可 有2种方法 置步的值─ 对于 /减法运算指 当操作数和运算结果 二进制的补码表示的带符号数时 步=1表示符号溢出─ 对于 他的非 /减运算指 步的值通常 改习 在ARM v5及 版本的E系列处理器中 用习 志 指示增强的D止也运算指 是否发生了溢出 在 他版本的处理器中 习 志 无定控制位也止R的 8 包括存 F 正和M[4 0] 称 制 当发生异常时 些 可 被改 如果处理器运行特权模式 些 可 由程序修改─ 中断禁 存 F存=1 禁 存R习中断;F=1 禁 F存习中断─ 正 志 反映处理器的运行状态对于ARM体系结构v5及 的版本的正系列处理器 当 1时 程序运行于正具umb状态 否则运行于ARM状态对于ARM体系结构v5及 的版本的非正系列处理器 当 1时 执行 一条指 引起 定 的指 异常 当 0时 表示运行于ARM状态─ 运行模式 M[4 0] M0 M1 M2 M3 M4是模式 些 决定了处理器的运行模式 体 如表2-2所示表2-2 运行模式位M[4:0]的具体 义M[4:0] 处理器模式可访问的寄存器0b10000 用户模式PC CPSR,R0-R140b10001 FIQ模式PC CPSR, SPSR_fiq R14_fiq-R8_fiq, R7~R00b10010 IRQ模式PC CPSR, SPSR_irq R14_irq,R13_irq,R12~R00b10011 管理模式PC CPSR, SPSR_svc R14_svc,R13_svc,,R12~R0,0b10111 中 模式PC CPSR, SPSR_abt R14_abt,R13_abt, R12~R0,0b11011 未定 模式PC CPSR, SPSR_und R14_und,R13_und, R12~R0,0b11111 系统模式PC CPSR ARM v4及 版本 , R14~R0由表2-2可知 并 是所有的运行模式 的组合都是有效地 他的组合结果会 处理器进入一个 可恢复的状态保留位也止R中的 余 保留 当改 也止R中的条件码 志 或者 制 时 保留 要被改在程序中 要使用保留 来 储数据 保留 将用于ARM版本的扩展2.6 异常 Exceptions当 常的程序执行流程发生暂时的停 时 称之 异常 例如处理一个外部的中断请求 在处理异常之前 当前处理器的状态必须保留 样当异常处理完成之后 当前程序可 继续执行 处理器允许多个异常同时发生 它们将会按固定的优先级进行处理ARM体系结构中的异常 8 /16 体系结构的中断有很大的相似之处 但异常 中断的概念并 完全等同2.6.1 ARM体系结构所支持的异常类型ARM体系结构所支持的异常及 体 如表2-3所示表2-3 ARM体系结构所支持的异常异常类型具体 义复 当处理器的复 电平有效时 产生复 异常 程序跳转到复 异常处理程序处执行 未定 指 当ARM处理器或协处理器遇到 能处理的指 时 产生未定 指 异常 可使用异常机制进行软件仿真软件中断 异常由执行SWI指 产生 可用于用户模式 的程序调用特权操作指 可使用 异常机制实现系统 能调用指 预 中 若处理器预 指 的地址 在 或 地址 允许当前指 问 储器会向处理器发出中 信号 但当预 的指 被执行时 才会产生指 预 中 异常 数据中 若处理器数据 问指 的地址 在 或 地址 允许当前指 问时 产生数据中 异常IRQ 外部中断请求 当处理器的外部中断请求引脚有效 CPSR中的I 0时 产生IRQ异常 系统的外 可通过 异常请求中断服FIQ 快 中断请求 当处理器的快 中断请求引脚有效 CPSR中的F 0时 产生FIQ异常2.6.2 对异常的响应当一个异常出现 后 ARM微处理器会执行 几 操作1 将 一条指 的地址 入相应 接寄 器LR 便程序在处理异常返回时能从 确的 置重新开始执行 若异常是从ARM状态进入 LR寄 器中保 的是 一条指 的地址 当前也C 4或也C 8 异常的类型有关 若异常是从正具umb状态进入 则在LR寄 器中保 当前也C的偏移量 样 异常处理程序就 需要确定异常是从何种状态进入的 例如 在软件中断异常止W存 指 MO步 也C R14_svc总是返回到 一条指 管止W存是在ARM状态执行 是在正具umb状态执行2 将C也止R复制到相应的止也止R中3 根据异常类型 强制 置C也止R的运行模式4 强制也C从相关的异常向量地址 一条指 执行 从而跳转到相应的异常处理程序处可 置中断禁 禁 中断发生如果异常发生时 处理器处于正具umb状态 则当异常向量地址 载入也C时 处理器自动 换到ARM状态ARM微处理器对异常的响应过程用伪码可 描述R14_<Exception_Mode> = Return LinkSPSR_<Exception_Mode> = CPSRCPSR[4:0] = Exception Mode NumberCPSR[5] = 0 当运行于ARM工作状态时If <Exception_Mode> == Reset or FIQ then当响应FIQ异常时 禁 新的FIQ异常CPSR[6] = 1CPSR[7] = 1PC = Exception Vector Address2.6.3 从异常返回异常处理完 之后 ARM微处理器会执行 几 操作从异常返回1 将 接寄 器LR的值减去相应的偏移量后 到也C中2 将止也止R复制回C也止R中3 若在进入异常处理时 置了中断禁 要在 清除可 认 应用程序总是从复 异常处理程序开始执行的 因 复 异常处理程序 需要返回 2.6.4 各类异常的具体描述FIQ Fast Interrupt RequestF存习异常是 了支持数据传输或者通道处理而 计的 在ARM状态 系统有足够的私有寄 器 从而可 避免对寄 器保 的需求 并减小了系统 文 换的开销若将C也止R的F 置 1 则会禁 F存习中断 若将C也止R的F 清零 处理器会在指 执行时检查F存习的输入 注意只有在特权模式 才能改 F 的状态可由外部通过对处理器 的nF存习引脚输入 电平产生F存习 管是在ARM状态 是在正具umb状态 进入F存习模式 F存习处理程序均会执行 指 从F存习模式返回SUBS PC,R14_fiq ,#4指 将寄 器R14_fiq的值减去4后 复制到程序计数器PC中 从而实现从异常处理程序中的返回 同时将SPSR_mode寄 器的内容复制到当前程序状态寄 器CPSR中IRQ Interrupt Request存R习异常属于 常的中断请求 可通过对处理器的n存R习引脚输入 电平产生 存R习的优先级 于F存习 当程序执行进入F存习异常时 存R习可能被屏蔽若将C也止R的存 置 1 则会禁 存R习中断 若将C也止R的存 清零 处理器会在指 执行完之前检查存R习的输入 注意只有在特权模式 才能改 存 的状态管是在ARM状态 是在正具umb状态 进入存R习模式 存R习处理程序均会执行 指 从存R习模式返回SUBS PC , R14_irq , #4指 将寄 器R14_irq的值减去4后 复制到程序计数器PC中 从而实现从异常处理程序中的返回 同时将SPSR_mode寄 器的内容复制到当前程序状态寄 器CPSR中ABORT 中止产生中 异常意味着对 储器的 问失败 ARM微处理器在 储器 问周期内检查是否发生中 异常中 异常包括两种类型─ 指 预 中 发生在指 预 时─ 数据中 发生在数据 问时当指 预 问 储器失败时 储器系统向ARM处理器发出 储器中 Abort 信号 预 的指 被记 无效 但只有当处理器试图执行无效指 时 指 预 中 异常才会发生 如果指 未被执行 例如在指 流水线中发生了跳转 则预 指 中 会发生若数据中 发生 系统的响应 指 的类型有关当确定了中 的原因后 Abort处理程序均会执行 指 从中 模式返回 无论是在ARM状态 是正具umb状态SUBS PC, R14_abt, #4 指 预 中SUBS PC, R14_abt, #8 数据中指 恢复也C 从R14_abt 和C也止R 从止也止R_abt 的值 并重新执行中 的指 Software Interruupt(软件中断)软件中断指 止W存 用于进入管理模式 常用于请求执行特定的管理 能 软件中断处理程序执行 指 从止W存模式返回 无论是在ARM状态 是正具umb状态MOV PC , R14_svc指 恢复也C 从R14_svc 和C也止R 从止也止R_svc 的值 并返回到止W存的 一条指 Undefined Instruction(未定义指 )当ARM处理器遇到 能处理的指 时 会产生未定 指 异常 采用 种机制 可 通过软件仿真扩展ARM或正具umb指 集在仿真未定 指 后 处理器执行 程序返回 无论是在ARM状态 是正具umb状态 MOVS PC, R14_und指 恢复也C 从R14_und 和C也止R 从止也止R_und 的值 并返回到未定 指 后的 一条指2.6.5 异常进入/退出小节表2-4总结了进入异常处理时保 在相应R14中的PC值 及在 出异常处理时 荐使用的指表2-4 异常进入/退出注意返回指前的状态ARM R14_x Thumb R14_xBL MOV PC R14 PC 4 PC 2 1SWI MOVS PC R14_svc PC 4 PC 2 1UDEF MOVS PC R14_und PC 4 PC 2 1FIQ SUBS PC R14_fiq #4 PC 4 PC 4 2IRQ SUBS PC R14_irq #4 PC 4 PC 4 2PABT SUBS PC R14_abt #4 PC 4 PC 4 1DABT SUBS PC R14_abt #8 PC 8 PC 8 3RESET NA 4注意1 在 PC应是 有预 中 的BL/SWI/未定 指 所 的地址2 在 PC是从FIQ或IRQ 得 能执行的指 的地址3 在 PC是产生数据中 的 载或 储指 的地址4 系统复 时 保 在R14_svc中的值是 可预知的2.6.6 异常向量 Exception Vectors表2-5显示异常向量地址表2-5 异常向量表地址异常进入模式0x0000,0000 复 管理模式0x0000,0004 未定 指 未定 模式0x0000,0008 软件中断管理模式ARM应用系统开发 解──基于S3C4510B的系统 计11 0x0000,000C 中 预 指 中 模式0x0000,0010 中 数据 中 模式0x0000,0014 保留保留0x0000,0018 IRQ IRQ0x0000,001C FIQ FIQ2.6.7 异常优先级 Exception Priorities当多个异常同时发生时 系统根据固定的优先级决定异常的处理次序 异常优先级由高到 的排列次序如表2-6所示表2-6 异常优先级优先级异常1 最高 复2 数据中3 FIQ4 IRQ5 预 指 中6 最 未定 指 SWI2.6.8 应用程序中的异常处理当系统运行时 异常可能会随时发生 保证在ARM处理器发生异常时 于处于未知状态 在应用程序的 计中 首先要进行异常处理 采用的方式是在异常向量表中的特定 置放置一条跳转指 跳转到异常处理程序 当ARM处理器发生异常时 程序计数器PC会被强制 置 对应的异常向量 从而跳转到异常处理程序 当异常处理完成 后 返回到 程序继续执行2.7 本章小节本章对ARM微处理器的体系结构 寄 器的组 处理器的工作状态 运行模式 及处理器异常等内容进行了描述 些内容 是ARM体系结构的基本内容 是系统软 硬件 计的基础。
第二章 ARM微处理器编程
管理
中止
未定义
R0(a1)
RR00
R1(a2)
RR11
R2(a3)
RR22
R3(a4)
RR33
R4(v1)
RR44
R5(v2)
RR55
R6(v3)
RR66
所有的37个寄存器,分 通用寄存器
和程序计数 器
R7(V4) R8(V4)
成两大类: R9(SB,v6)
R10(SL,v7)
RR77 RR88 RR99 RR1100
中断
R13_irq * R14_irq * SPSR_irq
快中断
R8_fiq * R9_fiq * R10_fiq * R11_fiq * R12_fiq * R13_fiq * R14_fiq *
SPSR_fiq
2-3-1 ARM状态下的寄存器组织
寄存器类别
寄存器在汇编中的名 称
用户
系统
各模式下实际访问的寄存器
操作系统保护模式
系统复位和软件中断响应时进入此模式
用于支持虚拟内存和/或存储器保 护
在ARM9没有大用处
支持硬件协处理器的软件仿真 未定义指令异常响应时进入此模式
8
2-2 寄存器工作模式
特权模式:
处理器模式 用户 (usr) 系统系统 (sy(s)ys)
快中快断中断(fiq()fiq) 中断中断 (irq()irq) 管理管理 (sv(cs)vc)
中止中止 (ab(at)bt)
未定未义定义 (un(udn) d)
说明
备注
正常程序工作模式
不能直接切换到其它模式
除用户模式外,其它模式均 用于支持操作系统的特权任务等
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
香港即时科研集团
即时科研 IT 精英 培训
14
ThizLinux
• • • • • • • • •
以上的描述可用指令完成: 1、执行以下任意一条指令: MOV PC,LR BX LR 2、在子程序入口处使用以下指令将R14存入堆栈: STMFD SP!,{<Regs>,LR} 对应的,使用以下指令可以完称子程序返回: LDMFD SP!,{<Regs>,PC} R14也可作为通用寄存器。
香港即时科研集团 即时科研 IT 精英 培训
17
ThizLinux
*ARM状态下,任一时刻可以访问以上所讨论的16个通用寄存器和一 到两个状态寄存器。在非用户模式(特权模式)下,则可访问到特定 模式分组寄存器
香港即时科研集团
即时科研 IT 精英 培训18ThizLinux
•
寄存器R16: 1)寄存器R16用作CPSR(Current Program Status Register,当前程 序状态寄存器) ; 2)CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止 位、当前处理器模式标志位,以及其他一些相关的控制和状态位 ; 3)SPSR(Saved Program Status Register,备份的程序状态寄存器 (异常发生时,SPSR用于保存CPSR的当前值,从异常退出时则可由 SPSR来恢复CPSR )
香港即时科研集团
即时科研 IT 精英 培训
21
ThizLinux
Thumb状态下的寄存器组织
香港即时科研集团
即时科研 IT 精英 培训
22
ThizLinux
7. Thumb状态下的寄存器组织与ARM状态 下的寄存器组织的关系
• • • • •
─ Thumb状态下和ARM状态下的R0~R7是相同的。 ─ Thumb状态下和ARM状态下的CPSR和所有的SPSR是相同的。 ─ Thumb状态下的SP对应于ARM状态下的R13。 ─ Thumb状态下的LR对应于ARM状态下的R14。 ─ Thumb状态下的程序计数器对应于ARM状态下R15
香港即时科研集团
即时科研 IT 精英 培训
11
ThizLinux
1)R0~R7 未分组寄存器 (未分组寄存器都指向同一个物理寄存器)?? 2)R8~R14 R8~R12来说,每个寄存器对应两个不同的物理寄存器,当使用fiq模 式时,访问寄存器R8_fiq~R12_fiq;当使用除fiq模式以外的其他模式 时,访问寄存器R8_usr~R12_usr
香港即时科研集团
即时科研 IT 精英 培训
26
ThizLinux
程序状态寄存器格式
即时科研 IT 精英 培训
香港即时科研集团
27
ThizLinux
• • • •
条件码标志 N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运 算的结果所改变,并且可以决定某条指令是否被执行。 在ARM状态下,绝大多数的指令都是有条件执行的。 在Thumb状态下,仅有分支指令是有条件执行的。
香港即时科研集团
即时科研 IT 精英 培训
7
ThizLinux
3.指令长度及数据类型
• •
ARM微处理器的指令长度可以是32位(在ARM状态下),也可以为16 位(在Thumb状态下)。 ARM微处理器中支持字节(8位)、半字(16位)、字(32位)三种 数据类型,其中,字需要4字节对齐(地址的低两位为0)、半字需要2 字节对齐(地址的最低位为0)
嵌入式软件工程师课程系列
第2章 ARM微处理器的编程模型
香港即时科研集团
即时科研 IT 精英 培训
1
ThizLinux
• 课程涉及内容:
1.ARM处理器 2.ARM处理器的编程模型 3.ARM处理器的指令系统 4.UClinux 5.交叉编译 6.应用系统设计(开发 板) 7.ARM程序设计
香港即时科研集团
• •
ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格 式; 大端格式: 在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节 则存放在高地址中
香港即时科研集团
即时科研 IT 精英 培训
6
ThizLinux
• •
小端格式: 与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据 的低字节,高地址存放的是字数据的高字节
即时科研 IT 精英 培训
2
ThizLinux
• • • • • •
本讲的主要内容: - ARM微处理器的工作状态 - ARM体系结构的存储器格式 - ARM微处理器的工作模式 - ARM体系结构的寄存器组织 - ARM微处理器的异常状态
香港即时科研集团
即时科研 IT 精英 培训
3
ThizLinux
•
ARM体系结构将存储器看作是从零地址开始的字节的线性组合。从零 字节到三字节放置第一个存储的字数据,从第四个字节到第七个字节 放置第二个存储的字数据,依次排列。作为32位的微处理器,ARM体 系结构所支持的最大寻址空间为4GB(232字节)。
香港即时科研集团
即时科研 IT 精英 培训
5
ThizLinux
香港即时科研集团
即时科研 IT 精英 培训
13
ThizLinux
• •
寄存器R13在ARM指令中常用作堆栈指针 ; Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指针 ; R14也称作子程序连接寄存器(Subroutine Link Register)或连接寄 存器LR ; 例如:在每一种运行模式下,都可用R14保存子程序的返回地址,当用 BL或BLX指令调用子程序时,将PC的当前值拷贝给R14,执行完子 程序后,又将R14的值拷贝回PC,即可完成子程序的调用返回 .
0b11011
未定义模式
PC,CPSR, SPSR_und,R14_und,R13_und, R12~R0,
0b11111
系统模式
PC,CPSR(ARM v4及以上版本), R14~R0
运行模式位M[4:0]的具体含义 香港即时科研集团 即时科研 IT 精英 培训
30
ThizLinux
保留位 PSR中的其余位为保留位,当改变PSR中的条件码标志位或者控制位 时,保留位不要被改变,在程序中也不要使用保留位来存储数据。保 留位将用于ARM版本的扩展。
香港即时科研集团
即时科研 IT 精英 培训
10
ThizLinux
5. ARM状态下的寄存器组织
• •
ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为 状态寄存器; 通用寄存器: 通用寄存器包括R0~R15,可以分为三类: ─ 未分组寄存器R0~R7; ─ 分组寄存器R8~R14 ─ 程序计数器PC(R15)
香港即时科研集团
即时科研 IT 精英 培训
25
ThizLinux
9.程序状态寄存器
• • • • •
ARM体系结构包含一个当前程序状态寄存器(CPSR)和五个备份的 程序状态寄存器(SPSRs) 备份的程序状态寄存器用来进行异常处理,其功能包括: ─ 保存ALU中的当前操作信息 ─ 控制允许和禁止中断 ─ 设置处理器的运行模式
香港即时科研集团
即时科研 IT 精英 培训
31
ThizLinux
•
异常(Exceptions) 正常的程序执行流程发生暂时的停止时,称之为异常 . ARM体系结构所支持的异常
异常类型 具体含义 当处理器的复位电平有效时,产生复位异常,程序跳转到复位异常处理程序处执行。
复位
未定义指令
当ARM处理器或协处理器遇到不能处理的指令时,产生未定义指令异常。可使用该异常机制进行软件仿真。
0b10010
IRQ模式
PC,CPSR, SPSR_irq,R14_irq,R13_irq,R12~R0
0b10011
管理模式
PC,CPSR, SPSR_svc,R14_svc,R13_svc,,R12~R0,
0b10111
中止模式
PC,CPSR, SPSR_abt,R14_abt,R13_abt, R12~R0,
香港即时科研集团
即时科研 IT 精英 培训
12
ThizLinux
•
R13、R14 R13_<mode> R14_<mode> mode为以下几种模式之一:usr、fiq、irq、svc、abt、und 每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式与系 统模式共用,另外5个物理寄存器对应于其他5种不同的运行模式
香港即时科研集团
即时科研 IT 精英 培训
23
ThizLinux
香港即时科研集团
即时科研 IT 精英 培训
24
ThizLinux
8. THUMB状态下的高位寄存器
• •
高位寄存器R8~R15并不是标准寄存器集的一部分,但可使用汇编语 言程序受限制的访问这些寄存器,将其用作快速的暂存器。 MOV指令,数据可以在低位寄存器和高位寄存器之间进行传送;高位 寄存器的值可以使用CMP和ADD指令进行比较或加上低位寄存器中的 值。
香港即时科研集团
即时科研 IT 精英 培训
9
ThizLinux
•
除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模 式(Privileged Modes);其中除去用户模式和系统模式以外的5种又 称为异常模式(Exception Modes),常用于处理中断或异常,以及 需要访问受保护的系统资源等情况。
香港即时科研集团
即时科研 IT 精英 培训
15
ThizLinux
•
程序计数器PC(R15) ARM状态下,位[1:0]为0,位[31:2]用于保存PC; Thumb状态下,位[0]为0,位[31:1]用于保存PC .