嵌入式系统原理与应用 第3版 实验指导书 实验八 ARM处理器工作模式与堆栈指针实验_第1页
嵌入式系统原理与应用 第3版 实验指导书 实验八 ARM处理器工作模式与堆栈指针实验_第2页
嵌入式系统原理与应用 第3版 实验指导书 实验八 ARM处理器工作模式与堆栈指针实验_第3页
嵌入式系统原理与应用 第3版 实验指导书 实验八 ARM处理器工作模式与堆栈指针实验_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验八ARM处理器工作模式与堆栈指针设置实验1实验目的(1)通过实验掌握学会使用MSR和MRS指令实现ARM工作模式的切换,观察不同模式下的寄存器,尤其是状态寄存器,加深对CPU的理解;(2)掌握ARM堆栈指针SP的设置方法和意义,在设置好的堆栈中压入适当的数据,并使用寄存器窗口、存储器窗口观察。2实验内容(1)主要内容ARM9处理器支持7中工作运行模式(如表1)表1.ARM9运行模式处理器模式处理器模式描述CPSR寄存器的M[4:0]的值用户模式usrARM处理器正常程序执行模式0b10000快速中断模式fiq用于高速数据传输或通道处理0b10001外部中断模式irq用于通用的中断处理0b10010管理模式svc操作系统使用的保护模式0b10011数据访问终止模式abt当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护0b10111未定义指令终止模式und当未定义的指令执行时进入该模式0b11011系统模式sys运行具有特权的操作系统任务0b11111特权模式:又称非用户模式。是指除用户模式以外的6种模式。在这些模式下程序可以访问所有的系统资源,也可以任意地进行处理器模式切换。用户模式下是不允许模式切换的。异常模式:是指除用户模式和系统模式以外地5种模式,常用于处理中断。异常模式有:FIQ(FastInterruptReQuest)IRQ(InterruptReQuest)管理svc(Supervisor)中止abt(Abort)未定义und(Undefined)在特定地异常出现时,进入相应的模式。某种模式都有附加的寄存器,以避免出现异常时用户模式的状态不可靠。在软件的控制下可以改变模式,外部中断和异常也可以引起模式发生改变。大多数应用程序在用户模式下执行。当处理器工作在用户模式时,正在执行的程序不能访问某些被保护的处理器资源,也不能改变模式,除非异常(Exception)发生。这允许适当编写操作系统来控制系统资源的使用。ARM9体系结构的异常类型和异常处理模式(如表2)表2异常类型进入模式地址(异常向量)优先级复位管理模式0x000000001(最高)未定义指令未定义模式0x000000046(最低)软件中断管理模式0x000000086(最低)指令预取中止中止模式0x0000000C5数据中止中止模式0x000000102外部中断请求外部中断请求模式0x000000184快速中断请求快速中断请求模式0x0000001C3②状态寄存器CPSR/SPSR以及对其进行的访问状态寄存器CPSR和SPSR:包含了条件码标志,中断禁止位,当前处理器模式以及其它状态和控制信息。每种异常都有一个程序状态保存寄存器SPSR,当异常出现时SPSR用于保存CPSR的状态值。CPSR和SPSR的格式如下:NZCVQ预留IFTM4M3M2M1M0状态位:位31-28依次为N、Z、C、V分别表示符号位Negative、零位Zero、进位位Carry和溢出位Overflow。控制位:中断控制位I(b7)、快速中断控制位F(b6)和ARM/Thumb控制位。M4、M3、M2、M1、M0(M[4:0])是模式控制位,反映和决定ARM处理器的工作模式。对CPSR寄存器的访问程序状态寄存器到通用寄存器传送指令格式MRS{条件码}Op1,CPSR/SPSR;Op1←CPSR/SPSR说明:Op1是通用寄存器;CPSR是当前程序状态寄存器。通用寄存器到程序状态寄存器传送指令格式MSR{条件码}CPSR/SPSR,Op2_Domain,;CPSR/SPSR←Op2说明:Op2是通用寄存器;CPSR是当前程序状态寄存器。域Domain用于设置CPSP/SPSR中需要操作的位,32位的程序状态寄存器被分为4个域:最高8位,即b31-b24为条件标志位域,用f表示。在指令中的形式为CPSR_f。次高8位,即b23~b16为状态位域,用s表示。目前备用。次低8位,即b18~b8为扩展域,用x表示。目前备用。最低8位,即b7~b0为控制位域,用c表示。在指令中的形式为CPSR_c。(2)主要完成的工作①编写一个汇编程序,程序的入口地址为0x00000000,即进入到系统的启动入口Reset,此时系统进入到管理模式,这时就可以进行模式的切换,设置各模式下的SP指针,并写入数据在相应的模式状态下观察SP指针值和相应的存储单元内容;或通过访问ARM9中不存在的地址程序,使程序发生取址中断异常,进入此模式后,改变其专有的R13、R14的值,并进行观察。之后可以改变M[4:0]的取值而进入相应的模式,对其专有的寄存器赋值并观察,最后回到用户模式。②编写各堆栈区初始化汇编程序。利用汇编伪指令EQU定义模式字、所有栈顶的基址,然后根据各个栈区的大小连续向下设置各个栈的SP指针。3预备知识(1)ARM9的工作模式、特权模式、异常模式以及模式之间的转换;(2)ARM9的堆栈及堆栈指针寄存器。4实验设备硬件:PC机一台。软件:Windows98/XP/2000系统,ADS1.2集成开发环境。5实验步骤(1)启动ADS1.2,使用ARMExecutableImage工程模板建立一个工程exp8.mcp。(2)建立汇编源文件Exp8_arm.s,主要使用MRS/MSR等指令编写汇编程序,然后添加到工程中。(3)设置工程连接地址ROBase为0x00000000,RWBase为0x30003000,设置调试口地址Imageentrypoint为0x00000000。(4)编译连接工程,选择Project|Debug,启动AXD进行软件仿真调试。(5)打开寄存器窗口(ProcessorRegisters),选择Current项

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论