ARM处理器工作模式及寄存器结构

一、ARM七种处理器工作模式:

用户模式 usr:正常程序执行模式

快速中断模式FIQ:用于高速数据传输和通道处理

外部中断模式IRQ:用于通常的中断处理

管理模式svc:供操作系统使用的一种保护模式(SWI)

数据中止中断模式abt:用于虚拟存储及储存保护

未定义指令中止模式und:用于支持通过软件方针硬件的协处理器

系统模式sys:用于运行特级的操作系统任务

除了用户模式,其他六种为特权模式,而六种特权模式除了系统模式之外的都是异常模式。

二、寄存器

ARM结构具有31个通用寄存器和6个状态寄存器,都是32位的寄存器;

通用寄存器分为:备份寄存器、未备份寄存器和程序计数器PC

1、未备份寄存器:R0-R7

2、备份寄存器:

R8-R12在快速中断FIQ情况下会有备份,R13、R14通常作为栈基址指针SP和链接寄存器LR,在异常模式下都会有备份。

3、程序计数器:R15 PC指针

使用PC指针注意存在读写不对称的问题,由于AR流水作业,PC指针会指向当前执行指令后两个指针。如果是ARM指令PC指针是当前执行指令地址加两个字,Thumb指令为半字。

4、状态寄存器:

CPSR、SPSR在5种异常模式下各自有各自备份寄存器;状态寄存器包含处理器运行模式设置M0-M4,T指示指令模式Thumb或ARM程序;F/I可以选择是否屏蔽FIQ、IRQ中断;N负数、Z零、V符号位溢出、C运算进位及Q增强DSP指令溢出指示。

三、关于大小端的区别:

大端-高字节在小地址端;小端-高字节在大地址端。

四、异常中断及对应的处理器模式

1、复位reset/软复位 => svc模式 优先级1(越大越低)

2、未定义指令中止 => undef模式 6

3、软件中断SWI断点 => svc模式 6

4、指令预取中止5、数据访问中止2 => abt模式(BKPT)

5、外部中断 => IRQ 4

6、快速中断 => FIQ 3

小贴士:

正常程序运行在用户模式,系统内核使用到系统模式?

哪些资源可以设置不同模式下的权限?如内存读写访问的设置权限;

跳转及变量的定义都会影响效率:跳转会清除指令流水;变量定义小于寄存器长度时需要额外的处理?

你可能感兴趣的:(嵌入式系统)