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

[复制链接]
3615|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位的了。
 楼主| phuture 发表于 2011-4-27 17:27 | 显示全部楼层
是关于设置SDRAM的寄存器。
snowflyin 发表于 2011-4-27 17:38 | 显示全部楼层
sdram初始化的时候,要设定成16位 的
 楼主| phuture 发表于 2011-4-27 17:42 | 显示全部楼层
6# snowflyin 这个我设置了啊,就是那段代码里就有的。
 楼主| phuture 发表于 2011-4-27 17:49 | 显示全部楼层
#define AT91C_SDRC_MR   ((AT91_REG *)         0xFFFFFF90)
// (SDRC) SDRAM Controller Mode Register


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


现在就是不知道该改那个地方的设置了。。。
盈安信科技 发表于 2011-4-29 21:37 | 显示全部楼层
手册里面已经有相关说明,请仔细查看DATASHEET./
dwywwz 发表于 2011-5-6 10:30 | 显示全部楼层
我感觉是地址线错位啦。应该是ADD01对应A0,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部