在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);
请教一下这可能是什么原因。
Shine:
在重新debug前,试试在ccs里reset CPU。
user5306918:
回复 Shine:
reset没有作用
Shine:
回复 user5306918:
请看一下下面帖子里的方法。看一下有没有定义 /* This flag implements a workaround to re-initialize PLL and DDR if DDR test after DDR initialization */ #define PLATFORM_PLL_REINIT #define PLL_REINIT_DDR3_TEST_START_ADDR (0x80000000) #define PLL_REINIT_DDR3_TEST_END_ADDR (PLL_REINIT_DDR3_TEST_START_ADDR + (128 * 1024)) / 还有partial automatic leveling registers 寄存器的值。 e2e.ti.com/…/884741