《嵌入式系统》课程实验报告 2015年春季
《嵌入式系统》课程实验报告
学生姓名: 所在班级: 指导教师:
记分及评价:
项目满分 5分 得 分
一、实验名称
存储器实验
二、实验目的
了解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的自刷新和掉电模式。
《嵌入式系统》课程实验报告 2015年春季
五、实验结果
超级终端上显示一下信息:
六、练习
编写程序对SRAM进行字节的读写访问。
#include \
void memory_test(void) {
int i;
UINT16T data; int memError=0; UINT16T *pt;
《嵌入式系统》课程实验报告 2015年春季
uart_printf(\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(\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(\ break; }
pt++; }
if(memError==0)
uart_printf(\}