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.
您好,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
您好,TI:
我之前提到的DDR部件号是错误的, 正确的是 MT53E1G32D2FW-046 AUT:A (4 GB ,4266MHz)。
巴西
Sancho
您好,
您提到它在SPL + SD卡上工作正常,在SBL + OSPI中失败。
是否可以在startsequencecontrler功能中添加更多的打印日志?
谢谢!
Kevin
你好,Kevin
1.是的,SPL由Linux SDK构建:2020.01 TI-processor-SDK-Linux-J7-EVM-07_03_00_05/board-support/u-boot-SPL+gitAUTOINC+278.1231万a33-g2781231a33</s>278.1231万
RTOS SDK中的SBL构建:TI-processor-SDK-RTOS-j721e-EVM-VM-07_03_00_07/PDK_Jacinto _07_03_00_29/packages/ti/boot/SBL
2.我还尝试使用SPL + OSPI,它在我的定制板中成功启动,所以我认为区别仅在于SBL和SPL。
3.好的,我将在一天内在LPDDR4_StartSequenceController()函数中添加更多调试消息和反馈。
巴西
Sancho
大家好,
随附DDR4 (MT53E1G32D2FW-046 AUT:A)示意图。
此致
张娟
你好,Kevin
初始化DDR时,我发现代码卡在CHECK Board_DDR_FSP_CLKCHNG_REQ_ADDR值中。
MCU UART日志输出为:
巴西
Sancho
您好,
感谢您提供更多信息。 此外,您是否可以在Board_DDRHWRegInit函数之前检查DDRSS_CTL_0 (地址0x299万)的值? 我想确认最低的位=0并且没有其他代码可能已经尝试初始化DDRSS。
谢谢!
Kevin
你好,Kevin
DDRSS_CTL_0 (地址0x299万)寄存器的值在 Board_DDRHWRegInit()函数之前为0x1046万。
巴西
Sancho
你好,Kevin
更改DDR配置(阻抗参数和刷新时间)后,问题得到解决。
感谢您的支持。
巴西
Sancho