郑州航空工业管理学院
嵌入式系统实验报告
20 15 – 20 16第 1 学期
赵成,张克新
院系: 电子通信工程系
姓名:
专业: 物联网工程
学号:
电子通信工程系
2015年6月制
实验一 ARM体系结构与编程方法
一、实验目的
了解ARM9 S3C2410A嵌入式微处理器芯片的体系结构,熟悉ARM微处理器的工作模式、指令状态、寄存器组及异常中断的概念,掌握ARM指令系统, IDE中进行ARM汇编语言程序设计。
二、实验内容
IDE的安装、环境配置及工程项目的建立;
(参考附录A):
(1)两个寄存器值相加;
(2)LDR、STR指令操作;
(3)使用多寄存器传送指令进行数据复制;
(4)使用查表法实现程序跳转;
(5)使用BX指令切换处理器状态;
(6)微处理器工作模式切换;
三、预备知识
了解ARM嵌入式微处理器芯片的体系结构及指令体系;熟悉汇编语言及可编程微处理器的程序设计方法。
四、实验设备
1. 硬件环境配置
计算机:Intel(R) Pentium(R) 及以上;
内存:1GB及以上;
实验设备:ARM2410-S嵌入式开发平台,J-Link V8仿真器;
2. 软件环境配置
操作系统:Microsoft Windows XP Professional Service Pack 2;
集成开发环境:ARM Developer Suite (ADS) 。
五、实验分析
IDE中包括 CodeWarrior 和 AXD Dubugger 两个软件组件。 ARM Executable Image(ARM可执行映像) 类型的工程,工程目标配置为 Debug ;接着,还需要对工程进行目标设置、语言设置及链接器设置;最后,配置仿真环境为 ARMUL 仿真方式。
,然后在代码段中实现两个寄存器值的加法运算,给出运算部分相应指令的注释。
; 文件名:
AREA XTF,CODE,READONLY
ENTRY
CODE32
SART MOV R1,#1
MOV R2,#2
ADD R0,R1,R2
HALT B HALT
END
声明代码段XTF
标识程序入口
声明32位ARM指令
设置参数
R0<---R1+R2
死循环
结束程序段
、STR指令的汇编程序,并在关键语句后面给出相应的注释。
AREA XTF,CODE,READONLY ;声明代码段XTF
ENTRY ;标示程序入口
CODE32 ;声明32位ARM指令
START LDR R0,=1 ;加载数据
LDR R1,=2
LDR R3,=ADDR_1 ;载符号地址
ADD R2,R0,R1 ;R2<---R0+R1
STR R2,[R3] ;R2--->[R3]
;数据空间定义
AREA Data_1,DATA,ALIGN=2
ADDR_1 DCD 0
END ;结束
4.“使用多寄存器传送指令进行数据复制”汇编程序分析。
LDR R0,=SrcData ; 执行后,R0的值是标号SrcData的地址
LDR R1,=DstData ; 执行后,R1的值是标号DstDatad 的地址
LDMIA R0,{R2-R9} ; LDMIA中的指令后缀IA表示 Increase After,即 每次传送后地址加4,[R0]-->R2,[R0+4]-->R3,…,[R0+28]-->R9
STMIA R1,{R2-R9} ;执行后,程序实现的功能是[R1]<--R2,[R1+4]<--R3,
…,[R1+28]<--R9
“使用查表法实现程序跳转”的汇编程序中,指令LDR PC,[PC,R2]采用的是什么寻址方式?作为基址的寄存器PC的值是多少?作为指令指针的PC又指向哪条指令?这个指令与流水线执行的关系是什么?(选做)
答: 1)基址加变址寻址;2)PC<----[PC+R2],即PC中存放的是当前PC值加上寄存器R2中的内容形成的有效地址中的操作数;3)对于ARM指令集,PC总是只想当前指令的下两条指令,即PC的值为当前指令的地址值加上8个字节(每条指令占4个字节)。
“使用BX指令切换处理器状态”汇编程序实验,回答ARM指令与Thumb指令之间是如何实现状态切换的?AXD Debugger调试环境中的哪个寄存器指
ARM嵌入式系统实验报告 来自淘豆网m.daumloan.com转载请标明出处.