资源描述:
《实验三arm工作模式切换实验》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验三ARM工作模式切换实验一、实验目的1.掌握ARM的各种工作模式2.熟悉ARM各种工作模式下的寄存器3.学会使用软件编程实现ARM工作模式间的切换二.实验内容和步骤任务:使用MSR/MRS指令切换工作模式(ARM9)(1)创建项目,并添加shiyan3.s源文件,文件内容如下:程序解读:本程序使用MSR/MRS指令完成系统初始化过程从管理模式到用户模式的切换,采用Softsim方式调试,选用ARM9TDMI作为目标处理器。.text.global一startstart:/*安装中断向量表*//*只定义了Re
2、setHandler入口,其它中断跳转到自身*/BReset_HandlerUndefined_Handler:BUndefined_HandIerBSWI.HandlerPrefetchHandler:BPrefetchHandlerIRQ_Handler:FIQ_Handler:SWLHandler:MOVPC,LRNOPBIRQ_HandlerBFIQ_Handler/*intoSystemMRSrO,CPSRBIGrO,rO,#0x1FORRrO,rO,#0x1FMSRCPSR,r0/*intoFIQm
3、odeMRSrO,CPSRBIGrO,rO,#0x1FORRrO,rO,#0x11MSRCPSR,r0ResetHandler:*/*//*注意在调试器中观察该模式下的寄存器r8-r14有无发生变化*//*intoSVCmode*/MRSrO,CPSRBIGrO,rO,#0x1FORRrO,rO,#0x13MSRCPSR,rO/*注意在调试器中观察该模式下的寄存器r13-r14有无发生变化*//*intoAbortmode*/MRSrO,CPSRBIGrO,rO,#0x1FORRrO,rO,#0x17MSRCP
4、SR,rO/*注意在调试器中观察该模式下的寄存器H3-r14有无发生变化*//*intoIRQmode*/MRSrO,CPSRBICrO,rO,#0x1FORRrO,rO,#0x12MSRCPSR,rO/*注意在调试器中观察该模式下的寄存器r13-r14有无发生变化*//*intoUNDEFmode*/MRSrO,CPSRBICrO,rO,#0x1FORRrO,rO,#0x1bMSRCPSR,rO/*注意在调试器中观察该模式下的寄存器r13-r14有无发生变化*/(2)通过单步运行程序,观察相关寄存器和存储器相
5、应地址上的值的变化情况,记录在表1中,并读懂程序,然后阅读代码手工计算每一步的执行结果,核对和之前你在表上填的值是否一致。表1shiyan3.s单步运行结果序执行指令指令执行后的变化情况(用十六进制表示)寄存器R0R1R13R14R15CPSR其他工作模式0X00000X00000X00000X0000SVC000D30000000000000X00000X00000X00000X0000SVC100D308000BA480240X00000X00000X00000X0000SVC200C008000BA480
6、280X00000X00000X00000X0000SVC300DF08000BA4802C0X00000X00000X00000X0000SVC400DF08000BA480300X00000X00000X00000X00000X0000SVC500DF00000000803400DF0X00000X00000X00000X00000X0000SVC600DF00000000803800DF70X00000X00000X00000X00000X0000USER00C000000000803C00DF0X000
7、00X00000X00000X00000X0000USER800D100000000803C00DF0X00000X00000X00000X00000X0000FIQ900D100000000804400D10X00000X00000X00000X00000X0000FIQ1000D100000000804800D10X00000X00000X00000X00000X0000FIQ1100C000000000804C00D10X00000X00000X00000X00000X0000FIQ1200D300000
8、000805000D10X00000X00000X00000X00000X0000SVC1300D300000BA4805400D33、用不同代码实现同样处理器模式切换的功能(如直接修改CPSR某个域的值)1.增加进入用户模式的程序2.增加禁止IRQ中断的程序3.思考如果进入了用户模式后,能否进入其他处理器模式,原因是什么?