您好,TI:
我们在自定义主板中使用DDR (MT53D1024M32D4DS-053:B (4 GB ,4266MHz)),并根据 spracu8.pdf配置新的DDR参数(K3-j721e-DDR-EVM-EVM-lp4-3200.dtsi用于SPL,board_ddrRegInit.h用于SBL)
它可以通过SPL+SD启动在我的自定义主板中启动,但当使用SBL+OSPI闪存启动时,它将在“启动DDR ...”时挂起。
初始化DDR时,我尝试在board_DDR.c和LPDDR4.c中添加一些调试消息,发现它在LPDDR4_StartSequenceController()函数中挂起。
这是我对LPDDR4.c文件的比较
diff --git a/packages/ti/csl/src/ip/lpddr/V0/priv/lpddr4.c b/packages/ti/csl/src/ip/lpddr/V0/priv/lpddr4.c
index 3b7f228..0924a9b 100644
--- a/packages/ti/csl/src/ip/lpddr/V0/priv/lpddr4.c
+++ b/packages/ti/csl/src/ip/lpddr/V0/priv/lpddr4.c
@@ -47,6 +47,9 @@
#include "lpddr4_ctl_regs_rw_masks.h"
#endif
+#include <ti/drv/uart/UART_stdio.h>
+#include <ti/drv/uart/UART.h>
+
#ifndef LPDDR4_CUSTOM_TIMEOUT_DELAY
#define LPDDR4_CUSTOM_TIMEOUT_DELAY 100000000U
#endif
@@ -248,6 +251,7 @@ uint32_t LPDDR4_Start(const LPDDR4_PrivateData* pD)
uint32_t result = 0U;
uint32_t regVal = 0U;
+ UART_printf("[xxx] in LPDDR4_Start start\n");
result = LPDDR4_StartSF(pD);
if (result == (uint32_t)CDN_EOK) {
LPDDR4_CtlRegs* ctlRegBase = (LPDDR4_CtlRegs*)pD->ctlBase;
@@ -258,8 +262,11 @@ uint32_t LPDDR4_Start(const LPDDR4_PrivateData* pD)
CPS_REG_WRITE((&(ctlRegBase->LPDDR4__PI_INIT_LVL_EN__REG)), regVal);
/* Start PI init sequence. */
+ UART_printf("[xxx] LPDDR4_StartSequenceController start\n");
result = LPDDR4_StartSequenceController(pD);
+ UART_printf("[xxx] LPDDR4_StartSequenceController end\n");
}
+ UART_printf("[xxx] in LPDDR4_Start end\n");
return result;
}
MCU UART日志输出为:

我上载DDR config文件 board_ddrRegInit,我希望它将有助于调查问题。
e2e.ti.com/.../7571.board_5F00_ddrRegInit.zip
SDK版本为07.03。
巴西
Sancho


