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




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

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 存储空间分配






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








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输出在终端:












  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值