您好,欢迎来到尔游网。
搜索
您的当前位置:首页实验三 ARM 微处理器工作模式实验

实验三 ARM 微处理器工作模式实验

来源:尔游网


实验三 ARM 微处理器工作模式实验

一、实验目的

(1) 掌握学会使用MSR/MRS 指令实现ARM 处理器工作模式的切换

(2) 观察不同模式下的寄存器,加深对CPU 结构的理解。

二、实验设备

(1)硬件:嵌入式实验平台一套、仿真器一个、PC 机一台。

(2)软件:μVision IDE for ARM集成开发环境,Windows 98/2000/NT/XP。

三、实验内容

(1)通过ARM 汇编指令,在各种处理器模式下切换并观察各种模式下寄存器的区别;

(2)掌握ARM 不同模式的进入与退出。

四、实验原理

1.ARM 处理器模式

ARM 体系结构支持7种处理器模式:

(1) 用户模式USR: 正常程序执行模式;

(2) 快速中断模式FIQ:支持快速数据传送或通道处理;

(3) 外部中断模式IRQ:用于通用中断处理;

(4) 管理模式SVC:操作系统保护模式;

(5) 中止模式ABT: 实现虚拟存储器和/或存储器保护

(6)未定义模式UND:支持硬件协处理器的软件仿真

(7)系统模式SYS: 运行操作系统任务

在软件控制下可以改变模式,外部中断或异常处理也可以引起模式发生改变。大多数应用程序在用户模式下执行。当处理器工作在用户模式时,正在执行的程序不能访问某些被保护的系统资源,也不能改变模式,除非异常发生。这允许适当编写操作系统来控制系统资源的使用。除用户模式外的其他模式成为模式。它们可以自由地访问系统资源和改变模式。其中5 种称为异常模式,即:FIQ (Fast Interrupt Request)、IRQ (Interrupt Request)、管理 (Supervisor)、中止 (Abort)、未定义 (Undefined)。

当特定的异常出现时,进入相应的模式。每种模式都有某些附加的寄存器,以避免异常出现时用户模式的状态不可靠。其余模式是系统模式。仅ARM 体系结构V4 以及以上的版本有该模式。不能由于任何异常而进入该模式。它与用户模式有相同的寄存器,但它是模式,不受用户模式的。它供需要访问系统资源的操作系统任务使用,但希望避免使用与异常模式有关的附加寄存器。避免使用附加寄存器保证了当任何异常出现时,都

不会使任务的状态不可靠。

2.程序状态寄存器

在所有处理模式下,都可以访问当前程序状态寄存器CPSR。CPSR包含条件码标志、中断禁止位、当前处理器模式以及其他状态和控制信息。每种异常模式都有一个程序状态保存寄存器SPSR。当异常出现时,SPSR用于保存CPSR的状态。

CPSR 和SPSR 的格式如下:

(1) 条件码标志

N、Z、C、V:大多数指令可以检测这些条码标志,以决定程序指令如何执行。

(2) 控制位

最低8 位I、F、T 和M 位用作控制位。当异常出现时改变控制位。当处理器在模式下时也可以由软件改变。

中断禁止位:I 置1 则禁止IRQ 中断;F 置1 则禁止FIQ 中断。

T 位:T=0 指示ARM 执行;T=1 指示Thumb 执行。在这些体系结构的系统中,可自由地使用能在ARM 和Thumb 状态之间切换的指令。

模式位:M0、M1、M2、M3 和M4(M[4:0])是模式位。这些位决定处理器的工作模

(3) 其他位

程序状态寄存器的其他位保留,用作以后扩展。

五、实验操作步骤

1. 建立一个新的工程;

2. 为工程选择CPU

3. 不添加启动代码

4. 选择开发工具

5. 建立源文件

建立汇编源程序文件TEST4.S,编写实验程序;

6. 添加源文件到工程中

7. 工程配置

8. 生成目标代码

9. 调试监视个寄存器的值

10.单步运行程序,注意观察CPSR、SPSR 以及R0 寄存器值得变化。

说明:CPSR 寄存器显示分为两部分,一部分是各个标志位,另一部分是工作模式。标志位NZCVQ 为条件码标志N、Z、C、V、Q,显示为大写字母,表示该位为1;显示为小写字母,表示该位为0。Q 标志在ARM 体系结构v5 及以上版本的E 变量中才有效。标志位IFT 为IRQ 中断禁止位I、FIQ 中断禁止位F、ARM 微控制器状态位T,显示为大写字母,表示该位为1;显示为小写字母,表示该位为0。T 标志在ARM 体系结构v4 及以上版本的T 变量中才有效。

寄存器显示窗口

单步执行程序并观察和记录CPSP 和SPSR 缓存器值的变化;并观察在相应模式下执行程序后对应缓存器值的变化。

11. 结合实验内容和相关数据,观察程序执行,透过实验加深理解和掌握

六、 实验参考程序

ARM 微控制器工作模式实验的参考程序如下:

AREA Example4,CODE,READONLY

ENTRY ;程序入口标志

start

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 ;复制CPSR 到R0

BIC R0,R0,#0x1F ;清除R0 的后5 位

ORR R0,R0,#0x1F ;设定R0 的最后5 位为11111

MSR CPSR_c,R0 ;把R0 装载到CPSR,切换到系统模式

MOV R0, #1 ;对系统模式下的R0 赋值,下面的R1~R15 一样

MOV R1, #2

MOV R2, #3

MOV R3, #4

MOV R4, #5

MOV R5, #6

MOV R6, #7

MOV R7, #8

MOV R8, #9

MOV R9, #10

MOV R10, #11

MOV R11, #12

MOV R12, #13

MOV R13, #14

MOV R14, #15

;into FIQ mode

MRS R0,CPSR

BIC R0,R0,#0x1F

ORR R0,R0,#0x11 ;设定R0 的最后5 位为10001

MSR CPSR_c,R0 ;把R0 装载到CPSR,切换到Fiq 模式

MOV R8, #16 ;给Fiq 模式的特有缓存器R8 赋值, 下面的R9~R14 一样

MOV R9, #17

MOV R10, #18

MOV R11, #19

MOV R12, #20

MOV R13, #21

MOV R14, #22

;into SVC mode

MRS R0,CPSR

BIC R0,R0,#0x1F

ORR R0,R0,#0x13 ;设定R0 的最后5 位为10011

MSR CPSR_c,R0 ;把R0 装载到CPSR,切换到Svc 模式

MOV R13, #23 ;给SVC 模式的特有缓存器R13 赋值, 下面的R14 一样

MOV R14, #24

;into Abort mode

MRS R0,CPSR

BIC R0,R0,#0x1F

ORR R0,R0,#0x17 ;设定R0 的最后5 位为10111

MSR CPSR_c,R0 ;把R0 装载到CPSR,切换到Abort 模式

MOV R13, #25 ;给Abort 模式的特有缓存器R13 赋值, 下面的R14 一样

MOV R14, #26

;into IRQ mode

MRS R0,CPSR

BIC R0,R0,#0x1F

ORR R0,R0,#0x12 ;设定R0 的最后5 位为10010

MSR CPSR_c,R0 ;把R0 装载到CPSR,切换到IRQ 模式

MOV R13, #27 ;给IRQ 模式的特有缓存器R13 赋值, 下面的R14一样

MOV R14, #28

;into UNDEF mode

MRS R0,CPSR

BIC R0,R0,#0x1F

ORR R0,R0,#0x1b ;设定R0 的最后5 位为11011

MSR CPSR_c,R0 ;把R0 装载到CPSR,切换到UNDEF 模式

MOV R13, #29 ;给UNDEF 模式的特有缓存器R13 赋值, 下面的R14 一样

MOV R14, #30

B Reset_Handler ;跳移到最开始地方循环

END

七、思考题

1.本实验用到了那些寄存器,他们的作用是什么?

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- axer.cn 版权所有 湘ICP备2023022495号-12

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务