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嵌入式系统实验 实验三参考答案(ARM处理器工作模式) 实验目的 (1)掌握如何使用MRS/MSR指令实现ARM处理器工作模式的切换。 (2)了解在各个工作模式下的寄存器。 实验设备 硬件:PC机 一台 MagicARM2410教学实验开发平台 1台 软件:Windows98/XP/2000 系统,ADS1.2集成开发环境。 实验内容 (1)使用MRS/MSR指令切换工作模式,并初始化各种模式下堆栈指针。 (2)观察ARM处理器在各个模式下寄存器的区别。 4.实验步骤 (1) 启动ADS 1.2,使用ARM Executable Image for DeviceARM2410工程模板建立一个工程MODE。 (2) 建立汇编源文件TEST5.S,编写实验程序,然后添加到工程中。 (3) 设置工程链接地址R0 Base为0RW Base为0并设置Option页中调试入口地址Image entry Point 为0。 (4) 编译链接工程,选择【Project】- 【Debug】,启动AXD进行软件仿真调试。 (5) 打开寄存器窗口(Processor Registers),选择Cuurrent项监视各寄存器的值。 (6) 单步运行程序,注意观察CPSR、SPSR、R13(SP)、R14(LR)、R15(PC)寄存器。 说明:标志位NZCVQ为条件码标志N、Z、C、V、Q ,显示为大写字母,表示该位为1,显示为小写字母,表示该位为0, 5.实验参考程序 ;定义堆栈的大小 USR_STACK_LEGTH EQU 64 SVC_STACK_LEGTH EQU 0 FIQ_STACK_LEGTH EQU 16 IRQ_STACK_LEGTH EQU 64 ABT_STACK_LEGTH EQU 0 UND_STACK_LEGTH EQU 0 AREA Example5,CODE,READONLY ; 声明代码段Example5 ENTRY ; 标识程序入口 CODE32 ; 声明32位ARM指令 START MOV R0,#0 MOV R1,#1 MOV R2,#2 MOV R3,#3 MOV R4,#4 MOV R5,#5 MOV R6,#6 MOV R7,#7 MOV R8,#8 MOV R9,#9 MOV R10,#10 MOV R11,#11 MOV R12,#12 BL InitStack ; 初始化各模式下的堆栈指针 ; 打开IRQ中断 (将CPSR寄存器的I位清零) MRS R0,CPSR ; R0 = CPSR BIC R0,R0,#0x80 MSR CPSR_cxsf,R0 ; CPSR = R0 ; 切换到用户模式 MSR CPSR_c, #0xd0 MRS R0,CPSR ; 切换到管理模式 MSR CPSR_c, #0xdf MRS R0,CPSR HALT B HALT ; 名称:InitStack ; 功能:堆栈初始化,即初始化各模式下的堆栈指针。 ; 入口参数:无 ; 出口参数:无 ; 说明:在特权模式下调用此子程序,比如复位后的管理模式 InitStack MOV R0, LR ; R0 = LR,因为各种模式下R0是相同的 ;设置管理模式堆栈 MSR CPSR_c, #0xd3 LDR SP, StackSvc ;设置中断模式堆栈 MSR CPSR_c, #0xd2 LDR SP, StackIrq ;设置快速中断模式堆栈 MSR CPSR_c, #0xd1 LDR SP, StackFiq ;设置中止模式堆栈 MSR CPSR_c, #0xd7 LDR SP, StackAbt ;设置未定义模式堆栈 MSR CPSR_c, #0xdb LDR SP,

文档评论(0)

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

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

1亿VIP精品文档

相关文档