打印

新手求助9200使用16位SDRAM问题

[复制链接]
2405|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
phuture|  楼主 | 2011-4-27 16:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 phuture 于 2011-4-27 18:01 编辑

本人是ARM新手一只,最近开始研究9200。
手上的开发板是9200带两个16位组成的32位SDRAM。

现在我画的是只带一个16位的SDRAM,不知道是不是接线有问题。

程序在内部sram当中正常运行,但是在外部sdram当中就没**常调试。。。

我用的是MDK 3。

总是报错:*** error 56, line 36: cant open file

请各位用过9200的大大们帮忙看看吧。。。

上图:

相关帖子

沙发
yan2005| | 2011-4-27 16:49 | 只看该作者
1片SDRAM可以用的。原来2片的SDRAM的电路不变,把高位的芯片去掉,就变成了1片SDRAM的电路了。

要在软件上把总线带宽设备16BIT。如果是用仿真器调试,在LOAD之前,也要把总线带宽先配置为16BIT.

使用特权

评论回复
板凳
phuture|  楼主 | 2011-4-27 17:13 | 只看该作者
    在找问题的时候,也在考虑是不是编译器的设置方面有问题:导致没有正确地初始化SDRAM。从而使程序没法运行。          把我的设置情况也说说,请大家帮忙看看:

    这个设置是用于测试SDRAM的工程。
    将代码下载到片内ram中执行,将数据写到片外的SDRAM,检查SDRAM能否正确写入和读出数据。
  
    首先是地址范围:
    然后是这个:
    最后是.ini 文件当中添加了一段初始化SDRAM的代码:

  _WDWORD(0xFFFFF804, 0xFFFF0000);      // PIOC_PDR: Enable Peripheral Mode  


  _WDWORD(0xFFFFFF60, 0x00000002);      // EBI_CSA: CSA1 support for SDRAM


  _WDWORD(0xFFFFFF98, 0x22913959);      // Init SDRAM  这个是我自己根据dadasheet改的
  _WDWORD(0xFFFFFF90, 0x00000012);
// All-bank-precharge mode = 2 (0-3)

  _WDWORD(0x20000000, 0);
  _WDWORD(0xFFFFFF90, 0x00000014);
// refresh

  _WDWORD(0x20000000, 0);
  _WDWORD(0x20000000, 0);
  _WDWORD(0x20000000, 0);
  _WDWORD(0x20000000, 0);
  _WDWORD(0x20000000, 0);
  _WDWORD(0x20000000, 0);
  _WDWORD(0x20000000, 0);
  _WDWORD(0x20000000, 0);
   // wait for 8 write clocks

  _WDWORD(0xFFFFFF90, 0x00000013);
   // Load Mode Register

  _WDWORD(0x20000080, 0);
   // ???

  _WDWORD(0xFFFFFF94, 0x000002E0);
  _WDWORD(0x20000000, 0);
  _WDWORD(0xFFFFFF90, 0x00000000);
  _WDWORD(0x20000000, 0);


有没有设置有误或者考虑不周的地方,请大大们指点一下。。。

使用特权

评论回复
地板
phuture|  楼主 | 2011-4-27 17:26 | 只看该作者
2# yan2005
谢谢2楼的朋友。

我用的是MDK3+J-link。
3楼的第二个图那个设置有把32位改成16位的选项。
我理解那个应该是.s文件的图形化配置界面吧。。。我把里面关于SDRAM的配置改成16位了。

其他地方没有找到,J-link的设置里也没有。
还需要改什么地方吗?

对了在.ini文件,也就是3楼第一个图的debug选项里的初始化文件里,我增加了SDRAM的初始化代码。在寄存器设置上也改成16位的了。

使用特权

评论回复
5
phuture|  楼主 | 2011-4-27 17:27 | 只看该作者
是关于设置SDRAM的寄存器。

使用特权

评论回复
6
snowflyin| | 2011-4-27 17:38 | 只看该作者
sdram初始化的时候,要设定成16位 的

使用特权

评论回复
7
phuture|  楼主 | 2011-4-27 17:42 | 只看该作者
6# snowflyin 这个我设置了啊,就是那段代码里就有的。

使用特权

评论回复
8
phuture|  楼主 | 2011-4-27 17:49 | 只看该作者
#define AT91C_SDRC_MR   ((AT91_REG *)         0xFFFFFF90)
// (SDRC) SDRAM Controller Mode Register


这个地址的第五位是1的话,就将SDRAM设置为16位模式。
上面的代码里倒数第二句那个设错了。
我改成_WDWORD(0xFFFFFF90, 0x00000010);
结果还是不行。。。。。。


现在就是不知道该改那个地方的设置了。。。

使用特权

评论回复
9
盈安信科技| | 2011-4-29 21:37 | 只看该作者
手册里面已经有相关说明,请仔细查看DATASHEET./

使用特权

评论回复
10
dwywwz| | 2011-5-6 10:30 | 只看该作者
我感觉是地址线错位啦。应该是ADD01对应A0,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

7

帖子

0

粉丝