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




原创作品,转载请注明原作者及地址!

by 飞鸿惊雪

http://blog.csdn.net/niyufeng




Learning ADSP-TS201系列--索引


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

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

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

4  Learning ADSP-TS201系列--Interrupt Pin






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



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

Learning ADSP-TS201系列--SDRAM存储器_第1张图片





1 存储空间分配






SDRAM0x4000 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
 *
 */




Learning ADSP-TS201系列--SDRAM存储器_第2张图片




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开始的存储空间都全部清零:

Learning ADSP-TS201系列--SDRAM存储器_第3张图片



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

Learning ADSP-TS201系列--SDRAM存储器_第4张图片




最后printf输出在终端:












你可能感兴趣的:(Learning ADSP-TS201系列--SDRAM存储器)