DM8168样板制作过程,CCS测试DDR3时,GEL加载不通过:
遇到EVM816x DDR2/3 PRCM Init is Done .....卡住的问题。
一般是三个原因:
①fly-by结构的地址时钟命令线焊接不良。
②DDR3某芯片异常。
③时序参数改变,而寄存器并没有被正确配置。
①③情况还好解决,碰到②可以通过修改EMIF映射的方式回避损坏的DDR3芯片。
比如现成的案例是EMIF0异常,EMIF1正常,那么就可以只使用EMIF1。
EMIF0异常、EMIF1正常是怎么判断的呢?
GEL文件部分代码如下:
if(DDR3)
{
/* Setup a small refresh period */
WR_MEM_32(EMIF4_0_SDRAM_REF_CTRL, 0x0000613B); // Initially a large refresh period
WR_MEM_32(EMIF4_0_SDRAM_REF_CTRL, 0x1000613B); // Trigger initialization
WR_MEM_32(EMIF4_0_SDRAM_REF_CTRL, (0x10000000|SDREF)); // Move to a smaller more correct one
if(TWO_EMIF)
{
GEL_TextOut("\tInitializing EMIF1 ..... \n","Output",1,1,1);
/* Setup a small refresh period */
WR_MEM_32(EMIF4_1_SDRAM_REF_CTRL, 0x0000613B); // Initially a large refresh period
WR_MEM_32(EMIF4_1_SDRAM_REF_CTRL, 0x1000613B);