发新帖我要提问
12
返回列表
打印

已解决 -- 问题请教:SDRAM从32bit换为16bit,程序跑不起来

[复制链接]
楼主: nicholasldf
手机看帖
扫描二维码
随时随地手机跟帖
21
china_fog| | 2009-11-20 23:53 | 只看该作者 回帖奖励 |倒序浏览
17楼的说的基本没错

使用特权

评论回复
22
nicholasldf|  楼主 | 2009-11-21 09:08 | 只看该作者
20# wangkj

我想也是,软件只要、初始化SDRAM为16bit,没有什么地方要改的了。

17楼说的对,我在EBD9260开发板验证了,在at91bootstrap把SDRAM初始化为16bit,其他什么都不变(包括应用程序),程序运行OK。从这一点,我更觉得应该是硬件有问题。

昨天临下班,硬件工程师发现奇怪的问题:
      用SAMBA从dataflash回读刚烧写进去的程序文件,发现烧写了at91bootstrap时,会将ucos应用程序破坏掉,烧写应用程序时,会将at91bootstrap破坏掉。在这之前还没有出现这种现象。
      我们是用接在SPI0 CS0的DataFlash存储程序的,从0x0000-0x7FFF共32K给at91bootstrap,从0x8000开始存放应用程序。
     在EBD9260开发板,不会有这样的问题。

使用特权

评论回复
23
wangkj| | 2009-11-21 10:03 | 只看该作者
让硬件工程师加班吧。

使用特权

评论回复
24
wangkj| | 2009-11-21 10:03 | 只看该作者
:lol

使用特权

评论回复
25
五谷道场| | 2009-11-21 12:33 | 只看该作者
由32位改为16位,地址线和DQM引脚都应该做相应变化

使用特权

评论回复
26
desert_hawk| | 2009-11-21 13:57 | 只看该作者
由32位改为16位,地址线和DQM引脚都应该做相应变化,不知道楼主是怎么接的。
desert_hawk 发表于 2009-11-19 12:29

呵呵,我把s3c2440和这个弄混了。:L

使用特权

评论回复
27
nicholasldf|  楼主 | 2009-11-23 16:42 | 只看该作者

找到原因了,问题解决了

本帖最后由 nicholasldf 于 2009-11-23 16:47 编辑

     首先,谢谢大家帮忙分析!:handshake
     百特的刘工过来帮忙找到了原因。十分谢谢他,否则又要白费人力了。
我总结了大致如下:

    at91sam9260内部的romboot要利用SDRAM来烧写或读取dataflash程序,我之前一直以为romboot的运行过程中只使用内部SRAM,不会用到SDRAM;
    烧程序时,romboot先从PC机接收程序文件并放置在SDRAM,再从SDRAM烧写到dataflash;
    给PC机上传程序时,先读取dataflash的内容并放置到SDRAM,再从SDRAM上传到PC机;
    所以SDRAM很重要,没有SDRAM将不能烧写和读取程序。SAMBA软件默认的配置是32bit的SDRAM,所以换成16bit的SDRAM时,要修改配置。
    首先是SDRAM的宽度改为16bit,否则会烧写程序会出错;
    再次是dataflash的时钟速率,因为16bit的SDRAM速度比32bit慢,所以romboot跟dataflash通信的速度也要相应的调低,否则烧写和读取都会出错。所以之前出现了“程序烧不进去、烧了at91bootstrap后擦除了应用程序、烧写应用程序发现at91bootstrap也会被损坏、读取的dataflash程序跟烧写进去的程序不一致”...等现象。
    在SAMBA软件配置中,9260EK目录下,在SDRAM.tcl,设置AT91C_SDRAMC_DBW_16_BITS来改变SDRAM宽度。在DATAFLASH.tcl,修改variable DATAFLASH_CLK为1000000调低dataflash的操作时钟速率。

    从中,我觉得atmel的SAMBA文档应该提到这些问题,就像SDRAM改为16bit,SAMBA配置要做何调整,否则,用户很难定位原因。

使用特权

评论回复
28
深圳英贝德| | 2009-11-23 18:54 | 只看该作者
ATMEL的SAMBA软件总是改来改去的,不大可能提供文档,
今天还遇到了问题。

AT91SAM9261的板子,只有用SAMBA 2。6烧写才算OK。

使用特权

评论回复
29
深圳英贝德| | 2009-11-23 18:55 | 只看该作者
新版本的SAMBA一定要有外部SDRAM的支持, 如果不正确,SAMBA讲不能进行动作。

使用特权

评论回复
30
mohanwei| | 2009-11-23 20:11 | 只看该作者
4K的SRAM是有点小了,比较失败。

使用特权

评论回复
31
cool_coder| | 2009-11-23 23:16 | 只看该作者
我现在还在用SAMBA2.4,比较欣赏它的TCL脚本,很方便调试,后来的版本就完全不是这样了,改SDRAM线宽也要重新编译,太麻烦了。正因为喜欢2.4版,对它不支持的芯片,下载程序全是自己改的,累啊。不过对下载过程了解得比较透彻,也是一点收获。

使用特权

评论回复
32
cool_coder| | 2009-11-23 23:18 | 只看该作者
27楼提到的那些细节,在下载程序中都能看得到。

使用特权

评论回复
33
深圳英贝德| | 2009-11-24 08:46 | 只看该作者
我认可31楼的做法,非常好。
后面的版本确实很麻烦。

使用特权

评论回复
34
binghe41| | 2012-9-7 10:24 | 只看该作者
学习了

使用特权

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

本版积分规则