2.ARM处理器内核的体系结构(工作状态,工作模式,寄存器组织,异常,数据类型与存储格式等)
(1)工作状态
一是ARM状态,二是Thumb指令状态及Thumb-2状态,三是调试状态。
ARM处理器复位后开始执行代码时总是只处于ARM状态,如果需要,可通过下面的
方法切换到Thumb状态或Thumb-2状态
ARM状态切换到Thumb指令状态:通过BX指令,将操作数寄存器的最低位设置为1
即可。如果R0[0]=1,则执行BX R0指令将进入Thumb状态
状Thumb态切换到ARM状态:通过BX指令,将操作数寄存器的最低位设置为0即
可。如果R0[0]=0,则执行BX R0指令将进入ARM状态。 (2)工作模式(7种) 工作模式 功能说明 可访问的寄存器 PC,R14-R0,CPSR PC,R14_fiq-R8_fiq, R7-R0,CPSR,SPSR_fiq PC,R14_irq-R13_irq, R12-R0,CPSR,SPSR_irq 操作系统的保护模式,处理软中断SWI 处理存储器故障,实现虚拟存储器和存储器保护 处理为定义的指令陷阱,用于支持硬件协处理器仿真 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 11111 11011 10111 10011 10010 CPSR[M4:M0] 10000 10001 用户模User 程序正常执行工作模式 快速中断模式FIQ 外部中断模式IRQ 管理模式 SVC 中止模式 ABT 未定义指令模式UND 处理高速中断,用于高速数据传输或通道处理 用于普通中断处理 系统模SYS 运行特权及的操作系统任务 (3)寄存器组织
ARM处理器共有37种寄存器,包括31个通用寄存器(含PC)和6个状态寄存器。
无论何种模式,R15均作为PC使用;CPSR为当前程序状态寄存器;R7-R0为公用的通用寄存器。所有通用寄存器均为32位结构。
6
R13:SP(stack point)堆栈指针;R14:LR(Link Register)程序链接寄存器 R15:PC(Program counter)程序计数器;SPSR:备份程序状态寄存器 CPSR程序状态寄存器的格式:
31 30 29 28 27 26??8 7 6 5 4 3 2 1 0 N Z C V Q 状态保留 I F T M4 M3 M2 M1 M0 条件码标志含义如下:
N为符号标志位,N=1为负数,N=0为正数。 Z为全0标志位,运算结果为0,则Z=1,否则Z=0; C为进借位标志,有进/借位时C=1,否则C=0. V为溢出标志,加减法运算结果溢出时V=1,否则V=0. Q为增强的DSP运算指令溢出标志,溢出时Q=1,否则Q=0. 控制位含义如下:
I为中断禁止控制位,I=1禁止IRQ中断,I=0,允许中断。 F为禁止快速中断FIQ的控制位,F=1禁止FIQ中断,F=0允许。
T为ARM和Thumb指令切换,T=1时执行Thumb指令,否则执行ARM指令。 M4-M0为模式选择位
(4)存储格式
大端模式:32位数据字的高字节存储在低地址,而数据字的低字节则存放在高地小端模式:32位数据字的高字节存储在高地址,而数据字的低字节则存放在低地例如:一个32位数据字0x12345678,存放在起始地址为0x30001000,则大端模式
7
址中。
址中。系统复位时,自动默认为小端模式。
下0x30001000单元存放0x12,0x30001001单元存放0x34,0x30001002单元存放0x56,0x30001003单元存放0x78;而小端模式下0x30001000单元存放0x78,0x30001001单元存放0x56,0x30001002单元存放0x34,0x30001003单元存放0x12。 (5)数据类型
8位、16位、32位三种数据类型
MMU存储器管理单元(memory management unit)功能: 1)虚拟地址到物理地址映射 2)存储器访问权限受限 3)虚拟存储空间的缓冲特性设置
MPU存储器保护单元(memory protect unit)
(6)ARM处理器中MMU和MPU
(7)异常(7种)
异常类型 复位RESET 未定义的指令UND 软件中断SWI 指令预取中止PABT 数据访问中止DABT 外部中断请求IRQ 快速中断请求FIQ 优先级 1 6 6 5 2 4 3 工作模式 管理模式 未定义指令中止模式 管理模式 中止模式 中止模式 外部中断模式 快速中断模式 异常向量地址 0x00000000 0x00000004 0x00000008 0x0000000C 0x00000008 0x00000010 0x0000001C 3.典型ARM处理器内核(ARM9,Cortex-A,Cortex-M,Cortex-R等的技术特点与应用领域)
(1)Cortex-A系列是面向高端嵌入式应用的处理器核:具有MMU、Cache、最快频率、(2)Cortex-R系列是面向实时控制的处理器:具有MPU、Cache、实时响应、合理性能、较低功耗。
(3)Cortex-M系列是面向低端微控制器的处理器,没有MMU但有MPU,极高性价比、最低成本,极低功耗。
系列 ARM7 相应内核 主要性能特点 冯-诺依曼结构,3级流水线,无MMU 哈佛结构,5及流水线,单32位AMBA接口 哈佛结构,5及流水线,支持DSP指令,软核(soft IP) 哈佛结构,6及流水线,分支预测,支持DSP指令,高性能浮点操作,双64位总线接口,内部64位数据通路。 最高性能、合理功耗。
经典ARM9 ARM920T/ARM922T ARM9E ARM926EJ-S/ARM946E-S/ARM966E-S/ ARM968E-S/ARM996HS ARM10 ARM1020E/ARM1022E/ARM1026EJ-S 8
ARM11 ARM11MPCore/ARM1136J(F)-S 哈佛结构,8级流水线,分支预测和返回栈,支持DSP指令、SIMD/Thumb-2核心技术 ARM1156T2(F)-S/ARM1176JZ(F)-S 哈佛结构,9级流水线,分支预测和返回栈,支持DSP指令、SIMD/Thumb-2核心技术 嵌入 Cortex-M Cortex-M0, Cortex-M0+ 冯-诺依曼结构,3级流水线,支持Thumb指令集并包含Thumb-2、嵌套向量中断,M0+内部有MPU,而M0没有。 Cortex-M1 冯-诺依曼结构,3级流水线,支持FPGA设计,Thumb指令集并包含Thumb-2 Cortex-M3 哈佛结构, 3级流水线,Thumb-2、嵌套向量中断,分支指令预测,内置MPU Cortex-M4 哈佛结构, 3级流水线,Thumb-2、嵌套向量中断,分支指令预测,内置MPU,高效信号处理,SIMD指令,饱和运算,FPU Cortex-R Cortex-R4/R4F/ Cortex-R5/Cortex-R7 哈佛结构,8级流水线,实时应用,支持ARM、Thumb和Thumb-2指令集,F标示内置FPU,DSP扩展,分支预测,超标量执行,内置MPU 应用 Cortex-A Cortex-A5/ Cortex-A5MPcore Cortex-A7/ Cortex-A7MPcore Cortex-A8/ Cortex-A8MPcore Cortex-A9/ Cortex-A9MPcore 哈佛结构,MPcore为多核,超标量结构,13级流水线,动态分支指令预测,有分支目标缓冲器BTB、MMU、FPU、L1、L2,支持ARM、 Thumb和Thumb/EE指令集,SIMD/Jazelle RCT技术。 Cortex-A15/ Cortex-A15MPcore
哈佛结构,可乱序执行指令流水线 4.ARM处理器指令系统及汇编语言程序设计(指令格式,寻址方式,指令集,伪指令,语句格式与程序结构,ARM汇编语言与C的混合编程等)
(1)指令格式
指令一般格式
项目
Rd Rn Op2 目的寄存器 第一个源操作数 第二个源操作数 Rd可为任意通用寄存器 Rd可为任意通用寄存器,可以与Rd相同 可为#imm8m、寄存器Rm及任意移位寄存器 关于#imm8m的说明:#表示立即数,其后可以是十进制或十六进制数
对于ARM指令集,#imm8m表示一个由8位立即数经循环右移任意偶数位次形成的32位操作数。
对于Thumb指令集,#imm8m表示一个由8位立即数经左移任意位次形成的32
位操作数。 指令的条件码
条件码 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 助记符 EQ NE CS CC MI PL VS VC HI LS GE LT GT LE AL 标 志 Z置位 Z清零 C置位 C清零 N置位 N清零 V置位 V清零 C置位Z清零 C清零Z置位 N等于V N不等于V Z清零且N等于V Z置位或N不等于V 忽略 含 义 相等 不相等 无符号数大于或等于 无符号数小于 负数 正数或零 溢出 未溢出 无符号数大于 带符号数小于或等于 带符号数大于或等于 带符号数小于 带符号数大于 带符号数小于或等于 无条件执行 (2)寻址方式
1)立即寻址(立即数寻址) 例如:MOV R0,#0x1212121212
ADC R0,R0,#100
;R0 R0+100+C 2)寄存器寻址(执行效率较高)
例如:ADD R0,R1,R2 ;R0 3)寄存器间接寻址
寄存器间接转址就是以寄存器中的值作为操作数地址,而操作数本身存放在存储器中。用间接寻址的寄存器必须用[ ]括起来。
例如:LDR R5,[R4] ;R5
[R4],间接寻址的寄存器是R4
R1+R2
10
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库计算机三级嵌入式知识点(2)在线全文阅读。
相关推荐: