您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> [求助]BF548  DDRram初始化问题
本帖共有2839个阅读者
发表帖子 发表投票 回复主题
[求助]BF548 DDRram初始化问题
sdmylyq(论坛新手)
sdmylyq
头衔:社区公民
帮派:无帮无派
帖数:13
金钱:210
积分:16
注册时间:2012/6/20
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
[求助]BF548 DDRram初始化问题

本人的开发板上得BF548芯片外接的DDR RAM为MT46V32M16 -5B,自己做的板子上用的内存是MT46V32M16 -6T。现在我写了小程序想测试下自己做的板子的DDR RAM 。程序如下:

void PLL_Init(void)
{
*pSIC_IWR0 |= 0x1;      // enable PLL wakeup,system interupt control SIC

*pPLL_CTL = 0x2000;   // (25MHz Xtal x (MSEL=20))::CCLK=400MH 核心时钟
idle();

*pPLL_DIV = 0x3;  // (400MHz/3)::SCLK=133MHz,系统时钟
ssync();
}

void Init_DDR(void)
{
    // release the DDR controller from reset state


    *pEBIU_RSTCTL |= 0x0001;
    ssync();

/* setup DDR controller for MT46V32M16 -5B*/


*pEBIU_AMGCTL = 0x0009;          //asynchronous memory global control register

*pEBIU_DDRCTL0 = 0x218A8287;
*pEBIU_DDRCTL1 = 0x20022222;
*pEBIU_DDRCTL2 = 0x00000021;//professor default
    ssync();

}

经过以上程序初始化后,向内存中写入数据

#define SDRAM_START  0x00000000   // start address of SDRAM
#define SDRAM_SIZE  0x00003FFF  // size of SDRAM in 32-bit words.  MT48LC32M8A2 32M x 16 bits (64 MB)

char TEST_SDRAM(void)
{

volatile unsigned int *pDst;
int nIndex = 0;

for(nIndex = 0, pDst = (unsigned int *)SDRAM_START; pDst < (unsigned int *)(SDRAM_START + SDRAM_SIZE); pDst++, nIndex++ )
{
      *pDst = nIndex;
       ssync();
}

}

从内存窗口观察,在开发板上得到的结果是正确的,在自己做的板子上得到的结果不对,我怀疑是我内存初始化的参数配置的不正确,希望高手能帮我看看,再次不胜感谢。


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2012/6/21 19:26:53
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5195
金钱:34806
积分:6378
注册时间:2011/6/7
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
发了2条一样的,帮你删了一条。

我是OP...
等级:管理员 参考IP地址:*.*.*.*
2012/6/21 22:28:32
sdmylyq(论坛新手)
sdmylyq
头衔:社区公民
帮派:无帮无派
帖数:13
金钱:210
积分:16
注册时间:2012/6/20
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

恩,是网页第一次没显示出来,我刷新了下就出来了两条。删除可以理解,高手咋没给点帮助呢?


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2012/6/22 0:35:18
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5195
金钱:34806
积分:6378
注册时间:2011/6/7
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

太晚了撒,都是正常上班的同学,不像我各处神游。明天再来看看把。


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2012/6/22 0:54:00
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

能否描述一下不正确是什么现象?

写不进去数据?

写入数据会串到别的地址?

写入数据会有固定位被强制置低或置高?

单步运行,写入数据正确,连续运行后,数据出现变更?

请详细描述遇到的是哪个异常情况,谢谢!


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2012/6/22 13:52:43
sdmylyq(论坛新手)
sdmylyq
头衔:社区公民
帮派:无帮无派
帖数:13
金钱:210
积分:16
注册时间:2012/6/20
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

能写入数据,但是会在某几个位置上出错,单步运行写入的数据也不对,而且相对稳定,每次都是到那个位置出错,我现在将出错的信息的截图发到论坛上,程序就是用的上面我写的那个段程序,截图中我用红色标注的就是内存中出错的位置。希望andy工程师能帮忙给看看,如果是硬件错误页要知道错在哪里啊,不然不知道如何改正啊。在线等,万分感激。


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2012/6/22 16:52:35
sdmylyq(论坛新手)
sdmylyq
头衔:社区公民
帮派:无帮无派
帖数:13
金钱:210
积分:16
注册时间:2012/6/20
6信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2012/6/22 16:58:41
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
7信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

数据线短接,焊接问题,你用万用表量一下是否数据线D0,D2,D4,D5之间是否有短路。



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

16根数据线都测了遍,没有短接的现象啊。还有没有别的原因的可能呢。调试的时候总是掉线出现以下提示

在下边信息栏还会出现Error reading target memory.  Address: 0x0, Length: 24


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2012/6/22 21:13:35
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
9信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

这个提示是仿真器死掉了,出现这个情况原因很多,比如仿真器接口松动,板卡硬件焊接问题,或者代码把处理器运行死了。

你打开你的memory窗口,找到地址0位置,然后手动输入一些数据,比如FF   aa  55 ,3A 等,你看是不是数据会变成不是你输入的,如果变了说明数据线短接,也可能会短到地址线。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2012/6/23 0:00:35
15
1
1/2
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159191 Call, 1 Queries, Processed in 0.031250 second(s),