ttxs_2013 发表于 2013-12-31 21:56

SDRAM读写问题

SDRAM读写,感觉内容很多啊,数据手册上有一百多页,这几天看了一些,对SDRAM的整个工作原理有了一些认识,但就实验而言,感觉整个的思路还没理清楚,我是按照以实验代码为基础,哪里不明白研究哪里的,希望大家帮我捋一捋这几个问题:(用的是C5509A)

1、对SDRAM 的读写需要做哪些设置?或者说必要的设置有哪些?除了代码中出现的CE空间,还有SDRAM的几个寄存器外。
2我对CE空间的理解是这样的:

CE空间是存放的不同的外部存储器的地址的在内存中的映射空间,应该说不同CE0—CE3空间对应不同的外部存储器(异步存储器,同步突发静态、同步动态存储器),在程序中哪里可以体现出来,EMIF配置结构体里面所有的CE空间都进行了初始化,为什么不是用什么初始化什么?

3、数据手册中提到了刷新请求,自刷新,自动刷新 需不需要深入理解,SDRAM刷新时,会用到SDRAM周期寄存器和计数寄存器,而计数寄存器在程序中并没 有进行相应设置,不影响吗?

4、在SDRAM初始化和发送刷新命令时都有相应的时序图,对于这两个时序图,有一些疑点:
   (1)SRAM的初始化的为什么是CE空间,有什么作用?而不是初始化存储单元
   (2) 时序图中的tRP+ 、tRC+、tMRD+   这几个时间间隔是不是就是SDRAM控制寄存器中出现的TRPTRCTMRD ? 为什么不同的命令之间会有时间间隔?
   (3)行列地址选通信号和写使能 应该是寻址L-bank和存储单元才用到,SDRAM初始化过程中怎么去理解?
   (4) 在SDRAM的读时序图中,地址总线上出现的COL1和COL2是什么意思?

5、什么是SDRAM的未激活状态?看数据手册没看明白。
(添加不了图片)

zhangmangui 发表于 2014-1-1 11:37

SDRAM可以和5509A无缝连接    至于配置我也没细细研究
参考基于CSL的配置   然后只是基于基地址进行的读写

ttxs_2013 发表于 2014-1-3 19:27

zhangmangui 发表于 2014-1-1 11:37 static/image/common/back.gif
SDRAM可以和5509A无缝连接    至于配置我也没细细研究
参考基于CSL的配置   然后只是基于基地址进行的读 ...

谢啦,我已经把思路理清楚了,其实上面的问题并不影响对整个实验的理解,知道最好,不知道没必要刨坑问底。

ttxs_2013 发表于 2014-1-3 19:32

ttxs_2013 发表于 2014-1-3 19:27 static/image/common/back.gif
谢啦,我已经把思路理清楚了,其实上面的问题并不影响对整个实验的理解,知道最好,不知道没必要刨坑问底 ...

但是在下载程序的时候为什么迟迟没有测试结果?好像暂定运行也不行资料上说如果SDRAM的配置不对,就会造成仿真死机现象,最好先用GEL文件进行初始化测试环境,方法是file—》load GEL ,但下载报错
GEL: Error loading file 'E:\ccs3.3\Code-Easy5509\EX14_SDRAM\c5509.gel': function 'StartUp()' already defined
你遇到过这种情况没?了解不?

zhangmangui 发表于 2014-1-3 19:45

ttxs_2013 发表于 2014-1-3 19:32 static/image/common/back.gif
但是在下载程序的时候为什么迟迟没有测试结果?好像暂定运行也不行资料上说如果SDRAM的配置不对,就会 ...

编译没有错误吗   还是只是下载的时候出的问题
如果只是下载出的问题   不知道程序跑起来结果是否正确
你双击打开c5509.gel看看StartUp这个函数

ttxs_2013 发表于 2014-2-27 20:51

zhangmangui 发表于 2014-1-3 19:45 static/image/common/back.gif
编译没有错误吗   还是只是下载的时候出的问题
如果只是下载出的问题   不知道程序跑起来结果是否正确
你 ...

下载gel 文件报错,错误就是StartUp这个函数已经定义了,打开gel文件,
/* The Startup() function is executed when the GEL file is loaded. */

StartUp()
{
        C5509_Init();

        GEL_TextOut("Gel StartUp Complete.\n");
}
这个能说明什么问题?在gel文件中能够看出什么?搞不懂

zhangmangui 发表于 2014-2-27 22:01

ttxs_2013 发表于 2014-2-27 20:51 static/image/common/back.gif
下载gel 文件报错,错误就是StartUp这个函数已经定义了,打开gel文件,
/* The Startup() function is ex ...
我这边的也是这样    不知道什么原因 你的报错

ttxs_2013 发表于 2014-2-27 22:10

zhangmangui 发表于 2014-2-27 22:01 static/image/common/back.gif
我这边的也是这样    不知道什么原因 你的报错

观察databuffer的值的话,其值还是有的,是因为程序运行需要一定时间?这个也没道理呀
另外还发现,在程序还在运行时,进行其他操作,总会会出现报错信息,接着就死机,遇到很多次了,不知道版主有没有用过v4的?v4的支不支持现在的代码?

zhangmangui 发表于 2014-2-27 22:18

ttxs_2013 发表于 2014-2-27 22:10 static/image/common/back.gif
观察databuffer的值的话,其值还是有的,是因为程序运行需要一定时间?这个也没道理呀
另外还发现,在程 ...

在程序运行的时候   比如进行右击add to buffer 或者view下观察时域波形等
出现突然断开或者死机   我个人觉得还是与仿真器稳定性有关系
用3.3也经常遇到这种问题   与v4关系不大吧

ttxs_2013 发表于 2014-2-27 22:27

zhangmangui 发表于 2014-2-27 22:18 static/image/common/back.gif
在程序运行的时候   比如进行右击add to buffer 或者view下观察时域波形等
出现突然断开或者死机   我个 ...

现在用的就是3.3的,嗯,可能是和仿真器有关系,我感觉我的仿真器就不太稳定,有时候发现显示和板子连接上的指示灯亮暗不一样,而且大部分情况连接不上,都要动动仿真器的USB线才好。

ttxs_2013 发表于 2014-3-1 10:17

zhangmangui 发表于 2014-2-27 22:18 static/image/common/back.gif
在程序运行的时候   比如进行右击add to buffer 或者view下观察时域波形等
出现突然断开或者死机   我个 ...

这两天又是频繁的死机或连不上,跟买家联系了,说让寄回去看看,有问题给修,我不知道是自己操作不规范还是说仿真器真的有问题,版主觉得是不是该拿去给看看啊?

zhangmangui 发表于 2014-3-1 10:23

ttxs_2013 发表于 2014-3-1 10:17 static/image/common/back.gif
这两天又是频繁的死机或连不上,跟买家联系了,说让寄回去看看,有问题给修,我不知道是自己操作不规范还 ...

这个不好说仿真器一般不会出什么问题
还是要确保你的板子这边   实在连不上考虑换个CCS版本
再试试 不行了就返厂家吧

0226 发表于 2014-3-1 10:30

ttxs_2013 发表于 2014-3-1 11:02

zhangmangui 发表于 2014-3-1 10:23 static/image/common/back.gif
这个不好说仿真器一般不会出什么问题
还是要确保你的板子这边   实在连不上考虑换个CCS版本
再试试 不 ...

板子应该是没有问题的,可不可以同时安装v4.1,在一台机子上?

ttxs_2013 发表于 2014-3-1 14:20

关于程序空间的内存分配:你为什么这样分配?
MEMORY
{
    PAGE 0:

      MMR   : origin = 0000000h, length = 00000c0h
      SPRAM   : origin = 00000c0h, length = 0000040h
      VECS    : origin = 0000100h, length = 0000100h
      DARAM0: origin = 0000200h, length = 0003E00h
      DARAM1: origin = 0004000h, length = 0004000h
      DARAM2: origin = 0008000h, length = 0004000h
      DARAM3: origin = 000c000h, length = 0004000h

      SARAM0: origin = 0010000h, length = 0004000h
      SARAM1: origin = 0014000h, length = 0005000h
      SARAM2: origin = 0019000h, length = 0003000h
      SARAM3: origin = 001c000h, length = 0004000h
      SARAM4: origin = 0020000h, length = 0004000h
      SARAM5: origin = 0024000h, length = 0004000h
      SARAM6: origin = 0028000h, length = 0004000h
      SARAM7: origin = 002c000h, length = 0004000h
      SARAM8: origin = 0030000h, length = 0004000h
      SARAM9: origin = 0034000h, length = 0004000h
      SARAM10 : origin = 0038000h, length = 0004000h
      SARAM11 : origin = 003c000h, length = 0004000h
      SARAM12 : origin = 0040000h, length = 0004000h
      SARAM13 : origin = 0044000h, length = 0004000h
      SARAM14 : origin = 0048000h, length = 0004000h
      SARAM15 : origin = 004c000h, length = 0004000h

      CE0   : origin = 0050000h, length = 03b0000h
      CE1   : origin = 0400000h, length = 0400000h
      CE2   : origin = 0800000h, length = 0400000h
      CE3   : origin = 0c00000h, length = 03f8000h

      PDROM   : origin = 0ff8000h, length = 07f00h
   /*   VECS    : origin = 0ffff00h, length = 00100h */ /* reset vector */
}      
而例程是这样的
MEMORY
{
PAGE 0:
    PROG0(RWX)    : origin = 04000h   length = 08000h资料显示CE0是从040000开始的,写入的SDRAM数据的地址也是从040000开始的,这里怎么是04000h?
    P_VECT(RIX)   : origin = 0FF80h   length = 00080h
PAGE 1:
    DATA0(RW)   : origin = 0C000h   length = 04000h
}
有没有区别?

zhangmangui 发表于 2014-3-1 22:55

ttxs_2013 发表于 2014-3-1 11:02 static/image/common/back.gif
板子应该是没有问题的,可不可以同时安装v4.1,在一台机子上?

可以我就安装了就是看看你的仿真器支持不?

zhangmangui 发表于 2014-3-1 22:58

ttxs_2013 发表于 2014-3-1 14:20 static/image/common/back.gif
关于程序空间的内存分配:你为什么这样分配?
MEMORY
{


一个只是分的细而已0x4000H这是DSP内部的RAM区   0x40000开始才是CE0

ttxs_2013 发表于 2014-3-2 09:18

zhangmangui 发表于 2014-3-1 22:58 static/image/common/back.gif
一个只是分的细而已0x4000H这是DSP内部的RAM区   0x40000开始才是CE0

是啊,DRAM是从04000H开始的,按照例程的长度是08000H,结束地址是04000+08000H=0c000H,而0c000H
还在DRAM区,那怎么会分配到CE空间呢?

ttxs_2013 发表于 2014-3-2 09:19

zhangmangui 发表于 2014-3-1 22:55 static/image/common/back.gif
可以我就安装了就是看看你的仿真器支持不?

安装弹出了系统错误,没按成。

yangmm11 发表于 2014-11-17 17:09

zhangmangui 发表于 2014-3-1 22:58 static/image/common/back.gif
一个只是分的细而已0x4000H这是DSP内部的RAM区   0x40000开始才是CE0

0x4000H是内部的RAM区,为什么例程中.cmd可以这样分呢?
MEMORY
{
PAGE 0:
    PROG0(RWX)    : origin = 04000h   length = 08000h资料显示CE0是从040000开始的,写入的SDRAM数据的地址也是从040000开始的,这里怎么是04000h?
    P_VECT(RIX)   : origin = 0FF80h   length = 00080h
PAGE 1:
    DATA0(RW)   : origin = 0C000h   length = 04000h
}
这样分之后写入SDRAM中的数据地址是存在了DSP内部的RAM区吗?
页: [1] 2
查看完整版本: SDRAM读写问题