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.

[参考译文] Linux/DRA722:J6E 启动卡在 SPL 中

Guru**** 2550550 points
Other Parts Discussed in Thread: DRA722, CCSTUDIO

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/593294/linux-dra722-j6e-boot-up-stuck-in-spl

器件型号:DRA722
Thread 中讨论的其他器件: CCStudio

工具/软件:Linux

大家好、

我们拥有自定义子板+自定义 DRA722 CPU 模块板,带有 uboot 2014.07,采用 glsdk 7.03.00.3,但我们的某些 CPU 模块通过 MP 行进行筛选是坏的。

由于这些 CPU 模块无法成功引导,因此引导日志只打印4行。

U-Boot SPL 2014.07 (2017年4月26日- 16:16:36)
DRA722-GP ES1.0
DPLL 在4a0052a8
###错误###请重置电路板###时锁定失败 

我跟踪了源代码、发现该函数上出现了问题、

如果(!WAIT_ON_VALUE (ST_DPLL_CLK_MASK、ST_DPLL_CLK_MASK、
(void *) DPLL_regs->cm_idfore_DPLL、LDELAY)){
printf ("DPLL 锁定0x%x\n"时失败、
DPLL_regs->cm_clkmode_DPLL);
hang();
} 

您能给我们一些调试的方向吗? (这应该是硬件问题,但我们想知道哪个部分是 NG)

我期待你的答复,谢谢。

此致、

鲍伊·任

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

    任您好、

    [报价用户="Ren Bowei"]对于4a0052a8、DPLL 锁定失败

    4a0052a8是 CM_CLKMODE_DPLL_GMAC 寄存器的物理地址。 电路板的问题是无法锁定 DPLL_GMAC。

    [引用用户="Ren Bowei"]

    我跟踪了源代码、发现该函数上出现了问题、

    如果(!WAIT_ON_VALUE (ST_DPLL_CLK_MASK、ST_DPLL_CLK_MASK、
    (void *) DPLL_regs->cm_idfore_DPLL、LDELAY)){
    printf ("DPLL 锁定0x%x\n"时失败、
    DPLL_regs->cm_clkmode_DPLL);
    hang();
    } 

    [/报价]

    您提供 u-boot/arch/arm/cpu/armv7/am33xx/clock.c 的代码、但在我看来、此错误消息来自 u-boot/arch/arm/cpu/armv7/omap-common/clocks-common.c

    静态内联 void wait_for_lock (u32常量基址)

       struct DPLL_regs * const DPLL_regs =(struct DPLL_regs *) base;

       如果(!WAIT_ON_VALUE (ST_DPLL_CLK_MASK、ST_DPLL_CLK_MASK、
          &DPLL_regs->cm_idime_DPLL、LDELAY){
          printf ("%x\n"DPLL 锁定失败、base);
          hang();
       }

    您能否再次检查此消息是从 clock.c 还是 clocks-common.c 内生成的?

    [引用 user="Ren Bowei">您能给我们一些调试方向吗? (应该是硬件问题,但我们想知道哪个部分是 NG)

    检查 DPLL_GMAC 的源/参考时钟、将其与工作板进行比较。 源/基准时钟为 GMAC_DPLL_CLK、源自 SYS_CLK1 (OSC0)。

    另请检查 VDDA_CORE_GMAC 模拟电源、它应为1.8V、最大噪声(峰峰值)为50mVppmax

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您还可以检查 OSC0参数、确保它满足 DRA72x DM 第6.1.2.1节 OSC0外部晶体中所述的要求
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Pavel:

    我已检查 VDDA_CORE_GMAC 的电压和 GMAC_DPLL_CLK 的时钟。 它们都是正确的。

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


    您是否检查了 OSC0参数? 确保它满足 DRA72x DM 第6.1.2.1节 OSC0外部晶振中所述的要求。

    您还可以使用 CCStudio 并运行 GEL 文件来查看 DPLL_GMAC 是否会锁定在此处。 有关更多信息、请参阅以下指针:

    www.ti.com/.../sprac17a.pdf

    ccsv6/ccs_base/emulation/gel/DRA72x/DRA72x_prcm_config.gel -> DPLL_GMAC_CONFIG ()、DRA72x_PRCM_Clock_getconfig ()、DRA72x_PRCM_Clock_Config_API ()

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

    我通过 CCStudio 运行 DRA72x_prcm_config.gel、但我找不到 DPLL_GMAC_CONFIG ()和 DRA72x_PRCM_Clock_Config_API ()。
    DRA72x_PRCM_Clock_getconfig()的结果如下:
    ================================================================================================================================================
    CortexA15_0:GEL 输出:-->读取 DPLL 配置...<<---
    CortexA15_0:GEL 输出: 频率值根据 M/N/等...
    CortexA15_0:GEL 输出:MPU:
    CortexA15_0:GEL 输出:LOCK_MODE 模式下的 DPLL
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2速度为1041MHz
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2处于活动状态

    CortexA15_0:GEL 输出:内核:
    CortexA15_0:GEL 输出:LOCK_MODE 模式下的 DPLL
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2速度为554MHz
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2被门控

    CortexA15_0:GEL 输出:Abe:
    CortexA15_0:GEL 输出:IDLE_BYPASS_LOW_POWER 模式下的 DPLL
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2速度为0MHz
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2被门控

    CortexA15_0:GEL 输出:IVA:
    CortexA15_0:GEL 输出:IDLE_BYPASS_LOW_POWER 模式下的 DPLL
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2速度为0MHz
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2被门控

    CortexA15_0:GEL 输出:DDR:
    CortexA15_0:GEL 输出:LOCK_MODE 模式下的 DPLL
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2速度为693MHz
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2处于活动状态

    CortexA15_0:GEL 输出:DSP:
    CortexA15_0:GEL 输出:IDLE_BYPASS_LOW_POWER 模式下的 DPLL
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2速度为0MHz
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2被门控

    CortexA15_0:GEL 输出:GMAC:
    CortexA15_0:GEL 输出:LOCK_MODE 模式下的 DPLL
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2速度为260MHz
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2处于活动状态

    CortexA15_0:GEL 输出:GPU:
    CortexA15_0:GEL 输出:IDLE_BYPASS_LOW_POWER 模式下的 DPLL
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2速度为0MHz
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2被门控

    CortexA15_0:GEL 输出:PER:
    CortexA15_0:GEL 输出:LOCK_MODE 模式下的 DPLL
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2速度为100MHz
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2被门控

    CortexA15_0:GEL 输出:PCIe:
    CortexA15_0:GEL 输出:IDLE_BYPASS_LOW_POWER 模式下的 DPLL
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2速度为0MHz
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2被门控

    CortexA15_0:GEL 输出:不同模块的时钟输入:
    CortexA15_0:GEL 输出:IDLE_BYPASS_LOW_POWER 模式下的 DPLL
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2速度为0MHz
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2被门控

    CortexA15_0:GEL 输出:IPU1功能时钟是来自 ABE DPLL 的 CLKOUTX2_M2。
    CortexA15_0:GEL 输出:IPU1 CPU 速度为0MHz

    CortexA15_0:GEL 输出:IPU2功能时钟来自内核 DPLL (CLKOUTX2_H22)。
    CortexA15_0:GEL 输出:IPU2 CPU 速度为0MHz

    CortexA15_0:GEL 输出:GPU 内核时钟来自内核 DPLL (CLKOUTX2_H14)。
    CortexA15_0:GEL 输出:GPU 内核时钟速度为0MHz
    CortexA15_0:GEL 输出:GPU HYD 时钟来自内核 DPLL (CLKOUTX2_H14)。
    CortexA15_0:GEL 输出:GPU HYD 时钟速度为0MHz
    CortexA15_0:GEL 输出:-->读取 DPLL 配置...完成<<-->
    ================================================================================================================================================
    对于这些信息、是否有任何可疑点?

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

    Bowei、

    [引用 USER="Ren Bowei"]但我找不到 DPLL_GMAC_CONFIG ()和 DRA72x_PRCM_Clock_Config_API ()

    这些参数可从以下位置调用:

    DRA72x_PRCM_Clock_Config_OPPNOM_DRA72x_generic ()

    DRA72x_PRCM_Clock_Config_OPPNOM_DRA722 ()

    请尝试使用这两个函数。 在工作板和非工作板上运行并比较结果。

    [引用 USER="Ren Bowei"] DRA72x_PRCM_Clock_getconfig ()的结果如下所示:[/引用]

    [引用 USER="Ren Bowei]CortexA15_0:GEL 输出:GMAC:
    CortexA15_0:GEL 输出:LOCK_MODE 模式下的 DPLL
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2速度为260MHz
    CortexA15_0:GEL 输出:DPLL CLKOUT_M2处于活动状态[/引用]

    您是否仅在不工作的电路板上运行此功能? 如果是、请在工作板上运行并比较结果。

    看起来 DPLL_GMAC 可以被锁定、不能使用 GEL 文件。 因此、对于非引导板、您可能会遇到另一个问题。

    您能否尝试从 u-boot 代码库中删除 EtherNet/CPSW 支持以检查引导流程将在哪里? 您可以通过删除 u-boot/include/configs/dra7xx_evm.h 中的以下行来执行此操作

    -#define CONFIG_DRIVER_TI_CPSW

    然后、DPLL_GMAC 将不会在 u-boot/arch/arm/cpU/armv7/omap-common/clocks-common.c 中初始化

    静态空 setup_dplls (空)

    #ifdef CONFIG_DRIVER_TI_CPSW
       Params = get_GMAC_DPLL_params (* dplls_data);
       do_setup_DPLL (((*prcm)->cm_clkmode_DPLL_GMAC、参数、
               DPLL_LOCK、"GMAC");
    #endif


    您还可以对工作板执行相同的操作(从 u-boot 中删除 CPSW 支持)并比较结果(引导日志)。

     

    此致、
    帕维尔

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

    按照您建议的步骤操作。
    我删除了 EtherNet/CPSW 支持、引导流程可以继续。 但仍然在另一个地方(原始的地方不会被卡住)。

    根据这种现象、DPLL_GMAC 看起来存在一些问题、这是正确的吗?

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

    是的、问题很可能出在为 DPLL_GMAC 供电的时钟上。 您能否再次启用 EtherNet/CPSW 支持、只需删除/注释以下行即可。 您是否会获得相同的结果?

    u-boot/arch/arm/cpU/armv7/omap-common/clocks-common.c

    静态空 setup_dplls (空)




    #ifdef CONFIG_DRIVER_TI_CPSW
    Params = get_GMAC_DPLL_params (* dplls_data);
    //do_setup_DPLL (((*prcm)->cm_clkmode_DPLL_GMAC、params、DPLL_LOCK、"GMAC");-->删除此行
    #endif



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

    我删除了您的建议。 引导流程可以成功启动。
    但我有一个问题、为什么删除这一行后 Mac 在 Linux 中仍然可行。

    BTW、非常感谢您的支持。

    此致、
    鲍伊·任
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    只能从 u-boot 中删除它。 然后、我们在 Linux 内核中有新的 EtherNet/CPSW 模块和 GMAC DPLL 的初始化/配置。

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

    但我们只有一个 CPU 模块存在此问题。 那么、我们可以针对 CPU 问题感应这个呢?
    可能是 CPU 内部损坏?

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

    这很有可能。 您可以尝试从定制板上卸下该 CPU 模块(DRA722器件)、放置新的 CPU 模块并检查定制板是否开始工作。

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

    感谢您的支持。 我将转至我们的硬件团队以进一步进行调试。

    此致、
    Bowei