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.

[参考译文] TDA4VM:启动DDR ... SBL+OSPI闪存启动时挂起

Guru**** 2024750 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1100435/tda4vm-initlialzing-ddr-hang-when-sbl-ospi-flash-boot-up

部件号:TDA4VM

您好,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文件的比较

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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) {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


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中失败。

    1. "SPL"和"SBL"是指两个不同的源存储库吗?  
    2. 在比较通过事例与失败事例时,引导介质(SD卡与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)示意图。

    此致

    张娟

    e2e.ti.com/.../DDR-SCH.pdf 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Kevin

     初始化DDR时,我发现代码卡在CHECK Board_DDR_FSP_CLKCHNG_REQ_ADDR值中。

    MCU UART日志输出为:

    巴西
    Sancho

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    TDA4VM有一个类似的问题:在执行软复位时使用SBL在“启动DDR ...”时停止。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    感谢您提供更多信息。 此外,您是否可以在Board_DDRHWRegInit函数之前检查DDRSS_CTL_0 (地址0x299万)的值? 我想确认最低的位=0并且没有其他代码可能已经尝试初始化DDRSS。

    谢谢!
    Kevin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Kevin

    DDRSS_CTL_0 (地址0x299万)寄存器的值在  Board_DDRHWRegInit()函数之前为0x1046万。

    巴西

    Sancho

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Kevin

    更改DDR配置(阻抗参数和刷新时间)后,问题得到解决。
    感谢您的支持。

    巴西
    Sancho