1、嵌入式实验报告实验报告专业名称 班级学号学生姓名实验一1、编写程序循环对R4R11进行累加8次赋值,R4R11起始值为18,每次加操作后把R4R11的内容放入SP栈中,SP初始设置为0x800。最后把R4R11用LDMFD指令清空赋值为0。.global _start.equ stack_top , 0x800.text_start:MOV sp,#stack_topMOV r4,#1MOV r5,#2MOV r6,#3MOV r7,#4MOV r8,#5MOV r9,#6MOV r10,#7MOV r11,#8STMFD sp!,r4-r11MOV r3,#0 /*r3=0*/addBloc
2、k: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 包括所有程
3、序调用的函数,驱动Call_int.s 中断向量映射时进行现场保护2410addr.h 寄存器的地址2410addr.inc 寄存器的地址Memcfg.h 内存的定义Option.inc 配置参数实验步骤:1. 准备实验环境拷贝光盘CD1SoftwareEduKit2410 文件夹EmbestIDEExamplesSamsung 目录下(如果已经拷贝,跳过该操作);使用EduKit-III 目标板附带的串口线连接目标板上UART0 和PC 机串口COMx;2. 串口接收设置在 PC 机上运行windows 自带的超级终端串口通信程序(波特率115200、1 位停止位、无校验位、无硬件流控制);
4、或者使用其它串口通信程序。3. 打开实验例程1)运行Embest IDE 开发环境,进入实验例程目录EduKit24104.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=
5、(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.
6、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 s3c2410s Clock, MMU, Interrupt,Port and UART */ user interfaceuart_printf(nr Embest EduKit-III Evaluation Board);memory_test();/*/*
7、File: memory.c* Author: embest* Desc: memory test file* History:*/#include def.h#include option.hvoid memory_test(void)int i;UINT32T data;int memError=0;UINT32T *pt;/ memory testUart_printf(nMemoryTest(%xh-%xh):WRn,_RAM_STARTADDRESS+0x10000,(_ISR_STARTADDRESS&0xf0ff0000);/memory writept=(UINT32T *)(
8、_RAM_STARTADDRESS+0x10000);while(UINT32T)pt(_ISR_STARTADDRESS&0xf0ff0000)*pt=(UINT32T)pt;pt+;/MEMORY READuart_printf(MemoryTest(%xh-%xh):RDn,_RAM_STARTADDRESS+0x10000,(_ISR_STARTADDRESS&0x0f0ff0000);/uart_printf(bbRD);pt=(UINT32T *)(_RAM_STARTADDRESS+0x10000); while(UINT32T)ptLED2亮-LED3亮-LED4亮-LED1灭
9、-LED2灭-LED3灭-LED4灭-全亮-全灭,如此反复实验操作步骤1. 准备实验环境拷贝光盘CD1SoftwareEduKit2410文件夹到EmbestIDEExamplesSamsung目录下(如果已经拷贝,跳过该操作);使用EduKit-III 目标板附带的串口线连接目标板上UART0和PC机串口COMx;2. 串口接收设置在PC机上运行windows自带的超级终端串口通信程序(波特率115200、1位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。3. 打开实验例程1) 运行Embest IDE开发环境,进入实验例程目录EduKit24104.2_led_test子目录
10、下的led_test.pjf例程,编译链接工程;2) 点击IDE 的Debug菜单,选择Remote Connect项或F8键,远程连接目标板;3) 点击IDE 的Debug菜单,选择Download下载调试代码到目标系统的RAM中;4) 在工程管理窗口中双击led_test.c 就会打开该文件,分别在约第34 行(for(i=0;i100000;i+);)和58行(for(i=0;i100000;i+);)设置断点后,点击Debug菜单Go或F5键运行程序;5) 程序停到第一个断点处,观察四个灯是否都被点亮(注意观察渐变过程),按step out (shift +F11),跳出这个子函数,继
11、续执行;6) 程序运行到led_off(),按step into (F11),停到第二个断点处,观察四个灯是否都熄灭(注意观察渐变过程)。按step out (shift +F11), 继续执行;7) 去掉断点,重新下载,执行程序观察实验结果观察发光二极管的亮灭情况,可以观察到的现象与前面实验内容中的相符,说明实验成功的实现了对I/0的操作。实验参考成绩/*/ * File:led_test.c * Author: embest * Desc: IO port test file * History: */ #include 2410lib.h /*/ * name: led_xxx * func: the led operations * para: none * ret: none */ void led_on(void) int i,nOut; nOut=0xF0; rGPFDAT=nOut & 0x70; - 165 - for(i=0;i100000;i+); rGPFDAT=nOut & 0x30; for(i=0;i100000;i+); rGPFDAT=nOut & 0x10; for(i=0;i100000;i+); rGPFDAT=nOut & 0x00; for(i=0;i100000
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1