嵌入式系统实验一-存储器实验学习资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式系统实验一-存
储器实验
《嵌入式系统》课程实验报告
学生姓名:
所在班级:
指导教师:
记分及评价:
一、实验名称
存储器实验
二、实验目的
了解S3C2410X处理器的内部存储空间分配;
掌握对存储区配置的方法;
掌握对存储区进行读写访问的方法。
三、实验内容
熟练使用命令脚本文件对ARM存储控制器进行正确配置。
使用C语言编程,实现对RAM的读写访问。
四、实验原理
S3C2410A的存储器控制器提供访问外部存储器所需要的存储器控制信号,具有以下特性:
●支持小/大端(通过软件选择)。
●地址空间:每个bank有128 MB(总共有8个bank,共1 GB)。
●除bank0只能是16/32位宽之外,其他bank都具有可编程的访问位宽(8/16/32位)。
●总共有8个存储器bank(bank0~bank7):
一其中6个用于ROM,SRAM等;
一剩下2个用于ROM,SRAM,SDRAM等。
● 7个固定的存储器bank(bank0~bank6)起始地址。
●最后一个bank(bank7)的起始地址是可调整的。
●最后两个bank(bank6和bank7)的大小是可编程的。
●所有存储器bank的访问周期都是可编程的。
●总线访问周期可以通过插入外部等待来扩展。
●支持SDRAM的自刷新和掉电模式。
五、实验结果
超级终端上显示一下信息:
六、练习
编写程序对SRAM进行字节的读写访问。
#include "2410lib.h"
void memory_test(void)
{
int i;
UINT16T data;
int memError=0;
UINT16T *pt;
uart_printf("\n Memory Test(%XH-%XH):WR\n",_RAM_STARTADDRESS + 0x00E00000, _RAM_STARTADDRESS + 0x00F00000);
pt=(UINT16T *)(_RAM_STARTADDRESS + 0x00E00000); // memory write
while((UINT32T)pt < (_RAM_STARTADDRESS + 0x00F00000))
{
*pt=(UINT16T)pt;
pt++;
}
// memory read
uart_printf("\n Memory Test(%XH-%XH):RD\n", _RAM_STARTADDRESS + 0x00E00000, _RAM_STARTADDRESS + 0x00F00000);
pt=(UINT16T *)(_RAM_STARTADDRESS + 0x00E00000);
while((UINT32T)pt < (_RAM_STARTADDRESS + 0x00F00000))
{
data=*pt;
if(data!=(UINT16T)pt)
{
memError=1;
uart_printf("\n\b\bFAIL:0x%X=0x%X\n",i,data);
break;
}
pt++;
}
if(memError==0)
uart_printf("\n\b\b O.K.\n");
}