arm嵌入式实验报告完整版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
arm嵌入式实验报告完整版
篇一:ARM嵌入式系统实验报告1
郑州航空工业管理学院
嵌入式系统实验报告
第
赵成,张克新
院姓专学
系:名:业:号:电子通信工程系周振宇物联网工程 121309140
电子通信工程系
XX年3月制
实验一 ARM体系结构与编程方法
一、实验目的
了解ARM9 S3C2410A嵌入式微处理器芯片的体系结构,熟悉ARM微处理器的工作模式、指令状态、寄存器组及异常中断的概念,掌握ARM指令系统,能在ADS1.2 IDE中进行ARM汇编语言程序设计。
二、实验内容
1.ADS1.2 IDE的安装、环境配置及工程项目的建立;2.ARM汇编语言程序设计(参考附录A):
(1)两个寄存器值相加;(2)LDR、STR指令操作;
(3)使用多寄存器传送指令进行数据复制;(4)使
用查表法实现程序跳转;(5)使用BX指令切换处理器状态;(6)微处理器工作模式切换;
三、预备知识
了解ARM嵌入式微处理器芯片的体系结构及指令体系;熟悉汇编语言及可编程微处理器的程序设计方法。
四、实验设备 1. 硬件环境配置
计算机:Intel(R) Pentium(R) 及以上;内存:1GB及以上;
实验设备:UP-NETARM2410-S嵌入式开发平台,J-Link V8仿真器; 2. 软件环境配置
操作系统:Microsoft Windows XP Professional Service Pack 2;集成开发环境:ARM Developer Suite (ADS)
1.2。
五、实验分析
1.安装的ADS1.2 IDE中包括两个软件组件。在ADS1.2中建立 ARM Executable Image(ARM可执行映像)类型的工程,工程目标配置为 Debug;接着,还需要对工程进行目标设置、语言设置及链接器设置;最后,配置仿真环境为ARMUL仿真方式。
2.写出ARM汇编语言的最简程序结构,然后在代码段中实现两个寄存器值的加法运算,给出运算部分相应指令的注释。
; 文件名: AREA XTF,CODE,READONLY
声明32位ARM指令 R0arm嵌入式实验报告完整版)
ADD
R0,R1,R2
3.列写出使用LDR、STR指令的汇编程序,并在关键语句后面给出相应的注释。 AREA XTF,CODE,READONLY ;声明代码段XTFENTRY ;标示程序入口CODE32 ;声明32位ARM 指令START LDR R0,=1 ;加载数据LDR R1,=2LDR R3,=ADDR_1;载符号地址 ADD R2,R0,R1;R2[R3]
;数据空间定义 AREA Data_1,DATA,ALIGN=2
ADDR_1 DCD 0 END ;结束 4.“使用多寄存器传送指令进行数据复制”汇编程序分析。 LDR R0,=SrcData ; 执行后,R0的值是 LDR R1,=DstData ; 执行后,R1的值是 LDMIA R0,{R2-R9} ; LDMIA中的指令后缀IA表示传送后地址加4,[R0]-->R2,[R0+4]-->R3,?,[R0+28]-->R9STMIA R1,{R2-R9} ;执行后,程序实现的功能是?,[R1+28] 5.在“使用查表法实现程序跳转”的汇编程序中,指令LDR PC,[PC,R2]采用的是什么寻址方式?作为基址的寄存器PC 的值是多少?作为指令指针的PC又指向哪条指令?这个指令与流水线执行的关系是什么?(选做)
答: 1)基址加变址寻址;2)PC 6.通过运行及观察“使用BX指令切换处理器状态”汇编程序实验,回答
ARM指令与Thumb指令之间是如何实现状态切换的?AXD Debugger调试环境中的哪个寄存器指示了ARM微处理器当前的指令状态?同时,在程序中添加从Thumb指令切换到ARM 指令的代码。(选做)
答:1)BX指令使用寄存器作为参数,当32位操作数寄存器的第0位的值为1时,执行BX指令后,ARM处理器从16位半字节对齐ARM指令状态切换到32位字对齐Thumb指令状态;当32位操作数寄存器的第0位为0时,ARM处理器从Thumb指令状态切换到32位ARM指令状态。
2)CPSR的value值为nzcvqIFt_SVC时为ARM32指令状态;为nzcvqIFT_SVC时
为Thumb16指令状态
3) AREA
XTF,CODE,READONLY ;声明代码段XTF
ENTRY ;标识程序入口CODE32 ;声明32位ARM指令SART MOV R1,#1 ;设置参数MOV R2,#2ADD R0,R1,R2 ;R0Into_ThumbMOV R5,#3MOV R6,#4ADD R4,R5,R6LDR R3, =Bach_to_ARM ;将Back_to_ARM 地址值赋给R3 ;产生字对齐的跳转地址,最低位被清除,即bit0为
0BX R3 ;Branch Exchange 返回到ARM状态,此时运行在ARM指令集环境里CODE32 ;ARM状态下的子函数Bach_to_ARMMOV R8,#3MOV R9,#4 ADD R7,R8,R9 END
7.观察“微处理器工作模式切换”程序的运行,按顺序写出ARM工作模式切换过程中依次出现的工作模式,同时,通过观察回答ARM微处理器是否能从用户模式切换到特权模式?(选做)
答:
1)Usr(用户)?Sys(系统)?Fiq(快中断)?Svc(管理)?Abt(终止)?Irq(中断)?Und(未定义)
2)用户模式不能直接切换到其他处理模式(特权模式),特权模式可以自由切换到其他处理器模式。
程序: AREA Work_mode_switch,CODE,READONLY ;
ENTRY CODE32
;入口
;********************************************** **** ;now_in_svc_mode
;ARM处理器默认工作在SVC模式M=10011
;切换原理:CPSR最低8位I、F、T、M位用作控制位,当异常出现时改变控位。 ; ;
其中,中断标志位I、F;指令状态标志T;工作模式位M[4:0] 通过软件控制模式位M即可控制ARM工作状态。
;********************************************** ** ;into_Sys_mod
;系统模式下可运行具有特权的操作系统任务,与用户