1. 数据类型:字节、半字、字
2. 地址空间:最大可寻址空间位4GB(2的32次方字节)
3. 大小端格式:
大端格式是字数据的高字节存储在低地址中,低字节存在高地址中
小端格式是低地址中寸的是子数据的低字节,高地址存放的是子数据的高字节
二、处理器模式
ARM处理器共有7种工作模式,除用户(user)模式之外的其他6种处理模式统称为特权模式(Privileged Modes)。在这些模式下,程序可以访问所有的系统资源,也可以任意切换处理器模式。特权模式中除系统(system)模式之外的其他5种模式又统称为异常模式。
处理器模式可以通过软件控制进行切换,也可以通过外部中断或内部异常处理过程进行切换。运行在用户模式下的程序不能访问一些受操作系统保护的系统资源,也不能直接进行处理器模式切换,如果要想进行模式切换,可以产生异常处理,在异常处理过程中进行处理器模式的切换,这种体系架构可以使操作系统控制整个系统资源。
每一种异常模式中都有一组寄存器供异常处理程序使用,这样可以保证在进入异常模式时,用户模式下的寄存器不被破坏。
系统模式不是通过异常过程进入的,它和用户模式具有完全相同的寄存器。系统模式属于特权模式,可以访问所有系统资源,也可以直接进行处理器模式切换,主要供操作系统内核进程使用;通常操作系统内核进程需要访问所有的系统资源,同时该进程仍然使用用户模式下的寄存器组,而不是异常模式下的寄存器组,这样可以保证当异常发生时内核进程状态不被破坏。
ARM处理器的7种工作模式如下表所示:
处理器工作模式
说 明
用户(user,usr)模式
正常程序运行模式
快速中断(FIQ,fiq)模式
异常
模式
特权模式
privileged modes
快速中断处理
外部中断(IRQ,irq)模式
普通中断处理
超级用户(supervisor,svc)模式
提供操作系统使用的一种保护模式,swi命令状态
数据访问终止(abort,abt)模式
用于虚拟存储和存储保护
未定义指令终止(undefined,und)模式
用于支持通过软件仿真硬件的协处理
系统(system,sys)模式
用于运行特权级的操作系统任务
对应于以上7种模式,ARM处理器有7组通用寄存器,如下表所示:
usr模式
sys模式
svc模式
abt模式
und模式
irq模式
fiq模式
R0
R0
R0
R0
R0
R0
R0
R1
R1
R1
R1
R1
R1
R1
R2
R2
R2
R2
R2
R2
R2
R3
R3
R3
R3
R3
R3
R3
R4
R4
R4
R4
R4
R4
R4
R5
R5
R5
R5
R5
R5
R5
R6
R6
R6
R6
R6
R6
R6
R7
R7
R7
R7
R7
R7
R7
R8
R8
R8
R8
R8
R8
R8_fiq
R9
R9
R9
R9
R9
R9
R9_fiq
R10
R10
R10
R10
R10
R10
R10_fiq
R11
R11
R11
R11
R11
R11
R11_fiq
R12
R12
R12
R12
R12
R12
R12_fiq
R13
R13
R13_svc
R13_abt
R13_und
R13_irq
R13_fiq
R14
R14
R14_svc
R14_abt
R14_und
R14_irq
R14_fiq
PC
PC
PC
PC
PC
PC
PC
CPSR
CPSR
CPSR
CPSR
CPSR
CPSR
CPSR
SPSR_svc
SPSR_abt
SPSR_und
SPSR_irq
SPSR_fiq
说明:
-
ARM处理器共有37个寄存器,被分为若干个组(BANK),这些寄存器包括31个通用寄存器和6个状态寄存器,其中通用寄存器包括程序计数器(PC指针)及所有寄存器(均为32位)。
-
ARM处理器中有用户模式、系统模式、特权模式、数据访问终止模式、未定义指令终止模式、IRQ中断模式、FIQ中断模式7种工作模式,每种工作模式都有R0~R15及CPSR共17个通用寄存器,而在5种异常中断(exception)模式中又各自拥有一个独立的SPSR寄存器用于存放当前状态寄存器的值。这些通用寄存器对于各种工作模式或部分工作模式有些是公用的,如表7-2所示。
-
R8~R12对于快速中断FIQ模式之外的其他模式都是公用的,而FIQ模式另外有一套自己寄存器R8_fiq~R12_fiq,这样是为了在处理FIQ中断时不必保护R8~R12寄存器,从而提高响应速度。
-
R13和R14除了用户模式和系统模式公用外,其他每种异常模式都有一套自己独立的寄存器:R13_svc、R14_svc/R13_abt、R14_abt/R13_und、R14_und/R13_irq、R14_irq/R13_fiq、R14_fiq,即R13和R14有6套物理寄存器实现。
-
R13/sp寄存器在ARM中除了可用作通用寄存器外还用作堆栈指针sp,而且每一种异常(exception)模式都有自己独立的R13物理寄存器实现。在子程序中R13只能用作sp,sp在进入子程序的值和退出子程序的值必须相等。
-
R14/lr寄存器在ARM中除了可以用作通用寄存器外,还可用作连接寄存器lr,用来保存子程序的返回地址,如果子程序保存了返回地址,R14也可以用作其他用途。每一种异常(exception)模式都有自己独立的R14/lr物理寄存器实现。
-
R15寄存器在ARM中用作程序计数器pc,虽然R15也可以用作通用寄存器,但要注意有一些特殊限制,如果违反了这些限制,指令执行的结果将是不可预料的。
-
子程序通过寄存器R0~R3来传递参数,这时,R0~R3可以记作A1~A4。如果参数超过4个,可以将剩余的参数送到数据栈中,入栈的顺序与参数的顺序相反,即最后一个参数先入栈。
-
在子程序中用R4~R11来保存局部变量,这时,R4~R11可以记作V1~V8;而在Thumb程序中,通常只能使用寄存器R4~R7。
-
寄存器R12用作子程序间的scratch寄存器,记作ip,在子程序间的连接代码中常有这种使用规则
三、异常
当正常的程序执行流程发生暂时的停止时,称之为异常,例如处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。
当一个异常出现以后,ARM微处理器会执行以下几步操作
1. 将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。
2. 将CPSR复制到相应的SPSR中。
3. 根据异常类型,强制设置CPSR的运行模式位。
4. 强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。
ARM体系结构所支持的异常类型
1. 复位:复位电平有效时,产生复位异常,程序跳转到复位处理程序处执行
2. 未定义指令:遇到不能处理的指令,定义未定义指令异常
3. 软件中断:执行SWI指令产生,用于用户模式下的程序调用特权指令
4. 指令预取中止:处理器预取指令的地址不存在,或该地址不允许当前指令访问
5. 数据中止:处理器数据访问指令的地址不存在,或该地址不允许当前指令访问
6. IRQ:外部中断请求有效,且CPSR中的I位为0时,产生IRQ异常
7. FIQ:快速中断请求引脚有效,且CPSR的F位为0时,产生FIQ异常
ARM体系中断向量表
优先级
地址
异常原因
进入模式
1
0x0000,0000
复位
管理模式
6
0x0000,0004
未定义指令
未定义模式
6
0x0000,0008
软件中断
管理模式
5
0x0000,000C
中止(预取指令错误)
中止模式
2
0x0000,0010
中止(预取数据错误)
中止模式
0x0000,0014
保留
保留
4
0x0000,0018
IRQ(外部中断,且I允许)
IRQ
3
0x0000,001C
FIQ(外部中断,且F允许)
FIQ
上一篇:s3c2440 NAND与NOR启动方式详解
下一篇:LPC1700系列Cortex-M3内部时钟系统
推荐阅读最新更新时间:2024-03-16 15:03
设计资源 培训 开发板 精华推荐
- 免费领取 | 射频年度盛会EDI CON VIP全场通票(北京,3.20~22)
- “ADI实验室电路技术中心”落户EEWORLD!
- 关注 PI 最新 SCALE-iDriver IC产品系列 答题有好礼!
- 有奖活动|Mentor PCB 手册:《利用自动验证消除原理图设计错误》
- 【搜集令】晒晒你收藏的经典模拟电路!!!
- 点评《与Atmel SAM D21/R21的相遇、相识、相知(上)》,赢温暖新春礼
- 你眼中的TI DSP有多么的与众不同?
- 技术直播:TI 60G毫米波传感器概述和应用介绍,种草封装了天线的智能传感器IWR6843
- EEWORLD新年有奖竞猜,邀你来出题啦!
- 注册泰克MDO示波器礼券 拿蓝牙耳机和纤细激光笔!