您的位置:首页 > 其它

Learning ADSP-TS201系列--SDRAM存储器

2013-02-27 10:54 225 查看
原创作品,转载请注明原作者及地址!

by 飞鸿惊雪
http://blog.csdn.net/niyufeng

Learning ADSP-TS201系列--索引

Learning ADSP-TS201系列--重要参考

Learning ADSP-TS201系列--EZ-KIT Lite评估板硬件资源

Learning ADSP-TS201系列--Flag Pins按键和LED灯

Learning ADSP-TS201系列--Interrupt Pin

Learning ADSP-TS201系列--SDRAM存储器

评估板中,两片DSP共享2chips x 4M x 32bit的32MB SDRAM:



1 存储空间分配



SDRAM:0x4000 0000 - 0x407f ffff,总共8M字大小的空间,数据总线配置成32bit,则有32MB大小。

Flash:  0x3000 0000 - 0x3007 ffff, 512KB。

可以通过指针的方式直接指定物理地址来使用SDRAM!

2 SDRAM设置

使用SDRAMSYSCON,SDRCON两个寄存器要设置

/*
* 初始化SDRAM
* 主要设置SYSCON and SDRCON两个寄存器
* SYSCON = 0x0018 9067
* SDRCON = 0x0000 5983
*
*SDRAM地址32MB: 0x4000 0000 - 0x407F FFFF
*
*/






3 编程实验

写个简单的程序,先往SDRAM中写些数据,然后读取,测试下SDRAM。

#include <stdio.h>
#include <string.h>
#include <builtins.h>
#include <sysreg.h>
#include <defts201.h>

/*----------- Init SDRAM ------------*/
#define __defined_init_sdram() do{ \
__builtin_sysreg_write(__SYSCON, SYSCON_MP_WID64 | \
SYSCON_MEM_WID64 | \
SYSCON_MSH_PIPE2 | \
SYSCON_MSH_WT0 | \
SYSCON_MSH_IDLE | \
SYSCON_MS1_PIPE1 | \
SYSCON_MS1_WT0 | \
SYSCON_MS1_IDLE | \
SYSCON_MS0_SLOW | \
SYSCON_MS0_WT3 | \
SYSCON_MS0_IDLE); \
\
__builtin_sysreg_write(__SDRCON, SDRCON_INIT | \
SDRCON_RAS2PC5 | \
SDRCON_PC2RAS2 | \
SDRCON_REF3700 | \
SDRCON_PG256 | \
SDRCON_CLAT2 | \
SDRCON_ENBL); } while(0)

void main(void)
{

/* * 初始化SDRAM * 主要设置SYSCON and SDRCON两个寄存器 * SYSCON = 0x0018 9067 * SDRCON = 0x0000 5983 * *SDRAM地址32MB: 0x4000 0000 - 0x407F FFFF * */

__defined_init_sdram();
memset((void *)0x40000000, 0, 0x800000);//初始化,全部清零

char *dest=(char *)0x40000000;

strcpy(dest, "OK, Hello TS201 !");

printf("\n%s\n%s\n", dest, dest+4);

while(1)
__builtin_idle();

}


运行到初始化SDRAM全部清零之后,可以看到从0x4000 0000开始的存储空间都全部清零:



然后,往0x4000 0000首地址里写入"OK, Hello TS201 !" 字符串,可以看到0x4000 0000开始的存储空间内容发生了变化(好像一个字符使用了一个world??):



最后printf输出在终端:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: