TI中文支持网
TI专业的中文技术问题搜集分享网站

AM3358使用DDR Software level tool的MLO遇到的问题

你好,我们的板是AM3358BZCZ80+MT41J256M16JT-125, 使用TI的用于DDR software level的MLO是,超级终端乱码.

我的主晶振是25MHz的,是否可以提供一个基于25MHz的MLO给我们进行DDR3 software level。

另外,使用25MHz晶振,是否之需要修改/include/configs/am335x_evm.h中的V_OSCK,我们现在出现的问题是修改这个参数后,uboot201605, 在SPL阶段死在GPMC_init中,用点LED的方式发现只要调用writel(0x00000008,&gpmc_cfg->sysconfig)就死掉。

Wu Jun:

补充说明一下,使用DDR software level的MLO会乱码,使用我自己编译的MLO不会乱码,但是卡死在GPMC_init的写GPMC寄存器中。

Wu Jun:

回复 Wu Jun:

今天的调试发现,写gpmc寄存器时死掉了: writel(0x00000008,&gpmc_cfg->sysconfig)

但是改成writel(0x00000008,0x50000010)时可以正常执行,不会死掉

????

Denny%20Yang99373:

回复 Wu Jun:

先看看启动配置有没有配对

Denny%20Yang99373:

回复 Denny%20Yang99373:

https://e2e.ti.com/support/arm/sitara_arm/f/791/p/554626/2027572?keyMatch=AM335X%2025MHZ&tisearch=Search-EN-Everything

Wu Jun:

回复 Denny%20Yang99373:

hi, Denny, 你好.

启动配置没有问题,我们的设置是: LCD[15:0]=1000000000010X11, X通过跳线选择MMC0或者NAND启动.

另外我们通过从TI官网下载的3分excel文件对OSC, DDR3进行了配置:

1, AM335x_DDR_register_calc_tool.xls

2, RatioSeed_AM335x_boards.xls

3, AM335x_DPLL_Settings_v3.xls

我们的DDR3的部分是参考的BeagleBone Black的2014年4月9号的原理图设计的,只是将DDR3L换成了DDR3, 并且将TPS65217换成了TPS65910A3.

目前的现象是:

1, 使用TI的DDR software level tool的MLO时,超级终端乱码, TI的MLO是否以24M晶振为基础编译的,是否可以提供一份基于25M晶振的MLO给我.

2, 我们自己编译的MLO已经修改成25M晶振, 超级终端不会乱码,但是SPL死在GPMC_init函数的writel(0x00000008,&gpmc_cfg->sysconfig)这一行.我在这一行之前增加以下的代码测试:

writel(0x12345678,(unsigned int *)0x83000000);

writel(0x87654321,(unsigned int *)0x83000010);

myLed(11); //这个是点LED程序,通过writel函数写GPIO寄存器,点亮不同的LED

putnum(readl((unsigned int *)0x83000000); //将指定地址的值转换成16进制ASCII发送到超级终端(函数中是调用puts) 

putnum(readl((unsigned int *)0x83000010); //将指定地址的值转换成16进制ASCII发送到超级终端(函数中是调用puts) 

运行的结果是, 第一个putnum显示的是随机数, 第二个putnum显示的始终是0.

但是如果我用以下的例子:

writel(0x12345678,(unsigned int *)0x83000000);

putnum(readl((unsigned int *)0x83000000); //将指定地址的值转换成16进制ASCII发送到超级终端(函数中是调用puts) 

超级终端就能够正确显示出:12345678

从现象分析看,就好像AM3358没有对SDRAM进行刷新,导致SDRAM数据丢失了.

SDRAM设置303M,400M都是过, 手工修改过SDRAM几个寄存器设定值,均是上述现象, 在设定DDR频率为400MHz时,几个SDRAM寄存器的设定是:

#define EMIF_OCP_CONFIG_AM335X_EVM 0x00141414

#define MT41J256M16JT125_EMIF_READ_LATENCY 0x07

#define MT41J256M16JT125_EMIF_TIM1 0x0AAAD4EC#define MT41J256M16JT125_EMIF_TIM2 0x366B7FE3#define MT41J256M16JT125_EMIF_TIM3 0x501F867F#define MT41J256M16JT125_EMIF_SDCFG 0x61C05332#define MT41J256M16JT125_EMIF_SDREF 0x0C30#define MT41J256M16JT125_ZQ_CFG 0x50074BE4#define MT41J256M16JT125_RATIO 0x80#define MT41J256M16JT125_INVERT_CLKOUT 0x0#define MT41J256M16JT125_RD_DQS 0x38#define MT41J256M16JT125_WR_DQS 0x44#define MT41J256M16JT125_PHY_WR_DATA 0x76#define MT41J256M16JT125_PHY_FIFO_WE 0x94#define MT41J256M16JT125_IOCTRL_VALUE 0x18B

Eggsy Pang:

回复 Wu Jun:

我有一个gel文件,你可以尝试一下

Wu Jun:

回复 Eggsy Pang:

hi, Eggsy,

谢谢你的支持.

我们的板由于空间的问题,JTag没有引出来, 如果能够提供一份基于25MHz晶振的MLO给我们做software level会更好, 不过还是谢谢你提供的文件。

目前DDR3不工作的问题,已经找到原因,是layout工程师将一个电容和一个电阻的丝印放反位置,导致VDDR_REF不正常,换回来后,现在DDR3跑400M已经可以正常工作了。

赞(0)
未经允许不得转载:TI中文支持网 » AM3358使用DDR Software level tool的MLO遇到的问题
分享到: 更多 (0)