您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> BF561 SDRAM更新问题
本帖共有930个阅读者
发表帖子 发表投票 回复主题
BF561 SDRAM更新问题
liuhai2200(论坛新手)
liuhai2200
头衔:社区公民
帮派:无帮无派
帖数:69
金钱:636
积分:84
注册时间:2012/8/12
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
BF561 SDRAM更新问题

BF561+2片MT48LC16M16A,用论坛上BF533的SDRAM代码(修改后)可以对64Mbyte的SDRAM完成读写。但是,在代码中开了一个2Mbyte的数组,并把它映射到了SDRAM中(在sml3中#program section("sdram0")后添加的),接仿真器调试发现,每对数组完成一次赋值,内存中的数据被更新了,而不是不同的数组元素对应不同的i值。后来,将数组变小,分别映射到L1和L2内存中,都没有问题。不知道什么原因?

对数组操作的代码:

int i;

for(i=0;i<1024*1024;i++)

{

test_buffer[i]=i;

}


完成梦想
等级:论坛新手 参考IP地址:*.*.*.*
2012/11/21 14:31:22
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

可能SDRAM初始化没配对,或者硬件上地址线短接,都会出现这种情况。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2012/11/22 9:53:50
liuhai2200(论坛新手)
liuhai2200
头衔:社区公民
帮派:无帮无派
帖数:69
金钱:636
积分:84
注册时间:2012/8/12
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

谢谢版主,看了BF561 EZ-KTI的SDRAM例程,将初始化SDRAM的寄存器作了修改,问题解决。但还有点疑惑:

1、*pEBIU_SDBCTL寄存器中是关于4个bank的,现在我的板子上是两片2片MT48LC16M16A,容量64Mbyte,在寄存器的定义只用到了其中的Bank0,并将bank0的容量定义为64Mbyte,那其它几个bank在什么情况下用到,是不是当SDRAM大于128Mbyte时,还有我是否可以用其它的bank,而不用bank0?

2、2片MT48LC16M16A的容量是64Mbyte,它的寻址空间是0x00000000~0x03FFFFFF,那么地址段对应哪片SDRAM,虽然这个不影响使用,但是很想知道。

3、*pEBIU_SDGCTL中第31位:SDRAM extern data path width,这个跟SDRAM的数据宽度应该不是一个概念吧,这个怎么理解?

谢谢!


完成梦想
等级:论坛新手 参考IP地址:*.*.*.*
2012/11/22 15:10:22
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

1. BANK和你的硬件电路有关,BF561的SMS有4个,每个管脚控制一个bank,如果你硬件上没有用其他的三个,那么就不能使用其他的BANK。

2. BF561的数据线是32位的,你的SDRAM数据线是16位的,两个芯片拼成一个32位的数据,其中高16位和低16位存入不同的芯片中。

3. 指的是你SDRAM用的是16位的还是32位的,你的设计应该是32位的设计。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2012/11/23 15:24:35
liuhai2200(论坛新手)
liuhai2200
头衔:社区公民
帮派:无帮无派
帖数:69
金钱:636
积分:84
注册时间:2012/8/12
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

嗯,关于第二点,按你的意思理解就是如果存储连续的2个字节数据,它们是分别放在两片SDRAM中,但地址却是连续的?

好的,硬件中设计是将BF561的D0~D31分别连到两片SDRAM的D0~D15,有点容易将与单片SDRAM的数据宽度混淆。


完成梦想
等级:论坛新手 参考IP地址:*.*.*.*
2012/11/23 16:53:37
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

2个字节是16bit,将全部写在连接在D0-D15数据线的SDRAM中。

BF561的SDRAM是32bit访问的,操作一次数据是4个byte.,D0~D15写在第一个SDRAM中,D16~D31写在第二个SDRAM中,你从硬件连接上可以看出。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2012/11/24 14:08:22
liuhai2200(论坛新手)
liuhai2200
头衔:社区公民
帮派:无帮无派
帖数:69
金钱:636
积分:84
注册时间:2012/8/12
6信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

嗯,哈哈,不好意思,说错了。谢谢版主。


完成梦想
等级:论坛新手 参考IP地址:*.*.*.*
2012/11/25 19:28:28
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.154180 Call, 1 Queries, Processed in 0.031250 second(s),