This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
你好,我们的板是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)就死掉。
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
hi, Eggsy,
谢谢你的支持.
我们的板由于空间的问题,JTag没有引出来, 如果能够提供一份基于25MHz晶振的MLO给我们做software level会更好, 不过还是谢谢你提供的文件。
目前DDR3不工作的问题,已经找到原因,是layout工程师将一个电容和一个电阻的丝印放反位置,导致VDDR_REF不正常,换回来后,现在DDR3跑400M已经可以正常工作了。