文档视界 最新最全的文档下载
当前位置:文档视界 › ARM处理器模式和寄存器介绍

ARM处理器模式和寄存器介绍

ARM处理器模式和寄存器介绍
ARM处理器模式和寄存器介绍

ARM处理器共有7种运行模式:

用户模式(user,use)正常程序执行模式

快速中断模式(fiq)用于高速数据传输和通道处理

外部中断模式(irq)用于通常的中断处理

管理模式(sve)操作系统使用的一种保护模式

数据访问终止模式(abt)用于虚拟存储及存储保护

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

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

除了用户模式之外的6种处理器模式称为特权模式(privileged modes)。在这些模式下,程序可以访问所有的系统资源,也可以任意第进行处理器模式切换。其中,除系统模式外,其他5种特权模式又称为异常模式。

处理器模式可以通过软件控制进行切换,也可以通过外部中断或异常处理过程进行切换。大多数的用户程序运行在用户模式下。这时,应用程序不能够访问一些受操作系统保护的系统资源。应用程序也不能直接进行处理器模式的切换。当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理过程中进行处理器处理器模式的切换。这种体系结构可以使系统控制整个系统的资源。

当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式中都有一组寄存器,供相应的异常处理程序使用,这样就可以保证在进入异常模式时,拥护模式下的寄存器(保存了程序运行状态)不被破坏。

系统模式并不是通过异常过程进入的,它和用户模式具有完全一样的寄存器。但是系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行处理器模式切换。它主要供操作系统任务使用。通常操作系统的任务需要访问所有的系统资源,同时该任务仍然使用拥护模式的寄存组,而不是使用异常模式下相应的寄存器组,这样可以保证当异常中断发生时任务状态不被破坏。

ARM处理器含有37个寄存器,这些寄存器包括以下两类寄存器。

(1)31个通用寄存器:包括程序计数器PC等,这些寄存器都是32位寄存器。

(2)6个状态寄存器:状态寄存器也是32位的寄存器,但是只使用了其中的12位。

在ARM处理器的7种模式下都有一组对应的寄存器组。在任意时刻,可见的寄存器组包括15个通用寄存器R0~R14、一个或两个状态寄存器和PC。在所有的寄存器中,有些是各种模式下共用的同一个物理寄存器,有些是各种模式自己独立拥有的物理寄存器。

用户模式系统

模式

特权

模式

中止

模式

未定义指令

模式

外部中断

模式

快速中断

模式

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

1.通用寄存器

通常又可以分为下面3类。

n 未备份寄存器:包括R0~R7。

n 备份寄存器:包括R8~R14。

n 程序计数器PC:即R15。

1)未备份寄存器R0~R7

对于每个未备份寄存器来说,在所有的处理器模式下指的都是同一个物理寄存器,在异常中断造成处理器模式切换时,由于不同的处理器模式使用相同的物理寄存器,可能造成寄存器中数据被破坏。未备份寄存器没有被系统用于特别的用途,任何可采用通用寄存器的应用场合都可以使用未备份寄存器。

2)备份寄存器R8~R14

备份寄存器R8~R12中的每个寄存器对应于两个不同的物理寄存器。例如,当使用快速中断模式下的寄存器时,寄存器R8和寄存器R9分别记做R8_fiq和 R9_fiq,当使用用户模式下的寄存器时,寄存器R8和寄存器R9分别记做R8_usr和R9_usr等。在这两种情况下使用的是不同的物理寄存器,系统没有将这几个寄存器用于任何的特殊用途。中断处理非常简单,仅仅使用R8~R14寄存器时,FIQ处理程序可以不必执行保存和恢复中断现场的指令,从而可以使中断处理过程很迅速。

对于备份寄存器R13、R14来说,每个寄存器对应于6个不同的物理寄存器,其中的一个是用户模式和系统模式共用的,另外的5个则对应于其他5种处理器模式,采用下面的方法来标识。

R13_

其中是usr、svc、abt、und、irq和fiq的一种。

R13通常用做堆栈指针。每一种模式都拥有自己的物理R13。程序初始化R13,使其指向该模式专用的栈地址。当进入该模式时,可以将需要使用的寄存器保存在R13所指的栈中,当退出该模式时,将保存在R13所指的栈中的寄存器值弹出。这样就实现了程序的现场保护。

寄存器R14又被称为连接寄存器(LR),在ARM中有下面两种特殊用途。

① 每一种处理器模式在自己的物理R14中存放当前子程序的返回地址。当通过BL或者BLX指令调用子程序时,R14被设置成该子程序的返回地址。在子程序中,当把R14的值复制到程序计数器PC中时,就实现了子程序返回。

可以通过下面两种方式实现这种子程序的返回操作。

◆执行下面任何一条指令

MOV pc, LR

BX LR

◆在子程序入口使用下面指令将PC保存到栈中:

STMFD SP!, {registers}, LR}

相应地,下面的指令可以实现子程序的返回:

LDMFD SP!, { registers}, LR }

② 当发生异常中断的时候,该模式下的特定物理R14被设置成该异常模式将要返回的地址。对于某些异常,R14的值可能与将返回的地址有一个常数的偏移量。具体的返回方式与上面的子程序返回方式基本相同。

3)程序计数器PC→R15

程序计数器R15又被记作PC。它虽然可以作为一般的通用寄存器使用,但是有一些指令在使用R15时有一些特殊限制。当违反了这些限制时,该指令执行的结果将是不可预料的。

由于ARM采用了流水线机制,当正确读取了PC的值时,该值为当前指令地址值加8个字节。也就是说,对于ARM指令集来说,PC指向当前指令的下两条指令的地址。由于ARM指令是字对齐的(字对齐意思就是地址只能是4的倍数),PC值的第0位和第1位总为0。

需要注意的是,当使用指令STR/STM保存R15时,保存的可能是当前指令地址值加8字节,也可能保存的是当前指令地址加12字节。到底是哪种方式,取决于芯片具体设计方式。无论如何,在同一芯片中,要么采用当前指令地址加8,要么采用当前指令地址加12,不能有些指令采用当前指令地址加8,另一些指令采用当前指令地址加12。因此对于用户来说,尽量避免使用STR/STM指令来保存R15的值。当不可避免这种使用方式时,可以先通过一些代码来确定所用的芯片使用的是哪种实现方式。

假设R0指向可用的一个内存字,下面代码可以在R0指向的内存字中返回该芯片所采用的地址偏移量。

SUB R1, PC, #4 ;R1中存放下面STR指令的地址

STR PC, [R0] ;将PC=STR地址+offset保存到R0中

LDR R0, [R0] ;

SUB R0, R0, R1 ;offset=PC-STR地址

在上面的讨论中,都是针对地址返回的值。该值并非在指令读取其间出现在数据总线上的值,在指令读取其间出现在数据总线上的值取决于芯片的具体实现方式。

2.程序状态寄存器

CPSR(当前程序状态寄存器)可以在任何处理器模式下被访问。每一种模式下(除了用户模式和系统模式)都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄存器)。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常退出时,可以用 SPSR中保存的值来恢复CPSR。由于用户模式和系统模式不是异常中断模式,所以他们没有SPSR,在这两种模式下访问SPSR结果不可预知。

CPSR的具体格式如下。

31 30 29 28 27 26 7 6 5 4 3 21 0

N Z C V Q DNM(RAZ) I F T M4 M3 M M0

1)条件标志位

N(Negative)、Z(Zero)、C(Carry)及V(oVerflow)统称为条件标志位。大部分的ARM指令可以依据CPSR中的这些标志位来选择性地执行。各条件标志位的具体含义,如表所示。

表 CPSR标志位含义

标志位含义

N 本位设置成当前指令运算结果的bit[31]的值

当两个补码表示的有符号整数运算时,N=1表示运算的结果为负数,N=0 表示结果

为正数或零

Z Z=1表示运算结果是0,Z=0表示运算结果不是零

对于CMP指令,Z=1表示进行比较的两个数大小相等

C 在加法指令中(包括比较指令CMN),结果产生进位了,则C=1,表示无符号数运算

发生上溢出,其他情况下C=0

在减法指令中(包括比较指令CMP),结果产生借位了,则C=0,表示无符号数运算

发生下溢出,其他情况下C=1

对于包含移位操作的非加/减法运算指令,C中包含最后一次被溢出的位的数值,对于

其他非加/减法运算指令,C位的值通常不受影响

V 对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出

其他的指令通常不影响V位

2)Q标志位

在ARM v5的E系列处理器中,CPSR的bit[27]称为Q标志位,主要用于指示增强的DSP指令是否发生了溢出,同样的,SPSR的bit[27]也称为Q标志位,用于在异常中断发生时保存和恢复CPSR中的Q标志位。

3)CPSR中的控制位

CPSR的低8位I、F、T及M[4:0]统称为控制位,当异常中断发生时这些位发生变化。在特权级的处理器模式下,软件可以修改这些控制位。

① 中断禁止位

当I=1时禁止IRQ中断。

当F=1时禁止FIQ中断。

通常一旦进入中断服务程序可以通过置位I和F来禁止中断,但是在本中断服务程序退出前必须恢复原来I、F位的值。

② T控制位,用来控制指令执行的状态,即说明本指令是ARM指令还是Thumb指令。对于不同版本的ARM 处理器,T控制位的含义是有些不同的。

对于ARM v3及更低的版本和ARM v4的非T系列版本的处理器,没有ARM和Thumb指令的切换,所以T始终为0。

对于ARM v4及更高版本的T系列处理器,T控制位含义如下。

当T=0,表示执行ARM指令。

当T=1,表示执行Thumb指令。

对于ARM v5及更高的版本的非T系列处理器,T控制位的含义如下。

当T=0表示执行ARM指令。

当T=1表示强制下一条执行的指令产生为定义指令中断。

③ M 控制位

控制位M[4:0]称为处理器模式标识位,具体说明如表所示。

M[4:0] 处理器模式可访问的寄存器

0b10000 User PC,R14~R0,CPSR

0b10001 FIQ PC,R14_fiq~R8_fiq,R7~R0,CPSR,SPSR_fiq

0b10010 IRQ PC,R14_irq~R13_irq,R12~R0,CPSR,SPSR_irq 0b10011 Supervisor PC,R14_svc~R13_svc,R12~R0,CPSR,SPSR_svc 0b10111 Abort PC,R14_abt~R13_abt,R12~R0,CPSR,SPSR_abt 0b11011 Undefined PC,R14_und~R13_und,R12~R0,CPSR,SPSR_und 0b11111 System PC,R14~R0,CPSR(ARM v4及更高版本)

4)CPSR的其他位用于将来ARM版本的扩展,程序可以先不操作这些位。

嵌入式-ARM寄存器基本概念.

嵌入式-ARM寄存器基本概念 嵌入式-ARM寄存器基本概念 类别:嵌入式系统 无论是学习哪一种处理器,首先需要明确的就是这种处理器的寄 存器以及工作模式。ARM有37个寄存器,其中31个通用寄存器,6个状 态寄存器。这里尤其要注意区别的是ARM自身寄存器和它的一些外设的寄存器的区别。ARM自身是统一架构的,也就意味着37个寄存器无论在哪 个公司的芯片里面都会出现。但是各家公司会对ARM进行外设的扩展,所以就 出现了好多外设寄存器,一定要与这37个寄存器区别开来!!!1、备份寄存器(R8-R14)对于R8-R12来说,除在快速中断模式下,每个模式对 应相同物理寄存器,所以在FIQ模式下可不必保护和恢复中断现场。对于R13-R14来说,每个寄存器对应6个不同的物理寄存器,其中一个是用户模式 和系统模式共用的。寄存器R13常用做栈指针SP,除用户和系统模式 外,其他模式在使用时的名字构成为R13_。寄存器R14又被称 2、不分组寄存器(R0-R7)不分组也就是说说,在所有的处理器模式下指的都时同一物理寄存器。在异常中断造成处理器模式切换时,由于不同的处理 器模式使用一个名字相同的物理寄存器,就是使用的同一个寄存器,这样可能 造成寄存器中数据被破坏,所以在进行模式切换时必须加以保护。为连接寄存器(LR),除用户和系统模式外,其他模式在使用时的名字构成为 R14_。有下面两种特殊用途:A、每个处理器模式自己的物理R14中存放在当前子程序的返回地址。当通过BL或BLX指令调用子程序时, R14被设置成该子程序的返回地址。B、当异常中断发生时,该异常模式 下的R14被设置成保存该模式基于PC的返回地址,对于有些异常模式,R14的值有可能与将返回的地址有个常数的偏移量,不同模式偏移量还有所不同(在ARM 的异常处理里有详细介绍)。3、程序计数器R15 对于用户来说,尽量避免使用STR/STM指令来保存R15的值。当成功向R15写入一个地址 数值时,程序将跳转到该地址执行。在ARM状态下指令总是字对齐的,所以PC的PC[1:0]位恒为零,在想PC写入地址时一定要注意将PC[1:0]设为零。ARM采用的是3级流水线结构,所以PC指向的是当前执行指令的下 两条指令,PC-8为当前指令地址。4、程序状态寄存器CPSR(当前程序状态寄存器)可以在任何处理器模式下被访问。同时除了用户和系统模式以外,每中处理器模式下都有一个专用的物理状态寄存器,称为 SPSR(备份程序状态寄存器)。当特定的异常中断发生时,这个寄存器用于存放当前程序状态 寄存器的内容。当在用户模式和系统模式中访问SPSR,将会产生不可预知的结果。CPSR和SPSR的格式相同,如下:0:M0 1:M1 2:M2 3:M3 4:M4 5:T(=1 Thumb执行) 6:F(=1是禁止) 7: I(=1是禁止) 注意:M0~M4并不是所有的组合都定义了有效的处理模式,如 果错误设置,将会引起无法预料的错误。27:Q 在ARM V5的E系列处理器中,CPSR的bit[27]称为q标识位,主要用于指示增强的dsp指令是否发生了

ARM体系的7种工作模式

ARM体系的7种工作模式 一、ARM体系的CPU有以下7种工作模式: 1、用户模式(usr):正常的程序执行状态 2、快速中断模式(fiq): 3、中断模式(irq): 4、管理模式(svc):操作系统使用的保护模式 5、系统模式(sys):运行具有特权的操作系统任务 6、数据访问终止模式(abt):数据或指令预取终止时进入该模式 7、未定义指令终止模式(und):未定义的指令执行时进入该模式 注解: 可以通过软件来进行模式切换,或者发生各类中断、异常时CPU自动进入相应的模式;除用户模式外,其余6种工作模式都属于特权模式; 特权模式中除了系统模式以外的其余5种模式称为异常模式; 大多数程序运行于用户模式; 进入特权模式是为了处理中断、异常、或者访问被保护的系统资源; 二、ARM体系的CPU有两种工作状态 1、ARM 2、THumb CPU上电处于ARM状态 三、寄存器 ARM有31个通用的32位寄存器,6个程序状态寄存器,共分为7组,有些寄存器是所有工作模式共用的,还有一些寄存器专属于每一种工作模式; R13——栈指针寄存器,用于保存堆栈指针; R14——程序连接寄存器,当执行BL子程序调用指令时,R14中得到R15的备份,而当发生中断或异常时,R14保存R15的返回值;

R15——程序计数器; 快速中断模式有7个备份寄存器R8—R14,这使得进入快速中断模式执行很大部分程序时,甚至不需要保存任何寄存器; 其它特权模式都含有两个独立的寄存器副本R13、R14,这样可以令每个模式都拥有自己的堆栈指针和连接寄存器; 四、当前程序状态寄存器(CPSR) CPSR中各位意义如下: T位:1——CPU处于Thumb状态,0——CPU处于ARM状态; I、F(中断禁止位):1——禁止中断,0——中断使能; 工作模式位:可以改变这些位,进行模式切换; 五、程序状态保存寄存器(SPSR) 当切换进入某一个特权模式时,SPSR保存前一个工作模式的CPSR值,这样,当返回前一个工作模式时,可以将SPSR的值恢复到CPSR中; 六、模式切换

《ARM嵌入式系统结构与编程》习题答案

1章绪论 1.国内嵌入式系统行业对“嵌入式系统”的定义是什么?如何理解?答:见教材1.1节。 2.嵌入式系统是从何时产生的,简述其发展历程。答:见教材1.1节。 3.当前最常见的源码开放的嵌入式操作系统有哪些,请举出两例,并分析其特点。 答:见教材1.2.1节的嵌入式Linux和嵌入式实时操作内核UC /OS-I 。 4.举例说明嵌入式设备在工控设备中的应用。答:见教材1.3节的“工业控制领域”。 5.未来嵌入式技术的发展趋势有哪些?答:见教材1.4节的嵌入式技术的发展趋势。 2章ARM技术与ARM体系结构 1.简述ARM处理器内核调试结构原理。答:对教材1.2节的图2-1进行描述。 2.分析ARM7TDMI-S各字母所代表的含义。答:参考教材 2.1.2 ARM核版本命名规则说明。3.ARM处理器的工作模式有哪几种,其中哪些为特权模式,哪些为异常模式,并指出处理器在什么情况下进入相应的模式。 ARM处理器共有7种工作模式: 用户模式:非特权模式,也就是正常程序执行的模式,大部分任务在这种模式下执行。在用户模式下,如果没异常发生,不允许应用程序自行改变处理器的工作模式,如果有异常发生,处理器会自动切换工作模式FIQ模式:也称为快速中断模式,支持高速数据传输和通道处理,当一个高优(fast)中断产生时将会进入这种模式。 IRQ模式:也称为普通中断模式,:当一个低优先级中断产生时将会进入这种模式。在这模式下按中断的处理器方式又分为向量中断和非向量中断两种。通常的中断处理都在IRQ 模式下进行。 SVC模式:称之为管理模式,它是一种操作系统保护模式。当复位或软中断指令执行时处理器将进入这种模式。 中止模式:当存取异常时将会进入这种模式,用来处理存储器故障、实现虚拟存储或存储保护。 未定义指令异常模式:当执行未定义指令时会进入这种模式,主要是用来处理未定义的指令陷阱,支持硬件协处理器的软件仿真,因为未定义指令多发生在对协处理器的操作上。 系统模式:使用和User模式相同寄存器组的特权模式,用来运行特权级的操作系统任务。 在这7种工作模式中,除了用户模式以外,其他6种处理器模式可以称为特权模式,在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。在这6种特权模式中,除了系统模式外的其他5种特权模式又称为异常模式 4.分析程序状态寄存器(PSR)各位的功能描述,并说明C、Z、N、V在什么情况下进行置位和清零。PSR的具体格式为 V—溢出标志位 对于加/减法运算指令,当操作数和运算结果为二进制补码表示的带符号数时,V=1表示符号位溢出,其他的指令通常不影响V位。 例如:两个正数(最高位为0)相加,运算结果为一个负数(最高位为1),则符号位溢出,相应V=1。

关于ARM中的名词常用解释

关于ARM中的名词常用解释 1.ARM中一些常见英文缩写解释 MSB:最高有效位; LSB:最低有效位; AHB:先进的高性能总线; VPB:连接片内外设功能的VLSI外设总线; EMC:外部存储器控制器; MAM:存储器加速模块; VIC:向量中断控制器; SPI:全双工串行接口; CAN:控制器局域网,一种串行通讯协议; PWM:脉宽调制器; ETM:嵌入式跟踪宏; CPSR:当前程序状态寄存器; SPSR:程序保护状态寄存器; 2.MAM 使用注意事项: 当改变MAM 定时值时,必须先通过向MAMCR 写入0 来关闭MAM,然后将新值写入MAM ti M。最后,将需要的操作模式的对应值写入MAMCR,再次打开MAM。 对于低于20MHz 的系统时钟,MAMTIM 设定为001。对于20MHz 到40MHz 之间的系统时钟,建议将Flash访问时间设定为2cclk,而在高于40MHz 的系统时钟下,建议使用3cclk。

3.VIC 使用注意事项 如果在片内RAM当中运行代码并且应用程序需要调用中断,那么必须将中断向量重新映射到Flash地址0x0。这样做是因为所有的异常向量都位于地址0x0及以上。通过将寄存器MEMMAP(位于系统控制模块当中)配置为用户RAM模式来实现这一点。用户代码被连接以便使中断向量表装载到0x4000 0000。 4. ARM启动代码设计 ARM启动代码直接面对处理器内核和硬件控制器进行编程,一般使用汇编语言。启动代码一般包括: 中断向量表 初始化存储器系统 初始化堆栈初始化有特殊要求的端口、设备 初始化用户程序执行环境 改变处理器模式 呼叫主应用程序 5.IRQ 和FIQ 之间的区别 IRQ和FIQ是ARM处理器的两种编程模式。IRQ是指中断模式,FIR是指快速中断模式。对于FIQ 你必须尽快处理你的事情并离开这个模式。IRQ 可以被FIQ 所中断,但IRQ 不能中断FIQ。为了使FIQ 更快,所以这种模式有更多的影子寄存器。FIQ 不能调用SWI(软件中断)。FIQ 还必须禁用中断。如果一个FIQ 例程必须重新启用中断,则它太慢了,并应该是IRQ 而不是FIQ。

ARM技术中英文缩写解说

ARM技术中英文缩写解说 中一些常见英文缩写解释 MSB:最高有效位; LSB:最低有效位; AHB:先进的高性能总线; VPB:连接片内外设功能的VLSI外设总线; EMC:外部存储器控制器; MAM:存储器加速模块; VIC:向量中断控制器; SPI:全双工串行接口; CAN:控制器局域网,一种串行通讯协议; PWM:脉宽调制器; ETM:嵌入式跟踪宏; CPSR:当前程序状态寄存器; SPSR:程序保护状态寄存器; 使用注意事项: 答:当改变 MAM 定时值时,必须先通过向 MAMCR 写入 0 来关闭 MAM,然后将新值写入 MAMTIM。最后,将需要的操作模式的对应值写入MAMCR,再次打开MAM。 对于低于 20MHz 的系统时钟,MAMTIM 设定为 001。对于 20MHz 到 40MHz 之间的系统时钟,建议将Flash 访问时间设定为2cclk,而在高于40MHz的系统时钟下,建议使用3cclk。 使用注意事项 答:如果在片内RAM当中运行代码并且应用程序需要调用中断,那么必须将中断向量重新映射到Flash地址0x0。这样做是因为所有的异常向量都位于地址0x0及以上。通过将寄存器MEMMAP(位于系统控制模块当中)配置为用户RAM模式来实现这一点。用户代码被连接以便使中断向量表装载到0x4000 0000。 4. ARM启动代码设计 答:ARM启动代码直接面对处理器内核和硬件控制器进行编程,一般使用汇编语言。启动代码一般包括:中断向量表 初始化存储器系统 初始化堆栈初始化有特殊要求的端口、设备 初始化用户程序执行环境 改变处理器模式 呼叫主应用程序 和 FIQ 之间的区别 答:IRQ和FIQ是ARM处理器的两种编程模式。IRQ是指中断模式,FIR是指快速中断模式。对于 FIQ 你必须尽快处理你的事情并离开这个模式。IRQ 可以被 FIQ 所中断,但 IRQ 不能中断 FIQ。为了使 FIQ 更快,所以这种模式有更多的影子寄存器。FIQ 不能调用 SWI(软件中断)。FIQ 还必须禁用中断。如果一个 FIQ 例程必须重新启用中断,则它太慢了,并应该是 IRQ 而不是 FIQ。

《ARM嵌入式系统结构与编程》第二章课后答案

第2章ARM技术与ARM体系结构 1.简述ARM处理器内核调试结构原理 答:ARM处理器一般都带有嵌入式追踪宏单元ETM(Embedded Trace Macro),它是ARM 公司自己推出的调试工具。ARM处理器都支持基于JTAG(Joint Test Action Group 联合测试行动小组)的调试方法。它利用芯片内部的Embedded ICE来控制ARM内核操作,可完成单步调试和断点调试等操作。当CPU处理单步执行完毕或到达断点处时,就可以在宿主机端查看处理器现场数据,但是它不能在CPU运行过程中对实时数据进行仿真。 ETM解决了上述问题,能够在CPU运行过程中实时扫描处理器的现场信息,并数据送往TAP(Test Access Port)控制器。上图中分为三条扫描链(图中的粗实线),分别用来监视ARM核,ETM,嵌入式ICE的状态。 1.分析ARM7TDMI-S各字母所代表的含义。 答:ARM7 T D M I – S 中 ARM是Advanced RISC Machines的缩写 7是系列号; T:支持高密度16位的Thumb指令集; D:支持JTAG片上调试; M:支持用于长乘法操作(64位结果)ARM指令,包含快速乘法器;; I:带有嵌入式追踪宏单元ETM,用来设置断点和观察点的调试硬件; S:可综合版本,意味着处理器内核是以源代码形式提供的。这种源代码形式又可以编译成一种易于EDA工具使用的形式。 2.ARM处理器的工作模式有哪几种,其中哪些为特权模式,哪些为异常模式,并指出处 理器在什么情况下进入相应的模式。 答:ARM技术的设计者将ARM处理器在应用中可能产生的状态进行了分类,并针对同一类型的异常状态设定了一个固定的入口点,当异常产生时,程序会自动跳转到对应异常入口处进行异常服务。 ?1.用户模式:非特权模式,也就是正常程序执行的模式,大部分任务在这种模式下 执行。在用户模式下,如果没异常发生,不允许应用程序自行改变处理器的工作模式,如果有异常发生,处理器不会自动切换工作模式 ?2.FIQ模式:也称为快速中断模式,支持高速数据传输和通道处理,当一个高优先

ARM寄存器详解

ARM 处理器有二十七个寄存器,其中一些是在一定条件下使用的,所以一次只能使用十六 个。 R0~R7:是通用寄存器并可以用做任何目的。 R8~R12:是通用寄存器,但是在切换到FIQ模式的时候,使用它们的影子(shadow)寄存器。 R13:被称为栈指针寄存器,常用来保存栈指针。 R14:链接寄存器,常用来保存函数返回地址 R15:是程序指针PC CPSR:(Current Program Status Register)当前程序状态寄存器,CPSR 寄存期保存当前程序运行的状态。 0 0 0 0 0 User26 模式 0 0 0 0 1 FIQ26 模式 0 0 0 1 0 IRQ26 模式 0 0 0 1 1 SVC26 模式 1 0 0 0 0 User 模式 1 0 0 0 1 FIQ 模式 1 0 0 1 0 IRQ 模式 1 0 0 1 1 SVC 模式 1 0 1 1 1 ABT 模式 1 1 0 1 1 UND 模式

ARM寻址方式 1.立即数寻址 ARM 指令的立即数寻址是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数。ADD R0,R0,#1 ;R0←R0 + 1 ADD R0,R0,#0x3A ;R0←R0 + 0x3A 在以上 2 条指令中,第2个源操作数即为立即数,实际使用时以“#”符

号为前缀。 2.寄存器寻址 寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常采 用的一种方式,也是一种执行效率较高的寻址方式。如以下的指令。 ADD R0,R1,R2 ;R0←R1 + R2 该指令的执行效果是将寄存器R1和R2的内容相加,其结果存放在寄存器R0中。 3.寄存器间接寻址 寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器 中。例如以下指令。 ADD R0,R1,[R2] ;R0←R1 + [R2] LDR R0,[R1] ;R0←[R1] 在第1 条指令中,以寄存器R2 的内容作为操作数的地址,然后与R1相加,其结果存入 寄存器R0中。 第2条指令将以 R1 的值为地址的存储器中的内容送到寄存器R0中。 4.基址变址寻址 基址变址的寻址方式就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给 出的地址偏移量相加,从而得到一个操作数的有效地址。如下面的几条指令所示。 LDR R0,[R1,#0x0A] ;R0←[R1 + 0x0A] LDR R0,[R1,#0x0A]!;R0←[R1 + 0x0A]、R1←R1 + 0x0A 在第1条指令中,将寄存器R1 的内容加上0x3A 形成操作数的有效地址,将该地址处的 操作数送到寄存器R0中。 在第2条指令中,将寄存器R1的内容加上0x0A形成操作数的有效地址,从而取得操作数存入寄存器R0中,然后,R1的内容自增0x0A个字节。 5.多寄存器寻址 采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送。这种寻址方式可以用 一条指令完成传送最多 16 个通用寄存器的值。比如下面的指令。LDMIA R0,{R1,R2,R3,R4} ;R1←[R0] ;R2←[R0 + 4]

ARM七种运行模式

s3c2440中断体系结构: 如何用中断? 1.中断发生:保存别人的状态 如何中断可以事先设置,对程序初始化,使能中断。 中断发生后,进入中断模式 2.中断处理 分辨中断源 进行不同的处理 清理工作 3.恢复别人的状态 过程:外界信号上升沿、下降沿,高电平、低电平都可以设置成信号引脚设置,再进入状态寄存器。 状态寄存器连接屏蔽寄存器 进入第二个状态寄存器,储存各种中断,可以储存多个中断 进入优先级寄存器,判断中断运行顺序 再进入屏蔽使能寄存器和模式寄存器 进入优先级寄存器 进入cpu处理 cpu的处理:进入入口地址 b handleIRQ 计算返回地址,被中断处地址 保存现场,即各寄存器状态 调用处理函数 函数运行完后恢复现场 函数的处理:分辨终端 处理中断 清除数据,即清除中断 1.中断寄存器 arm的七种模式 https://www.docsj.com/doc/a35239718.html,r 用户模式r0-r15 2.fiq 快中断模式r0-r7 专用寄存器r8-r15, 3.svc 管理模式 专用寄存器r13-r14, 4.abt 数据访问终止模式 5.sys 系统模式 6.und 未定义指令终止模式 7.irq 中断模式 几种模式的区别:

嵌入式的中断: a.不同的寄存器 b.不同的权限 c.触发条件不一样 何时使用几种模式: usr 用户模式:arm处理器正常的程序执行状态 fiq 快中断模式:高速数据传输和通道处理 svc 管理模式:操作系统使用的保护模式 abt 数据访问终止模式:数据或者指令终止时进入,用于虚拟存储或者存储保护 sys 系统模式:运行具有特权的操作系统任务 und 未定义指令终止模式:未定义的指令执行时进入该模式,用于支持硬件处理器的软件仿真. irq 中断模式:用于通用的中断处理 后六种是特权模式,用于处理中断、异常和特殊权限处理 用户模式是最常见的模式 2.中断中的异常 中断是一种异常。 当发生中断时,cpu进入中断模式 cpu进入异常入口,异常入口是硬件规定的一个地址 运行模式 ARM920T 支持7 种运行模式: ●用户(usr)):正常ARM 程序执行状态 ●快中断(fiq)):为支持数据传输或通道处理设计 ●中断(irq)):用于一般用途的中断处理 ●管理(svc)):操作系统保护模式 ●中止(abt ): 数据或指令预取中止后进入 ●系统(sys)):操作系统的特权用户模式 ●未定义(und)):执行了一个未定义指令时进入 模式的改变可由软件控制,或者由外部中断或进入异常引起。大部分应用程序都将在用户模式执行。 被称为特权模式的非用户模式,都将进入到中断服务或异常中去,或者访问受保护的资源。内部寄存器 ARM920T 总共有37 个寄存器,其中31 通用32 位寄存器和6 个状态寄存器,但不能在同一时刻对所有的寄存器可见。处理器状态和运行模式决定了哪些寄存器对程序员可见。 ARM状态时内部寄存器集在ARM 状态,16 个通用寄存器和一个状态寄存器在任意时刻都可见。 在特权(非用户)模式下,将切换到指定模式的分组(banked)寄存器。图2-3 显示了哪些寄存器在各模式下是可见的:

ARM常用概念及基本功能使用说明

论坛推荐:新手必看,关于ARM的22个常用概念2014-04-22 电子发烧友网新手必看,关于ARM的22个常用概念! 1.ARM中一些常见英文缩写解释MSB:最高有效位;LSB:最低有效位;AHB:先进的高性能总线;VPB:连接片内外设功能的VLSI外设总线;EMC:外部存储器控制器;MAM:存储器加速模块;VIC:向量中断控制器;SPI:全双工串行接口;CAN:控制器局域网,一种串行通讯协议;PWM:脉宽调制器;ETM:嵌入式跟踪宏;CPSR:当前程序状态寄存器;SPSR:程序保护状态寄存器; 2.MAM 使用注意事项:答:当改变MAM 定时值时,必须先通过向MAMCR 写入0 来关闭MAM,然后将新值写入MAMTIM。最后,将需要的操作模式的对应值写入MAMCR,再次打开MAM。对于低于20MHz 的系统时钟,MAMTIM 设定为001。对于20MHz 到40MHz 之间的系统时钟,建议将Flash访问时间设定为2cclk,而在高于40MHz的系统时钟下,建议使用3cclk。 3.VIC 使用注意事项答:如果在片内RAM当中运行代码并且应用程序需要调用中断,那么必须将中断向量重新映射到Flash地址0x0。这样做是因为所有的异常向量都位于地址0x0及以上。通过将寄存器MEMMAP(位于系统控制模块当中)配置为用户RAM模式来实现这一点。用户代码被连接以便使中断向量表装载到0x4000 0000。 4.ARM启动代码设计答:ARM启动代码直接面对处理器内

核和硬件控制器进行编程,一般使用汇编语言。启动代码一般包括:中断向量表初始化存储器系统初始化堆栈初始化有特殊要求的端口、设备初始化用户程序执行环境改变处理器模式呼叫主应用程序 5.IRQ 和FIQ 之间的区别答:IRQ和FIQ是ARM处理器的两种编程模式。IRQ是指中断模式,FIR是指快速中断模式。对于FIQ 你必须尽快处理你的事情并离开这个模式。IRQ 可以被FIQ 所中断,但IRQ 不能中断FIQ。为了使FIQ 更快,所以这种模式有更多的影子寄存器。FIQ 不能调用SWI(软件中断)。FIQ 还必须禁用中断。如果一个FIQ 例程必须重新启用中断,则它太慢了,并应该是IRQ 而不是FIQ。 6.ARM处理器对异常中断的响应过程答:ARM处理器对异常中断的响应过程如下所述:保存处理器当前状态、中断屏蔽位以及各条件标志位;设置当前程序状态寄存器CPSR中的相应位;将寄存器lr_mode设置成返回地址;将程序计数器值PC,设置成该异常中断的中断向量地址,跳转到相应异常中断处执行。 7.ARM指令与Thumb指令的区别答:在ARM体系结构中,ARM指令集中的指令是32位的指令,其执行效率很高。对于存储系统数据总线为16位的应用系统,ARM体系提供了Thumb指令集。Thumb指令集是对ARM指令集的一个子集重新编码得到的,指令长度为16位。通常在处理器执行ARM程序时,称处理器处于ARM

ARM处理器共有37个寄存器其中包括.

ARM处理器共有37个寄存器。其中包括: **31个通用寄存器,包括程序计数器(PC)在内。这些寄存器都是32位寄存器。 **6个状态寄存器。这些寄存器都是32位寄存器。 ARM处理器共有7种不同的处理器模式,每一种模式中都有一组相应的寄存器组。在任何时刻,可见的寄存器包括15个通用寄存器(R0-R14),一个或两个状态寄存器及程序计数器(PC)。在所有的寄存器中,有些是各模式公用一个物理寄存器,有一些寄存器各模式拥有自己独立的物理寄存器。 **************************************************** 通用寄存器 ***************************************************8 通用寄存器分为以下三类:备份寄存器、未备份寄存器、程序计数器PC 未备份寄存器 未备份寄存器包括R0-R7。对于每一个未备份寄存器来说,所有处理器模式下都是使用同一个物理寄存器。未备份寄存器没有被系统用于特别的用途,任何可采用通用寄存器的场合都可以使用未备份寄存器。 备份寄存器 对于R8-R12备份寄存器来说,每个寄存器对应两个不同的物理寄存器。系统为将备份寄存器用于任何的特殊用途,但是当中断处理非常简单,仅仅使用R8-R14寄存器时,FIQ处理程序可以不必执行保存和恢复中断现场的指令,从而可以使中断处理非常迅速。 对于R13,R14备份寄存器来说,每个寄存器对应六个不同的物理寄存器,其中的一个是系统模式和用户模式共用的;另外的五个对应于其他的五种处理器模式。采用下面的记号来区分各个物理寄存器: R13_ 其中MODE可以是下面几种模式之一:usr,svc,abt,und,irq,fiq 程序计数器PC 可以作为一般的通用寄存器使用,但有一些指令在使用R15时有一些限制。由于ARM采用了流水线处理器机制,当正确读取了PC的值时,该值为当前指令地址值加上8个字节。也就是说,对于ARM指令集来说,PC指向当前指令的下两条指令的地址。由于ARM指令是字对齐的,PC值的第0位和第一位总为0。

ARM基础知识详解

复习问题提纲 第一讲基础知识 1.什么是嵌入式系统(IEEE定义和国内普遍认同的定义分别是什么)? IEEE(国际电气和电子工程师协会)对嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置” 国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。 更简单的讲:就是嵌入到对象体中的专用计算机系统。 三要素:嵌入、专用、计算机 嵌入性:嵌入到对象体系中,有对象环境要求 专用性:软、硬件按对象要求裁减 计算机:实现对象的智能化功能 2.嵌入式系统的特点? 1、专用软、硬件可剪裁可配置; 2、低功耗、高可靠性、高稳定性; 3、软件代码短小精悍; 4、代码可固化; 5、实时性; 6、弱交互性 7、嵌入式系统软件开发通常需要专门的开发工具和开发环境; 8、要求开发、设计人员有较高的技能。 3.嵌入式系统的组成? 嵌入式系统总体上是由硬件和软件组成的,硬件是其基础,软件是其核心和灵魂。 第二讲ARM技术概述(以下指的arm处理器都是指ARM920T) 1.arm处理器是32位架构,它支持的基本数据类有哪3个(提示:字 节、?、?)? (1)Byte:字节,8bit (2)Halfword:半字,16bit(半字必须与2字节边界对齐)(3)word: 字,32bit(字必须与4字节边界对齐) 2.什么是存储大小端模式? 所谓的大端模式,是指高位字节存放在低地址单元中,而低位字节存放在高地址单元中。 所谓的小端模式,是指低位字节存放在低地址单元中,而高位字节存放在高地址单元中。

ARM汇编之寄存器

在线学习好工作https://www.docsj.com/doc/a35239718.html,/ ARM汇编之寄存器 ARM A系列寄存器的情况 这是寄存器的总表,下面是CPU的各个模式,上面的纵轴就是寄存器组。 CPU在运行的时候为什么会有寄存器? 想象CPU是一个圈一直在运转,然后寄存器里面有大量的指令,这些指令不知道从哪里来的,但是一般情况下我们的程序在计算我们的程序,我们的程序一般是放在内存里面的,它从内存里面把这些程序读进来之后,在运行,但是如果现在这个程序在运行时异常,那么就要进行CPU状态的切换,除了状态切换之外,当前的一些数据结果需要进行一个保存,但是如果要把这个结果存到内存去,内存并不稳定并且很慢,所以就要想办法能不能找到一个临时空间保存一下,这就是为什么会诞生寄存器。

设置寄存器的原因就是为了更好的去控制和达到效率,ARM体系为了很好的去控制CPU,设定了哪些寄存器? User纵轴上的十三个寄存器称为通用寄存器,R13是一个比较特殊的寄存器,也叫做SP,就是占指针的寄存器,就是指向某一些占空间,R14是LR,就是连接寄存器,它肯定是去连接某一个地方。R15是PC,这是程序计数器,这是CPU在每一个空间切换的时候的计数器,最下面那个也就是APSR或者CPSR,PSR 就是程序状态寄存器,A代表应用程序状态寄存器,C代表当前程序状态寄存器。 在往下就类似于R17,只不过它叫做SPSR,S就是以保存程序代表寄存器或者我们也可以称为存储状态寄存器,通过这些我们大概把寄存器了解了。 那么这上面分为通用的,那么下面就是特殊寄存器,从横向来看,我们可以看到在USR模式下面,这样寄存器挺全的,但是USR下面没有SPSR,就是没有存储状态的寄存器,然后FIQ快速中断模式下面面是共享R0到R7,意思就是这些模式下的R0到R7它们与USR模式下的R0到R7是共享的,这样如果存储一些数据在R0到R9下面,突然发生异常,切换到另一个模式,那么我们就应该要想办法把这个存取一下,因为另一个模式可能也要往这里面写东西,那么写之前就应该把USR模式下的先保留一下,到时候退出解决后在还原回来,所以我们要一个R0到R7这块寄存器是共享的,同样FIQ后面几个模式的R8到R12也是和USR共享的,只有FIQ是自己独有的,同样的我们在看到PC计数器也是共享的,还有SPSR也是共享的,但是SPSR每个状态都有自己独有的。

ARM嵌入式系统复习题

嵌入式系统复习题 一、简答题 1、什么是嵌入式处理器,嵌入式处理器可以分为几大类? 嵌入式处理器是为了完成特殊的应用而设计的特殊目的的处理器,分为嵌入式微处理器、嵌入式微控制器、嵌入式DSP处理器、嵌入式片上系统(SOC)。 2、广泛使用的三种类型的操作系统? 多道批处理操作系统、分时操作系统以及实时操作系统。 3、什么是RISC?什么是CISC? RISC是精简指令集计算机的缩写。CISC是复杂指令集计算机的缩写。 4、ARM7TDMI中的T、D、S、I分别表示什么含义? T:支持高密度16位的Thumb指令集;D:支持片上调试;S:ARM7TDMI 的可综合(synthesizable)版本(软核);I:支持EmbededICE观察硬件;M:支持64位乘法 5、ARM7TDMI处理器采用什么样的体系结构,其可寻址地址空间多大? ARM处理器使用冯.诺依曼结构;使用单个平面的232个8位字节地址空间。地址空间可以看作是包含230个32位字,或231个16位半字。 6、ARM7TDMI处理器采用几级流水线处理,使用何种存储器编址方式? ARM7TDMI处理器采用三级流水线;ARM处理器将存储器看做是一个从0开始的线性递增的字节集合。 7、ARM处理器模式和ARM处理器状态有什么区别? ARM处理器模式指用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。ARM处理器状态指ARM状态和Thumb状态ARM两种处理器状态下均有上述7种模式。 8、ARM7TDMI内部寄存器特点? 分别为31个通用32位寄存器和6个状态寄存器。它们不能在同一使劲同时被访问,对其的访问取决于处理器状态和处理器模式。 9、ARM7TDMI有几种寻址方式? 寄存器寻址、立即寻址、寄存器移位寻址、寄存器间接寻址、基址寻址、多寄存器寻址、堆栈寻址、相对寻址。 10、ARM7的内部寄存器R13、R14、R15的主要功能和作用? R13:堆栈指针,用于保存堆栈的出入口处地址、保存待使用寄存器的内容R14:连接寄存器,当使用BL指令调用子程序时,返回地址将自动存入14中;当发生异常时,将R14对应的异常模式版本设置为异常返回地址;其他时候作为通用寄存器。

ARM基础知识(强烈推荐)

ARM基础知识(强烈推荐).txt有谁会对着自己的裤裆傻笑。不敢跟他说话却一遍一遍打开他的资料又关上。用了心旳感情,真旳能让人懂得很多事。╮如果有一天,我的签名不再频繁更新,那便证明我过的很好。ARM基础知识(强烈推荐) ARM基础知识一 ARM处理器共有37个寄存器。其中包括: **31个通用寄存器,包括程序计数器(PC)在内。这些寄存器都是32位寄存器。 **6个状态寄存器。这些寄存器都是32位寄存器。 ARM处理器共有7种不同的处理器模式,每一种模式中都有一组相应的寄存器组。在任何时刻,可见的寄存器包括15个通用寄存器(R0-R14),一个或两个状态寄存器及程序计数器(PC)。在所有的寄存器中,有些是各模式公用一个物理寄存器,有一些寄存器各模式拥有自己独立的物理寄存器。 **************************************************** 通用寄存器 ***************************************************8 通用寄存器分为以下三类:备份寄存器、未备份寄存器、程序计数器PC 未备份寄存器 未备份寄存器包括R0-R7。对于每一个未备份寄存器来说,所有处理器模式下都是使用同一个物理寄存器。未备份寄存器没有被系统用于特别的用途,任何可采用通用寄存器的场合都可以使用未备份寄存器。 备份寄存器 对于R8-R12备份寄存器来说,每个寄存器对应两个不同的物理寄存器。系统为将备份寄存器用于任何的特殊用途,但是当中断处理非常简单,仅仅使用R8-R14寄存器时,FIQ处理程序可以不必执行保存和恢复中断现场的指令,从而可以使中断处理非常迅速。 对于R13,R14备份寄存器来说,每个寄存器对应六个不同的物理寄存器,其中的一个是系统模式和用户模式共用的;另外的五个对应于其他的五种处理器模式。采用下面的记号来区分各个物理寄存器: R13_ 其中MODE可以是下面几种模式之一:usr,svc,abt,und,irq,fiq 程序计数器PC

ARM复习课后题答案(完整版)..

1.国内嵌入式系统行业对嵌入式系统的定义是什么?如何理解 答:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 从这个定义看以看出嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统要求进行合理的裁剪利用。因此有人把嵌入式系统比作是一个针对特定的应用而量身定做的专用计算机系统。 2.当前最常见的源码开放的嵌入式操作系统有哪些,请举出两例,并分析其特点 答:嵌入式linux和嵌入式实时操作系统uc/os-II Linux: (1)linux是源码开放的,每一个技术细节都是透明的,易于裁剪定制。 (2)目前嵌入式linux已经在多种嵌入式处理器芯片移植成功,有大量且不断增加的开发工具,这些工具为嵌入式系统开发提供了良好的开发环境。 (3)Linux内核小、功能强大、运作稳定、效率高。 Ucos: (1)源代码公开 (2)可移植性。 (3)可固化 (4)可裁剪 (5)占先式 (6)多任务 (7)可确定性。 (8)系统服务 第2章ARM技术与ARM体系结构 3.arm处理器的工作模式有哪几种,其中哪些为特权模式,哪些为异常模式,并指出处理 器在什么情况下进入相应的模式。 答:ARM 处理器共有7 种工作模式: 用户模式:非特权模式,也就是正常程序执行的模式,大部分任务在这种模式 下执行。在用户模式下,如果没异常发生,不允许应用程序自行改变处理器的工作 模式,如果有异常发生,处理器会自动切换工作模式 FIQ 模式:也称为快速中断模式,支持高速数据传输和通道处理,当一个高优 先级(fast)中断产生时将会进入这种模式。 IRQ 模式:也称为普通中断模式,:当一个低优先级中断产生时将会进入这种模 式。在这模式下按中断的处理器方式又分为向量中断和非向量中断两种。通常的中 断处理都在IRQ 模式下进行。 SVC 模式:称之为管理模式,它是一种操作系统保护模式。当复位或软中断指 令执行时处理器将进入这种模式。 中止模式:当存取异常时将会进入这种模式,用来处理存储器故障、实现虚拟 存储或存储保护。 未定义指令异常模式:当执行未定义指令时会进入这种模式,主要是用来处理 未定义的指令陷阱,支持硬件协处理器的软件仿真,因为未定义指令多发生在对协 处理器的操作上。 系统模式:使用和User 模式相同寄存器组的特权模式,用来运行特权级的操作

实验三 ARM工作模式切换实验

实验三ARM工作模式切换实验 一、实验目的 1. 掌握ARM的各种工作模式 2.熟悉ARM各种工作模式下的寄存器 3. 学会使用软件编程实现ARM工作模式间的切换 二.实验内容和步骤 任务:使用MSR/MRS指令切换工作模式(ARM9) (1)创建项目,并添加shiyan3.s源文件,文件内容如下: 程序解读:本程序使用MSR/MRS指令完成系统初始化过程从管理模式到用户模式的切换,采用Softsim方式调试,选用ARM9TDMI作为目标处理器。 .text .global _start _start: /* 安装中断向量表*/ /*只定义了Reset_Handler 入口,其它中断跳转到自身 */ B Reset_Handler Undefined_Handler: B Undefined_Handler B SWI_Handler Prefetch_Handler: B Prefetch_Handler

Abort_Handler: B Abort_Handler NOP IRQ_Handler: B IRQ_Handler FIQ_Handler: B FIQ_Handler SWI_Handler: MOV PC,LR Reset_Handler: /* into System mode */ MRS r0,CPSR BIC r0 , r0 , #0x1F ORR r0 , r0 , #0x1F MSR CPSR ,r0 /* into FIQ mode */ MRS r0,CPSR BIC r0 , r0 , #0x1F ORR r0 , r0 , #0x11 MSR CPSR ,r0 /*注意在调试器中观察该模式下的寄存器r8-r14有无发生变化*/ /* into SVC mode */ MRS r0,CPSR BIC r0 , r0 , #0x1F

ARM体系及原理

1.1ARM体系结构概述 2.1指令集体系结构 1. 一条ARM指令的最高四位bit[31:28]为条件域(condition field),根据其值的不同来确定当前指令对CPSR中的N、Z、C和V标志的设置与否。 2. ARM指令集支持一个向前或向后32M范围内跳转的Branch指令。如果是Branch and Link指令,则除了支持向前或向后的32M范围跳转外,还能将跳转指令的下一条指令地址(返回地址)压入R14(LR)。而在ARMv4以上支持T的版本中,还有Branch and Exchange指令,此指令可以拷贝通用寄存器Rm的值到PC中,而若其bit[0]为0,则进行ARM至Thumb的切换。 3. ARM指令集中包含了状态寄存器获取指令MSR和MRS用来对CPSR和SPSR进行操作。同时ARM指令集还提供了对协处理器的操作指令MCR和MRC。 4. SWI提供了软件中断的功能,此指令的bit[23:0]为一个立即数,ARM处理器会忽略这个立即数,但这个立即数可以提供异常处理程序使用。 2.2寄存器 通用寄存器(r0-r15): 不分组寄存器r0-r7: 可以工作在所有的处理模式下,没有隐含的特殊用途 分组寄存器r8-r14: 分组寄存器的使用取决于当前的处理器模式,每种模式有专用的分组寄存器用于快速异常处理。 寄存器R13通常用作堆栈指针,称作sp。每种异常模式都有自己的R13。通常R13被初始化为指向异常模式分配的堆栈。在入口处,异常处理程序将用到的其他寄存器的值保存到堆栈中,返回时,重新将这些值加载到寄存器中。

寄存器R14用作子程序链接寄存器lr。当指令BL指令时,得到R15(PC)寄存器的备份。 程序寄存器R15: ARM状态下,PC位[1:0]为0(字对齐)。 Thumb状态下,位[0]为0(半字对齐)。 由于流水线特性,PC总是指向当前执行指令的下两条指令地址。 程序状态寄存器: 所有处理器模式下都访问相同的CPSR,CPSR包含条件码标志。中断禁止位,当前处理器模式以及其他状态和控制信息。 每种异常模式下都有一个程序状态保存寄存器,发生异常时,SPSR用来保存CPSR的状态。 2.3工作模式和特权等级 ARM工作模式: ARM工作状态:从编程的角度看有两种并可以切换 ARM状态:执行32位字对齐的ARM指令 THunb状态:执行 16位的半字对齐 thumb指令注意:ARM 状态下只能执行ARM指令 thumb也是 存储器格式:0-3第一个字 4-7第二个………………. 因此 ARM最大寻址是 4GB 大端格式:高字节存放在低地址空间 小端空间:高字节放高地址,低地址存放低字节 ARM绝大多数时候使用小端格式 指令长度: ARM支持字节,半字,字三种数据类型其中字需要4字节对齐(地址的低两位是0) 半字需要2字节对齐(地址最低位0) 工作模式: 1:用户模式 usr:正常执行程序 2:快速中断模式FIQ: 用于高速数据的传送 3:外部中断模式IRQ: 用于通常的中断处理 4:管理模式svc: super verzer 超级模式,操作系统使用的保护模式 5:数据访问终止模式abt:当数据或指令预取终止时进入该模式,用于虚拟存储及存储保护 6:系统模式sys: 运行具有特权的操作系统任务 7:未定义指令终止模式und: 当未定义的指令执行时进入该模式,可用于支持硬件除用户模式外,其它称为非用户模式,或者是特权模式除去用户模式和系统模式, 其它称为异常模式. 2.4存储器和映射 1.多数的系统需要通过以下的一些方式来初始化和控制存储系统设备: 1)使能Cache,以保证Cache执行所能获得的效益最大化 2)为虚拟存储系统建立虚拟到物理存储的映射 3)为不同的存储区域建立约束规则 4)保证在正确的时间,以正确的方式对存储映射I/O的获取 2.存储系统应该按以下的方式配置: 1)主存储区(RAM)应该被配置成cachable和bufferable; 2)ROM存储区通常只配置成cachable和只读,因此bufferable属性不会被设置。 3.一些ARM实现中包含了一种契入式的write buffer,将多次对同一位置的写操作归并成对主存储区的一次操作。此外一些write buffer还支持写操作 的重排序,那样会使处理器提交的写操作顺序与实际的写操作提交给存储区的顺序存在差异。因此,对I/O区域尽量不要配置成bufferable,以保证对I/O设置的写操作能以一个正确的顺序执行。 4. 所有存储和系统相关的特性都由协处理器15(CP15)来控制,因此CP15也被称为系统控制协处理器。其包含共计16个32位的主寄存器。此外,由于寄存器获取指令中可以包含额外的位来辨识特定的寄存器版本和(或者)对寄存器特定的获取方式,所以实际CP15种的32bit物理寄存器可以超过16个。CP15的属性可以是只读、只写或者可读可写。 5. ARM仅仅定义了一类对CP15操作的指令,即MCR和MRC,其中MCR用来将一个ARM寄存器的值写入CP15,而MRC指令可以将一个CP15寄存器的值读入ARM寄存器中。MRC和MCR指令只有在各个特权模式下才能正常执行,如果是在用户模式下执行这两条指令,则会导致一个未定义指令的异常发生。 CP15 Register 1中各个位的含义如下: M(bit[0]) MMU或保护单元使能位 A(bit[1]) 对齐错误校验使能位 C(bit[2]) Cache使能位(如果是统一cache架构,则标识统一cache使能,如果是独立cache架构,则标识数据cache使能) W(bit[3]) Write buffer使能位 P(bit[4]) 异常处理模式选择位,可选择进入26-bit模式或32-bit模式 D(bit[5]) 26-bit地址异常校验使能位 L(bit[6]) Abort模式版本选择位 B(bit[7]) 大端或小端配置位 S(bit[8]) 系统保护位(在基于MMU的存储系统中使用)

相关文档