ARM处理器工模式实验.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ARM处理器工作模式实验 一、实验目的 通过实验掌握学会使用MSR/MRS指令实现ARM处理器工作模式的切换,观察不同模式下的寄存器,加深对CPU结构的理解。 通过实验掌握ld中如何使用命令行指定代码段起始地址。 二、实验设备 硬件:PC机。 软件:Embest IDE Pr0 2004集成开发环境,Windows 98/2000/NT/XP。 三、实验内容 通过ARM汇编指令,在各种处理器模式下切换并观察各种模式下寄存器的区别。 掌握ARM不同模式的进入与退出。 四、实验原理 1.ARM处理器模式 ARM体系结构支持表3-2所列的7种处理器模式。 在软件控制下可以改变模式,外部中断或异常处理也可以引起模式发生改变。 大多数应用程序在用户模式下执行。当处理器工作在用户模式时,正在执行的程序不能访问某些被保护的系统资源,也不能改变模式,除非异常发生。这允许适当编写操作系统来控制系统资源的使用。 除用户模式外的其他模式称为“特权模式”,它们可以自由地访问系统资源和改变模式。 其中的5种称为“异常模式”,即FIQ Fast Interrupt Request 、IRQ lnterrupt Request 、管理 Supervisor 、中止 Abort 和未定义 Undefined 。 当特定的异常出现时,进入相应的模式。每种模式都有某些附加的寄存器,以避免异常出现时用户模式的状态不可靠。 剩下的模式是“系统模式”。仅ARM体系结构V4以及以上的版本有该模式。不能由于任何异常而进入该模式。它与用户模式有完全相同的寄存器,但它是特权模式,不受用户模式的限制。它供需要访问系统资源的操作系统任务使用,但希望避免使用与异常模式有关的附加寄存器。避免使用附加寄存器保证了当任何异常出现时,都不会使任务的状态不可靠。 2.程序状态寄存器 3.2节提到的程序状态寄存器CPSR和SPSR包含了条件码标志、中断禁止位、当前处理器模式以及其他状态和控制信息。每种异常模式都有一个程序状态保存寄存器SPSR。当异常出现时,SPSR用于保留CPSR的状态。 3.本实验涉及到的Id命令行参数 -Ttext org 使用org作为输出文件的text段的起始地址。org必须是十六进制数。 实验操作步骤 1 参考3.1节实验A的步骤 1 建立一个新的工程,命名为ARMMode。 2 参考3.1节实验A的步骤 2 和实验参考程序编辑输入源代码。编辑完毕后,保存文件为ARMMode.s。 3 选择菜单项Project- Add To Project- Files,或在工程管理窗口右击选择快搪菜单命令,打开文件选择对话框,在工程目录下选择刚才建立的源文件ARMMode.s。 4 参考3.1节实验A的步骤 4 进行相应设置。 注意:在链接器设置选项卡的Link Options框内,手动加上“-Ttext Ox0”,即指定代码段起始地址为Ox0,如图3-8所示。 5 参考3.1节实验A的步骤 5 生成目标代码。 6 在调试设置选项卡中的Download address文本框内,输入的下载地址应该与链接器设置中指定的代码段起始地址相同,以保证程序能够正常执行,如图3-9所示。 7 选择菜单项Debug—Remote Connect连接软件仿真器,执行Download命令下载程序,并打开寄存器窗口。 8 单步执行,观察并记录寄存器RO和CPSR值的变化,以及每次变化后执行寄存器赋值后36个寄存器值的变化情况,尤其注意各个模式下R13和R14的值。 结合实验内容和相关资料,观察程序运行,通过实验加深理解ARM各种状态下寄存器的使用。 理解和掌握试验后,完成实验练习题。 五、实验结果 实验参考程序 .global _start .text _start: b Reset_Handler Undefined_Handler: b Undefined_Handler b SWI_Handler Prefetch_Handler: b Prefetch_Handler Abort_Handler: b Abort_Handler nop /* Reserved vector */ IRQ_Handler: b IRQ_Handler FIQ_Handler: b FIQ_Handler SWI_Handler: mov pc, lr Reset_Handler: mrs r0,cpsr /* read CPSR value */ bic r0,r0,#0x1f /* clear low 5 bit */ orr r0,r0,#0x1f /* set the mode as System mode */ msr cpsr,r0 /* writ

文档评论(0)

mei1809816wei + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档