嵌入式实验报告
一、实验名称:汇编指令实验以及程序下载运行实验
二、实验器材:ARM2410嵌入式开发板。
PC机操作系统Win98、Win2000、WinXP。
AD1.2集成开发环境。
超级终端通讯程序。
三、实验目的:
1.了解ARM2410基本原理并且掌握基本的程序运行下载技巧
2.熟悉ADS1.2 软件开发环境;
3.掌握ARM920T 汇编指令的用法,并能编写简单的汇编程序;
4.掌握指令的条件执行和使用LDR/STR 指令完成存储器的访问。
四、实验内容:
1、汇编语言实验:
实验步骤:
1启动ADS1.2,使用ARM Executable Image工程模板建立一个工程arm.mcp
2建立汇编源文件arm1.s,编写实验程序,然后添加到工程中。
3设置工程连接地址RO Base为0x3000000,RW Base为0x30003000,设置options中的调试地址 Image entry point 为0x30000000。
4编译连接工程,选择Project-Debug,启动AXD进行软件仿真调试。
5打开寄存器串口,选择Current监视R0,R1的值。打开存储器观察窗口,设置观察地址为0x30003100,显示方式Size为32Bit,监视0x30003100地址上的值。
实验程序:
1观察寄存器和0x30003100地址上值的变化
COUNT EQU 0x30003100
AREA Example1,CODE,READONLY
ENTRY
CODE32
START LDR R1,=COUNT
MOV R0,#0
STR R0,[R1]
LOOP LDR R1,=COUNT
LDR R0,[R1]
ADD R0,R0,#1
CMP R0,#10
MOVHS R0,#0
STR R0,[R1]
B LOOP
END
2n个X相乘
X EQU 9
N EQU 8
ARAE EXAMPLE3 CODE, READONLY
ENTRY
CODE32
START LDR SP,=0x30003F00
LDR R0,=X
LDR R1,=N
BL POW
HALT B HALT
POW STMFD SP!,{R1-R2,LR}
MOVS R2,R1
MOVEQ R0,#1
BEQ POW_END
MOV R1,R0
SUB R2,R2,#1
POW_L1 BL DO_MUL
SUBS R2,R2,#1
BNE POW_L1
POW_END LDMFD SP!,{R1-R12,PC}
DO_MUL MUL R0,R1,R0
MOV PC,LR
END
3计算1+2+3+…+(N-1)+N 的值(N>0)
IMPORT |Image$$RO$$Limit|
IMPORT |Image$$RW$$Base|
IMPORT |Image$$ZI$$Base|
IMPORT |Image$$ZI$$Limit|
IMPORT Main
AREA Start,CODE,READONLY
ENTRY
CODE32
Reset LDR SP,=0x40003f00
LDR R0,=|Image$$RO$$Limit|
LDR R1,=|Image$$RW$$Base|
LDR R3,=|Image$$ZI$$Base|
CMP R0,R1
BEQ LOOP1
LOOP0 CMP R1,R3
LDRCC R2,[R0],#4
STRCC R2,[R1],#4
BCC LOOP0
LOOP1 LDR R1,=|Image$$ZI$$Limit|
MOV R2,#0
LOOP2 CMP R3,R1
STRCC R2,[R3],#4
BCC LOOP2
B Main
END
实验截图:
2、程序下载运行实验
实验步骤:
1接好试验箱电源,并将计算机的串口接到开发板上。
2运行超级终端,选择正确的串口号。
3开起试验箱,在超级终端出现“按ENTER键进入BIOS… 2”提示
4按照提示按ENTER进入BIOS,选择--“下载文件到ARM运行”这一项,键入回车,出现提示“请使用超级终端发送文件。
5点击超级终端的“传送”菜单,在下拉菜单中选择“发送文件”,选择编译好的文件进行发送。
6当出现是否运行下载的程度的提示时,键入Y。
用ADS1.2集成开发环境对程序进行编译可生成.bin文件,先生成文本文件,再通过编码转换工具转化成bin文件。
五、I/O 接口实验
实验步骤:
1.参照模板,新建一个工程GPIO.mcp,添加相应的文件,并修改GPIO的工程设置;
2.创建Main.c 文件,并加入到工程文件GPIO.mcp中;
3.为Main.c 文件的主任务maintask 添加如下的语句:
#define GPIOLED_MARK(Led) (rGPBDAT = (rGPBDAT & ~0x1e0) | (~(Led & 0x1e0)))
void APP_vMain(void)
{ CONSOL_Printf("\\n [GPIOLED 实验]\\n");
while(1)
{
GPIOLED_MARK(GPIOLED0); // 灯亮
DelayLoop(2500); //延迟250ms
GPIOLED_MARK(GPIOLED1);
DelayLoop(2500);
GPIOLED_MARK(GPIOLED2);
DelayLoop(2500);
GPIOLED_MARK(GPIOLED3);
DelayLoop(2500);
}
4.编译GPIO工程;
5.下载程序并运行,观察结果。
6.注意接上仿真器,并保持 S1至右侧,程序从线性 Flash启动。 本指导书附带的光
盘里面的Sample 目录下的程序可以直接运行,打开相应的.mcp 文件,在Targets 中选择
DebugRel即可。读者也可以修改程序,以观察不同的实验效果,这里要选择 Debug,调用
AXD来调试,并注意Debug 中的设置(可以参考Samples的程序中DebugRel下的相应设置)。
直接Copy其中的程序修改并Debug,有可能出现Error提示错误,这时可以重新建立工程,
加入.c 等文件,或者在 PROJECT 选项里面单击 Remove Object Code…,再重新
Debug/DebugRel 。
五、心得体会:
在嵌入式的学习过程中 让我了解了什么是嵌入式系统。它就是以应用为中心 以计算机技术为基础 软硬件可定制 适用于不同应用场合 对功能、可靠性、成本、体积、功耗有严格要求的计算机系统。他一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统、用户应用程序四个部分组成 用于实现对其他设备的控制、监视或管理功能。嵌入式系统已经应用于科学研究、工业控制、军事技术、交通通信、医疗卫生、消费娱乐等领域 人们日常使用的手机、PDA、汽车、智能家电、GPS等均是嵌入式系统的典型代表。
学期开始,我开始学习《嵌入式系统》,由于初次接触嵌入式系统,感觉蛮难的,所以收获不是很大,慢慢自己通过查资料等了解到了嵌入式的一些基本知识及应用领域。嵌入式系统是以应用为中心,以微电子技术、控制技术、计算机技术和通讯技术为基础,强调软硬件的协同性、整合性和可剪裁性,并能满足目标应用对功能、可靠性、成本、体积、功耗等方面有严格要求的一种专用计算机系统。嵌入式微处理器对实时多任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时内核的执行时间减少到最低限度。具有功能很强的临界存储区保护功能。这是由于嵌入式系统的软件结构已模块化,而为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断。可扩展的处理器结构,以便能迅速地开发出满足各种应用需求的高性能嵌入式微处理器。嵌入式微处理器内部通常包含专用调试电路,外部有JTAG边界扫描接口供调试下载使用。
在了解了基础知识之后,开始进行上机操作,当然,其中遇到很多的难题,很多东西都是第一次接触,完全要凭借自己去摸索练习。其中的困难可想而知。然而坚持就是胜利,牙一咬眼一闭坚持做下去,而通过本次实验,我感觉收获还是蛮多的。通过实验和理论课的学习,让我进一步地加深了对嵌入式系统的认识,对其软硬件的特点都有了一定的了解。了解了ARM微处理器在工业控制领域、无线通讯领域、网络应用、消费类电子产品、成像和安全产品等领域的应用。通过实验也让我对自己提出了新的要求,在拥有基本知识的情况下,对嵌入式系统进行更加深入的学习和研究。