ARM学习笔记(二)






嵌入式处理器分类

目前的嵌入嵌入式处理器按其体系结构不同可分为五大类:
  ARM(Advance RISC Machine)
  MIPS
  POWER PC
  X86
  SH系列

ARM体系结构的版本(V1-V6)

每一个ARM处理器都有一个特定的指令集架构ISA(Instruction Set Architecture),每一个ISA版本可以有多种   不同的处理器实现。
  ARM ISA至今已有六种不同版本V1-V6:
  
        V1-V2寻址空间都为64M;
  V3寻址空间扩充到32位(4G),增加了当前程序状态寄存器CPSR(Current Program Status Register)和程序    状态保存(备份)寄存器SPSR(Saved Program Status Register)以便处理异常;
  V4为目前应用最广的体系结构,在V3的基础上增加了16位的Thumb指令集;
  V5-V6。

ARM处理器的数据类型

字(Word):ARM体系结构中字长为32位,其它8/16位处理器结构中字长一般为16位;
  半字(Half-Word):16位;
  字节(Byte):8位。

ARM微处理器的工作状态

ARM微处理器一般有两种工作状态,并可能两种状态之间切换。
  1ARM状态:此时处理器执行32位的字对齐的ARM指令;
  2Thumb状态:此时处理器执行16位的半字对齐的Thumb指令。

ARM处理器的工作模式

        1User:非特权模式,也是正常程序执行的模式,大部分任务在这种模式下执行;
  2FIQ:当一个高优先级的中断(fast)产生时会进入这种模式,用于高速数据传输和通道处理;
  3IRQ:当一个低优先级的中断(normal)产生时会进入这种模式,用于通常的中断处理;
  4Supervisor:当复位或软中断指令执行时会进入这种模式,是供操作系统使用的一种保护模式;
  5Abort:当存取产生异常时进入这种模式,用于虚拟存储及存储保护;
  6Undef:当执行未定义指令时会进入这种模式,用于软件仿真硬件的协处理器;
  7System:使用和User模式相同寄存器组的特权模式,用于完成特权级的操作系统任务。
  
  其中2-6为异常模式(Exception Mode),2-7为特权(Privileged Mode)模式。
  
  模式的改变方法有:软件控制(通过软件改变CPSR的模式位,外部中断,异常处理。通常在User模式下不        能访问受保护的系统资源,一般不能改变模式,异常发生时可能导致模式改变。

ARM寄存器描述

ARM有37个32位长的寄存器,其中:
    1个用作PC(Program Counter);
    1个用作CPSR(Current Program Status Register);
    5个用作SPSR(Saved Program Status Register);
    30个通用寄存器(General-purpose registers includes program counter)。
  当前的处理器工作模式决定那些寄存器可以操作,任何模式都可以存取:
    相应的R0-R12的子集;
    相应的R13(The Stack Pointer,堆栈指针寄存器)SP;
    相应的R14(The Subroutine Link Register,子程序连接寄存器)LR;
    相应的R15(The Program Counter);
    相应的CPSR(Current Program Status Register)。
  特权模式(除System外)还可以存取SPSR(Saved Program Status Register)。

  通用寄存器包括R0-R15,可分为三类:
    未分组寄存器(R0-R7);
    分组寄存器(R8-R14);
    程序计数器PC(R15)。
  
   寄存器R15用作PC,由于ARM体系结构采用了多级流水线技术,对于ARM指令集而言,R15-程序计数器总   是指向当前指令的下两条指令的地址,即PC的值为当前指令的地址加上8个字节。
   寄存器R16用作CPSR,可在任何CPU工作模式下被访问,它包括条件标志位,中断禁止位,当前处理器模  式标志位以及其它一些控件和状态位。
    每一种CPU工作模式下都有一个专用的物理状态寄存器SPRS(备份程序状态寄存器),当异常发        生时SPRS用于保存当前CPRS的值,当从异常中退出时可由SPSR恢复CPSR。
       
        程序状态寄存器
       
3130292827 26位到第8位76543210
NZCVQreserved for future expansionIFTMMMMM


        其中各位的具体含义如下:
         条件码标志的具体含义
                 N(negative):当用两个用补码表示的带符号数进行运算时,N=1表示运算结果为负,N=0表示结果为                                         正或0;
                 Z(Zero):Z=1表示运算结果为0,Z=1表示运算结果为非零;
                 C(Carry:进位/借位):有4种方法设置C值
                        加法运算(包括比较指令CMN),当运算结果产生进位时C=1,否则C=0;
                        减法运算(包括比较指令CMP),当运算结果产生了借位(无符号溢出)时C=0,否则C=1;
                        对移位操作,C值为移位结果的最后一位;
                        对于其它非加减法指令,C值通常不变。
                 V(Overflow):有两种方法设置V值
                        对于加减法运算,当操作数和运算结果为二进制的补码形式表示的带符号数时,V=1表示符号位溢                        出;对于其它非加减法运算指令,C值通常不变。
                Q:有ARM V5及以上版本E系列处理器中,用Q位表示增强的DSP运算指令是否发生了溢出,在其它版                       本的处理器中,Q标志位无效。
          中断禁止位I,F:
                I=1,禁止IRQ中断;
                F=1,禁止FRQ中断。
          T标志位反映处理器的运行状态
               对ARM体系结构V5及以上的版本的T系列处理器,T=1表示运行于Thumb状态,T=0表示运行于                 ARM状态。
          模式位M[4:0]的值,处理器模式,可访问的寄存器
           M[4:0]=0b10000,用户模式(User),R0-R14、PC、CPSR;
           M[4:0]=0b10001,FIQ模式,R0-R7、R8_fiq-R14_fiq、PC、CPSR、SPSR_fiq;
           M[4:0]=0b10010,IRQ模式,R0-R12、R13_irq、R14_irq、PC、CPSR、SPSR_irq;
           M[4:0]=0b10011,Supervisor模式,R0-R12、R13_svc、R14_svc、PC、CPSR、SPSR_svc;
           M[4:0]=0b10111,Abort中止模式,R0-R12、R13_abt、R14_abt、PC、CPSR、SPSR_abt;
           M[4:0]=0b11011,Undel未定义模式,R0-R12、R13_und、R14_und、PC、CPSR、SPSR_und。


ARM  Register  organization


 
Privileged modes
  
Exception modes
UserSystemSuperVisorAbortUndefinedInterruptFast Interrupt
R0R0R0R0R0R0R0
R1R1R1R1R1R1R1
R2R2R2R2R2R2R2
R3R3R3R3R3R3R3
R4R4R4R4R4R4R4
R5R5R5R5R5R5R5
R6R6R6R6R6R6R6
R7R7R7R7R7R7R7
R8R8R8R8R8R8R8_fiq
R9R9R9R9R9R9R9_fiq
R10R10R10R10R10R10R10_fiq
R11R11R11R11R11R11R11_fiq
R12R12R12R12R12R12R12_fiq
R13R13R13_svcR13_abtR13_undR13_irqR13_fiq
R14R14R14_svcR14_abtR14_undR14_irqR14_fiq
PCPCPCPCPCPCPC
 
CPSRCPSRCPSRCPSRCPSRCPSRCPSR
  SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq
图中阴影部分表示分组寄存器
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值