在C6657自制板上跑DDR的初始化,上电第一次加载DDR初始化正常通过,不掉电再次debug的话DDR初始化就会报错,STATUS=0x64,提示leveling time out。
现在发现在C6657_EVM_DDR_Init(DDR_Clock_MHz, ecc_cfg)函数中子函数KeyStone_DDR_latch_leveling_configuration之后加一段13us延时,即使不掉电DDR初始化也可以通过。
void KeyStone_DDR_latch_leveling_configuration ()
{
/*the PHY_RESET is pulsed (0 -> 1 -> 0) to latch
leveling configuration values into the PHY logic.*/
gpDDR_regs->DDR_PHY_CTRL_1 &= ~(0x00008000);
gpDDR_regs->DDR_PHY_CTRL_1 |= (0x00008000);
gpDDR_regs->DDR_PHY_CTRL_1 &= ~(0x00008000);
}
TSC_delay_us(13);
请教一下这可能是什么原因。