嵌入式实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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");

相关文档
最新文档