欢迎来到天天文库
浏览记录
ID:14729217
大小:169.50 KB
页数:5页
时间:2018-07-30
《arm微控制器工作模式实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、ARM微控制器工作模式实验一、实验内容《1》使用MRS/MSR指令切换工作模式,并初始化各种模式下的堆栈指针《2》观察ARM微控制器在各种模式下寄存器的区别二、实验程序一、实验步骤《1》启动ADS1.2,使用ARMExecutableImage工程模版建立一个工程MODE。《2》建立汇编源文件TEST7.S,编写实验程序,然后添加到工程中。《3》根据上一次实验的步骤设置工程连接地址《4》写程序,编写完程序后,进行错误检查,若无误,则进行软件仿真调试。《5》点击,打开寄存器窗口,选择Current
2、项监视各寄存器的值。《6》单步运行程序,观察寄存器值的变化观察的过程中显示大写字母表示该位为1;显示小写字母表示该位为0条件码标志位MZCVQ;中断禁止标志位IF;状态标志位T;工作模式:User(用户模式)、FIQ(FIQ中断模式)、IRQ(IRQ中断)、SVC(管理模式)、Abort(中止模式)、Undef(未定义模式)和SYS(系统模式)一、思考(1)在用户模式或系统模式下读取SPSR寄存器会有何结果?由于用户模式和系统模式不是异常中断,所以它们没有SPSR.因此在用户模式和系统模式中不要
3、访问SPSR,否则将会产生不可预知的结果。(2)在非特权模式下能否对CPSR寄存器设置?能否读取CPSR寄存器的值?只有在特权模式下才允许对当前程序状态寄存器CPSR的所有控制位直接进行读/写访问,而在非特权模式下只允许对CPSR的控制位进行间接访问,但可以读取CPSR的值。(3)在非特权模式下如何使能/禁止IRQ或FIQ中断?使用SWI指令切换到管理模式(4)程序中能不能通过MSR指令直接修改CPSR中的T位来实现ARM状态/Thumb状态的切换?不能。如果这样做的话不会清空流水线,是不安全的
4、。可以使用BX指令进行状态切换,程序跳转的同时进行状态切换,当程序发生跳转时流水线会被清空,流水线中按原来处理器状态进行取指和译码的指令(与当前处理器状态不符的指令)会被清除,也就不会引起处理器的错误。二、反思1、BICRd,Rn,operand2;位清除指令,即Rd←Rn&(~operand2)2、MRSR0,CPSR;读状态寄存器指令,将CPSR状态寄存器读取,保存到R0中MSRCPSR_c,#0xd0;写状态寄存器指令,CPSR[7:0]=0xd0,即切换到管理模式MSR{cond}psr
5、_fields,#immed_8rPsrCPSR或SPSRfields指定传送的区域(字母必须为小写)。c控制域屏蔽字节(psr【7:0】);x扩展域屏蔽字节(psr【15:8】);s状态域屏蔽字节(psr【23:16】);f标志域屏蔽字节(psr【31:24】);
此文档下载收益归作者所有