嵌入式实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
专业名称
班级学号
学生姓名
实验一
1、编写程序循环对R4~R11进行累加8次赋值,R4~R11起始值为1~8,每次加操作后把R4~R11的内容放入SP栈中,SP初始设置为0x800。最后把R4~R11用LDMFD指令清空赋值为0。
.global _start
.equ stack_top , 0x800
.text
_start:
MOV sp,#stack_top
MOV r4,#1
MOV r5,#2
MOV r6,#3
MOV r7,#4
MOV r8,#5
MOV r9,#6
MOV r10,#7
MOV r11,#8
STMFD sp!,{r4-r11}
MOV r3,#0 /*r3=0*/
addBlock:
b addBlock
.end
实验二存储器实验
实验目的:
1.通过实验熟悉ARM 的内部存储空间分配。
2.掌握对存储区配置方法。
3.掌握对存储区进行读写访问的方法。
实验设备:
硬件:Embest EduKit-III 实验平台,Embest ARM 标准/增强型仿真器套件,PC 机;
软件:Embest IDE for ARM 集成开发环境,Windows 98/2000/NT/XP。
实验内容:
1.熟练使用命令脚本文件对ARM 存储控制寄存器进行正确配置;
2.使用C 语言编程,实现对RAM 的读写访问。
实验原理:
2410init.s 整个系统的入口点,建立中断向量表
2410lib.c 包括所有程序调用的函数,驱动
Call_int.s 中断向量映射时进行现场保护
2410addr.h 寄存器的地址
2410addr.inc 寄存器的地址
Memcfg.h 内存的定义
Option.inc 配置参数
实验步骤:
1. 准备实验环境
拷贝光盘CD1\Software\EduKit2410 文件夹EmbestIDE\Examples\Samsung 目录下(如果已经拷贝,跳过该操作);使用EduKit-III 目标板附带的串口线连接目标板上UART0 和PC 机串口COMx;
2. 串口接收设置
在PC 机上运行windows 自带的超级终端串口通信程序(波特率115200、1 位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。
3. 打开实验例程
1)运行Embest IDE 开发环境,进入实验例程目录EduKit2410\4.1.1_memory_test子目录下的memory_test.pjf 例程,编译链接工程;
2) 点击IDE 的Debug 菜单,选择Remote Connect 项或F8 键,远程连接目标板;
3) 点击IDE 的Debug 菜单,选择Download 下载调试代码到目标系统的RAM 中;
4) 打开Memory 窗口,点击Memory1 在地址输入栏中输入0x30010000;
5) 在工程管理窗口中双击memory_test.c 就会打开该文件,在约第37 行
(*pt=(UINT32T)pt;)设置断点后,点击Debug 菜单Go 或F5 键运行程序;
6) 当程序停留到断后,按F10,在Memory1 窗口观察地址的内容并与地址相比较,对比是否一致,继续执行F10。
7)去掉断点,按F5 并执行程序,观察超级终端串口程序的输出。
8) 结合实验内容和实验原理部分,掌握汇编语言和高级语言程序访问RAM 指令的使用方法。
4. 观察实验结果
在PC 机上观察超级终端程序主窗口,可以看到如下界面:
实验程序:
/*****************************************************/
* File:main.c
* Author: embest
* Desc: c main entry
* History:
*****************************************************/
#include "option.h"
#include "def.h"
/* function declare */
/*****************************************************/
* name: main
* func: c code entry
* para: none
* ret: none
* modify:
* comment:
******************************************************/
void Main(int argc,char **argv)
{
sys_init(); /* Initial s3c2410's Clock, MMU, Interrupt,Port and UART */
// user interface
uart_printf("\n\r Embest EduKit-III Evaluation Board");
memory_test();
}
/****************************************************/
* File:memory.c
* Author: embest
* Desc:memory test file
* History:
*****************************************************/
#include "def.h"
#include "option.h"
void memory_test(void)
{
int i;
UINT32T data;
int memError=0;
UINT32T *pt;
// memory test
Uart_printf("\nMemory
Test(%xh-%xh):WR\n",_RAM_STARTADDRESS+0x10000,(_ISR_STARTADDRESS&0xf0ff00 00));
//memory write
pt=(UINT32T *)(_RAM_STARTADDRESS+0x10000);
while((UINT32T)pt<(_ISR_STARTADDRESS&0xf0ff0000))
{
*pt=(UINT32T)pt;
pt++;
}
//MEMORY READ
uart_printf("Memory
Test(%xh-%xh):RD\n",_RAM_STARTADDRESS+0x10000,(_ISR_STARTADDRESS&0x0f0ff0 000));
//uart_printf("\b\bRD");