一.实验目的
了解 S3C2410X 处理器的内部存储空间分配; 掌握对存储区配置的方法;
掌握对存储区进行读写访问的方法。
二.实验设备
硬件:Embest EduKit-IV 平台,ULINK2 仿真器套件,PC 机;
软件:μVision IDE for ARM 集成开发环境,Windows 98/2000/NT/XP。
三.实验内容
熟练使用命令脚本文件对 ARM 存储控制寄存器进行正确配置; 使用 C 语言编程,实现对RAM 的读写访问。
四.实验原理
存储器控制
S3C2410 处理器的存储控制器可以为片外存储器访问提供必要的控制信号,它主要包括以下特点:
A)支持大、小端模式(通过软件选择);
B)地址空间:包含8 个地址空间,每个地址空间的大小为128M 字节,总共有1G 字节的地址空间; C)除BANK0 以外的所有地址空间都可以通过编程设置为8 位、16 位或32 位对准访问。BANK0 可以设置为16 位、32 位访问;
D)8 个地址空间中,6 个地址空间可以用于ROM、SRAM 等存储器,2 个用于ROM、SRAM、 SDRAM 等存储器;
E)6 个地址空间的起始地址及空间大小是固定的; F)1 个地址空间的起始地址和空间大小是可变的; G)所有存储器空间的访问周期都可以通过编程配置; H)提供外部扩展总线的等待周期; I)SDRAM 支持自动刷新和掉电模式。
五.实验步骤
1. 准备实验环境
使用ULINK2 仿真器连接Embest EduKit-IV 实验平台的主板JTAG 接口;使用Embest EduKit-IV实验平台附带的交叉串口线,连接实验平台主板上的COM2 和PC 机的串口(一般PC 只有一个串口,如果有多个请自行选择,笔记本没有串口设备的可购买USB 转串口适配器扩充);使用EmbestEduKit-IV 实验平台附带的电源适配器,连接实验平台主板上的电源接口。
2. 串口接收设置
在PC 机上运行windows 自带的超级终端串口通信程序,或者使用实验平台附带光盘内设置好了的超级终端,设置超级终端:波特率115200、1 位停止位、无校验位、无硬件流控制,或者使用其它串口通信程序。(注:超级终端串口的选择根据用户的PC 串口硬件不同,请自
行选择,如果PC机只有一个串口,一般是COM1)
3. 打开实验例程
1)拷贝实验平台附带光盘DISK3_S3C2410\\03-Codes\\01-MDK\\Mini2410-IV 文件夹到MDK 的 安装路径:Keil\\ARM\\Boards\\Embest\\(如果本实验之前已经拷贝,可以跳过这一步)。(注:用户也可拷贝工程到任意目录,本实验为了便于教学,故统一实验路径); 2)运行μVision IDE for ARM 软件,点击菜单栏“Project”,选择“Open Project„”,在弹出的对话框选择实验例程目录5.1_Memory_Test 子目录下的Memory_Test.Uv2 工程。 3)默认打开的工程在源码编辑窗口会显示实验例程的说明文件readme.txt,详细阅读并理解实验内容。
4)工程提供了两种运行方式:一是下载到SDRAM 中调试运行,二是固化到Nor Flash 中运行。用户可以在工具栏Select Target 下拉框中选择在RAM 中调试运行还是固化Flash 中运行。如下图所示:下面实验将介绍下载到SDRAM 中调试运行,所以我们在Select Target 下拉框中选择Memory_Test IN RAM。 5)接下来开始编译链接工程,在菜单栏“Projiet”选择“Build target”或者“Rebuild all target files”编译整个工程,用户也可以在工具栏单击“ ”或者“ ”进行编译。 6) 编译完成后,在输出窗口可以看到编译提示信息,比如“\".\\SDRAM\\Memory_Test.axf\" - 0 Error(s), 1 Warning(s).”,如果显示“0 Error(s)”即表示编译成功。 7)拨动实验平台电源开关,给实验平台上电,单击菜单栏Debug->Start/Stop Debug Session 项将编译出来的映像文件下载到SDRAM 中,或者单击工具栏“ ”按钮来下载。
8)下载完成后,单击菜单栏Debug->Run 项运行程序,或者单击工具栏“ ”按钮来全速运 行程序。用户也可以使用进行单步调试程序。
9)全速运行后,用户可以在超级终端看到程序运行的信息,以检测对存储区的操作是否成功。
10)用户可以Stop 程序运行,使用μVision IDE for ARM 的一些调试窗口跟踪查看程序运行的信息。
注:如果在第4)步用户选择在Flash 中运行,则编译链接成功后,单击菜单栏Flash->Download项将程序固化到NorFlash 中,或者单击工具栏按钮“ ”固化程序,从实验平台的主板拔出JTAG线,给实验平台重新上电,程序将自动运行。
4. 观察实验结果
在执行到第8)步时,可以看到超级终端上显示以下信息:
******************************************************************* ** 英蓓特EduKit 系列嵌入式教学系统平台 **
** Embest EduKit Series Embedded Teaching Platform **
******************************************************************* Memory Test(30E00000H-30F00000H):WR Memory Test(30E00000H-30F00000H):RD O.K.
5. 完成实验练习题
理解和掌握实验后,完成实验练习题。
六.实验参考程序
本实验的参考程序如下:
/*********************************************************************************************
* File: memory.c * Author: embest
* Desc: memory test file * History:
*********************************************************************************************/
/*------------------------------------------------------------------------------------------*/
/* include files */
/*------------------------------------------------------------------------------------------*/
#include \"2410lib.h\"
/*********************************************************************************************
* name: memory_test * func: memory test * para: none * ret: none * modify: * comment:
*********************************************************************************************/
void memory_test(void) { int i; UINT32T data; int memError=0; UINT32T *pt;
uart_printf(\"\\n Memory
Test(%xh-%xh):WR\\n\));
// memory write
pt=(UINT32T *)(_RAM_STARTADDRESS+0x0e000000); while((UINT32T)pt<(_ISR_STARTADDRESS&0xf0ff0000)) {
*pt=(UINT32T)pt; pt++; }
// memory read
uart_printf(\"\\n Memory
Test(%xh-%xh):RD\\n\);
pt=(UINT32T *)(_RAM_STARTADDRESS+0x0e000000); while((UINT32T)pt<(_ISR_STARTADDRESS&0xf0ff0000))
{
data=*pt;
if(data!=(UINT32T)pt) {
memError=1;
uart_printf(\"\\n\\b\\bFAIL:0x%x=0x%x\\n\break; } pt++; }
if(memError==0)
uart_printf(\"\\n\\b\\b O.K.\\n\"); }
七.练习题
编写程序对SRAM 进行字节,半字的读写访问。
因篇幅问题不能全部显示,请点此查看更多更全内容