Initialize DSP main clock = 100.00MHz/1x10 = 1000MHz
Initialize DDR speed = 66.67MHzx/1x20 = 1333.333MTS
DDR3 leveling has failed, STATUS = 0x40000064
这是打印出的信息 ,可否请各位大神 指点一下迷津,如何解决 ,谢谢了!
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.
Initialize DSP main clock = 100.00MHz/1x10 = 1000MHz
Initialize DDR speed = 66.67MHzx/1x20 = 1333.333MTS
DDR3 leveling has failed, STATUS = 0x40000064
这是打印出的信息 ,可否请各位大神 指点一下迷津,如何解决 ,谢谢了!
int KeyStone_DDR_full_leveling()
{
Uint32 uwStatus;
/*enable full leveling*/
gpDDR_regs->RDWR_LVL_RMP_CTRL =
(unsigned int)(1<<CSL_EMIF4F_RDWR_LVL_RMP_CTRL_REG_RDWRLVL_EN_SHIFT);
/*start full leveling*/
gpDDR_regs->RDWR_LVL_CTRL =
(unsigned int)(1<<CSL_EMIF4F_RDWR_LVL_CTRL_REG_RDWRLVLFULL_START_SHIFT);
/*Read back any of the DDR3 controller registers.
This ensures full leveling is complete because this step is executed
only after full leveling completes.*/
uwStatus= gpDDR_regs->RDWR_LVL_RMP_CTRL; //dummy read
//Wait 3ms for leveling to complete
TSC_delay_ms(3);
if(gpDDR_regs->STATUS&(CSL_EMIF4F_STATUS_REG_RDLVLGATETO_MASK
|CSL_EMIF4F_STATUS_REG_RDLVLTO_MASK
|CSL_EMIF4F_STATUS_REG_WRLVLTO_MASK))
{
printf("DDR3 leveling has failed, STATUS = 0x%x\n", gpDDR_regs->STATUS);
uwStatus = 1;
return uwStatus;
}
uwStatus = 0;
return uwStatus;
}
这是校正函数代码,修改哪里能解决这个问题呢?
Hi Mingzi
We tried this project in our EVM, but not found this issue.
Could you use other EVM to have a try too?
我後來使用把這個範例程式中 KeyStone_DDR_init() function 裡面呼叫 C6678_EVM_DDR_Init() 的那行 mark 掉,改用 CCS 提供的 GEL (i.e. evmc6678l.gel) 中的 ddr3_setup_auto_lvl_1333() 來設定 DDR3,這樣在 TMDSEVM6678LXE 板子上執行 Memory Test 就不會遇到 "DDR3 leveling has failed" 問題,記憶體測試也都正常。
所以我想問題應該是 STK 範例程式的 C6678_EVM_DDR_Init() 對 DDR3 的設定不適用於TMDSEVM6678LXE 板子(有 security accelelrtor 版本)。但我不能確定是兩種不同的 DDR3 晶片問題還是 兩種不同的 C6678 晶片問題。