电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOC文档下载
分享到微信 分享到微博 分享到QQ空间

嵌入式系统实践上机实践报告--Thumb汇编指令和ARM工作模式

  • 资源ID:373310973       资源大小:115KB        全文页数:7页
  • 资源格式: DOC        下载积分:25金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要25金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

嵌入式系统实践上机实践报告--Thumb汇编指令和ARM工作模式

华东师范大学计算机科学技术系实验报告计算机科学技术系上机实践报告课程名称:嵌入式系统实践年级:上机实践成绩:指导教师:姓名:创新实践成绩:上机实践名称:Thumb汇编指令和ARM工作模式学号:上机实践日期:上机实践编号:组号:1上机实践时间:2学时一、 实验目的1. 掌握ARM处理器的Thumb指令使用方法;2. 学会使用msr/mrs指令实现ARM处理器工作模式的切换;3. 掌握ld中如何使用命令行指定代码段起始地址;二、 实验设备1. 硬件:Embest EDUKIT-III pc机2. 软件:Embest IDE for ARM三、 实验内容1. 使用THUMB 汇编语言,完成基本reg/mem 访问,以及简单的算术/逻辑运算。2. 使用THUMB 汇编语言,完成较为复杂的程序分支,push/pop,领会立即数大小的限制,并体会ARM 与THUMB 的区别。3. 编写程序从ARM状态切换到Thumb,在ARM状态下把R2赋值为0x12345678,在Thumb状态下把R2赋值为0x87654321,分别观察两个状态下的CPSR、SPSR的值和各个标志位。4. 通过ARM汇编指令,在各种处理器模式下切换并观察各种模式下寄存器的区别;掌握ARM不同模式的进入与推出。四、 实验原理1. ARM 处理器工作状态ARM 处理器共有两种工作状态:􀁺 ARM:32 位,这种状态下执行字对准的ARM 指令;􀁺 Thumb:16 位,这种状态下执行半字对准的Thumb 指令在 Thumb 状态下,程序计数器PC 使用位1 选择另一个半字。注意: ARM 和Thumb 之间状态的切换不影响处理器的模式或寄存器的内容。ARM 处理器在两种工作状态之间可以切换。1) 进入Thumb 状态。当操作数寄存器的状态位0 为1 时,执行BX 指令进入Thumb 状态。如果处理器在Thumb 状态进入异常,则当异常处理(IRQ,FIQ,Undef,Abort 和SWI)返回时,自动切换到Thumb 状态。2) 进入ARM 状态。当操作数寄存器的状态位0 为0 时,执行BX 指令进入ARM 状态。处理器进行异常处理(IRQ,FIQ,Undef,Abort 和SWI)。在此情况下,把PC 放入异常模式链接寄存器中。从异常向量地址开始执行也可以进入ARM 状态。2 Thumb 状态的寄存器集Thumb 状态下的寄存器集是ARM 状态下寄存器集的子集。程序员可以直接访问8 个通用的寄存器(R0R7),PC,SP,LR 和CPSP。每一种特权模式都有一组SP,LR 和SPSR。􀁺 Thumb 状态的R0R7 与ARM 状态的R0R7 是一致的。􀁺 Thumb 状态的CPSR 和SPSR 与ARM 状态的CPSR 和SPSR 是一致的。􀁺 Thumb 状态的SP 映射到ARM 状态的R13。􀁺 Thumb 状态的LR 映射到ARM 状态的R14。􀁺 Thumb 状态的PC 映射到ARM 状态的PC(R15)。Thumb 寄存器与ARM 寄存器的关系如图3-7 所示。 图 3-7 寄存器状态图3 本实验涉及到的as 伪操作.code 16|32code 伪操作用于选择当前汇编指令的指令集。参数16 选择Thumb 指令集,参数32 选择ARM指令集。语法格式.code 16|32.thumb同 .code 16。.arm同 .code 32。.align对齐方式:通过添加填充字节使当前位置满足一定的对齐方式。语法格式.align alignment , fill , max其中alignment 用于指定对齐方式,可能的取值为2 的次幂,缺省为4。ARM7 基础实验教程fill 是填充内容,缺省用0 填充。max 是填充字节数最大值,如果填充字节超过max,就不进行对齐。示例.align4. ARM 处理器模式除用户模式外的其他模式称为特权模式。它们可以自由的访问系统资源和改变模式。其中的5 种称为异常模式,即􀁺 FIQ(Fast Interrupt request);􀁺 IRQ(Interrupt ReQuest);􀁺 管理(Supervisor);􀁺 中止(Abort) ;􀁺 未定义(Undefined) 。当特定的异常出现时,进入相应的模式。每种模式都有某些附加的寄存器,以避免异常出现时用户模式的状态不可靠。剩下的模式是系统模式。仅ARM 体系结构V4 以及以上的版本有该模式。不能由于任何异常而进入该模式。它与用户模式有完全相同的寄存器,然而它是特权模式,不受用户模式的限制。它供需要访问系统资源的操作系统任务使用,但希望避免使用与异常模式有关的附加寄存器。避免使用附加寄存器保证了当任何异常出现时,都不会使任务的状态不可靠。5. 程序状态寄存器前一节提到的程序状态寄存器CPSR 和SPSR 包含了条件码标志,中断禁止位,当前处理器模式以及其他状态和控制信息。每种异常模式都有一个程序状态保存寄存器SPSR。当异常出现时,SPSR用于保留CPSR 的状态。CPSR 和SPSR 的格式如下:1) 条件码标志:N,Z,C,V 大多数指令可以检测这些条件码标志以决定程序指令如何执行2) 控制位:最低 8 位 I,F,T 和M 位用作控制位。当异常出现时改变控制位。当处理器在特权模式下也可以由软件改变。􀁺 中断禁止位:I 置1 则禁止IRQ 中断;F 置1 则禁止FIQ 中断。􀁺 T 位:T=0 指示ARM 执行;T=1 指示Thumb 执行。在这些体系结构的系统中,可自由的使用能在ARM 和Thumb 状态之间切换的指令。􀁺 模式位:M0, M1, M2, M3 和M4 (M4:0) 是模式位.这些位决定处理器的工作模式。3) 其他位程序状态寄存器的其他位保留,用作以后的扩展。6. 本实验涉及到的ld 命令行参数-Ttext org使用org 作为输出文件的text 段的起始地址。Org 必须是一个十六进制的数。五、 实验步骤1. 实验A1) 参考3.1.5 小节实验实验A 步骤1 建立一个新的工程,命名为ThumbCode;2) 参考3.1.5 小节实验实验A 步骤2 和实验参考程序编辑输入源代码,编辑完毕后,保存文件为ThumbCode.s;3) 选择Project 菜单中Add To Project Files 命令,或单击工程管理窗口中的相应右键菜单命令,弹出文件选择对话框,在工程目录下选择刚才建立的源文件ThumbCode.s;4) 参考3.1.5 小节实验A 的步骤4 进行相应设置;5) 参考3.1.5 小节实验A 的步骤5 生成目标代码;6) 参考3.1.5 小节实验A 的步骤6 进行相应的设置,需要注意的是:Debug 设置对话框Symbol file 设置应该修改为和工程名对应的ThumbCode.elf;7) 选择Debug 菜单Remote Connect 进行连接软件仿真器,执行Download 命令下载程序,并打开寄存器窗口;8) 记录代码执行区中每条指令的地址,注意指令最后尾数的区别;9) 注意观察寄存器R0 和R1 的值的变化;10) 结合实验内容和相关资料,观察程序运行,通过实验加深理解ARM 指令和Thumb 指令的不同;11) 理解和掌握实验后,完成实验练习题。2. 实验B1) 在工作区窗口工作区右键菜单,点击“Add New Project to Workspace”;参考实验A的和实验参考程序,建立工程ThumbCode2;2) 参照实验A 的步骤完成目标代码的生成与调试;注意并记录ARM 指令下和Thumb 指令状态下stmfd,ldmfd,ldmia 和stmia 指令执行的结果,指令的空间地址数值,数据存储的空间大小等等3) 理解和掌握实验后,完成实验练习题。3. 实验C1) 参考3.1.5 小节实验A 的步骤1 建立一个新的工程,命名为ARMMode;2) 参考3.1.5 小节实验A 的步骤2 和实验参考程序编辑输入源代码,编辑完毕后,保存文件为ARMMode.s;3) 选择ProjectAdd To Project tFiles 命令,或单击工程管理窗口中的相应右键菜单命令,弹出文件选择对话框,在工程目录下选择刚才建立的源文件ARMMode.s;4) 参考3.1.5 小节实验A 的步骤4 进行相应设置。5) 参考3.1.5 小节实验A 的步骤5 生成目标代码;6) 在Download address 框内,输入下载地址应该与链接器设置中,指定的代码段起始地址相同,以保证程序能够正常执行;7) 选择Debug Remote Connect 连接软件仿真器,执行Download 命令下载程序,并打开寄存器窗口;8) 单步执行,观察并记录寄存器R0 和CPSR 的值的变化和每次变化后执行寄存器赋值后的36 个寄存器的值的变化情况,尤其注意各个模式下R13 和R14 的值;9) 结合实验内容和相关资料,观察程序运行,通过实验加深理解ARM 各种状态下寄存器的使用;10) 理解和掌握实验后,完成实验练习题。六、 调试过程、结果和分析1. 本次上机的内容是Thumb汇编指令以及Arm的工作模式,在题目一Thumb状态转换以及调用子程序中,我通过观察寄存器r0,r1的值来进行理解,在子程序doadd中我们使用add指令对r0和r1进行相加,在Tstart中调用doadd使得r0的值发生变化(由10变为13)。2. 实验二比较复杂,其中涉及了多个子程序的调用。为了调试实验的结果,观察src中的值是否覆盖了dst中的值,我使用单步运行程序,然后分别观察内存中r0和r1所指向地址的值的变化(其中r0是src所在的地址,r1是dst所在的地址),调试过程中我发现程序是一次复制4个数,本次题目中数字总数是20,刚好能被4整除,但是程序中也有对总数不能被4整除的处理。3. 对于实验三中的问题,起初我本来是想用mov指令直接去把数字复制到r2中,可是在调试的过程中发现了溢出的错误,后来在同学的帮助下发现Thumb指令不能直接复制0x12345678这样大的数字。然后,我就使用了ldr指令去完成了改任务。七、 总结1. 本次实验基本达到了预习所没解决的问题。问题如下:1.src所对应的地址在预习时一直不知道是多少,上机后才发现原来这是电脑根据当时随机分配的。2对于压栈和弹栈也有了更加深刻的理解。总之,实验的目的基本都达到了,如对Thumb指令的使用以及Arm处理工作模式的基本有了一个了解2. 对于本次上机的总体感觉基本满意,达到了所预期的目标。尤其是对于Thumb指令的理解更加深刻,真正做到了把老师上课所讲的理论知识具体化。八、 附件1. .global _start.text_start:.armheader:adr r0, Tstart + 1 bx r0 nop.thumbTstart:mov r0, #10mov r1, #3bl doadd stop:b stopdoadd:a

注意事项

本文(嵌入式系统实践上机实践报告--Thumb汇编指令和ARM工作模式)为本站会员(liy****000)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.