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.

[参考译文] AM6422:如果在 uboot 中启用了看门狗且 CPU 重新启动卡住、则 CPU 1 不会启动

Guru**** 2873830 points

Other Parts Discussed in Thread: AM6422, AM6421

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1633335/am6422-cpu-1-not-starting-if-watchdog-is-enabled-in-uboot-and-cpu-reboot-gets-stuck

器件型号: AM6422
主题: AM6421 中讨论的其他器件

您好团队:

我们已经开发了一款基于 AM6421/22 的处理器的产品。 我们有两个定制设计的电路板/版本。 一个 BAORD 有单核 AM6421、其他版本有双核 AM6422。 我们已经在板上部署了基于 Yocto 的定制映像。 此外、我们还优化了启动时间以满足量产要求(引导到应用程序的时间< 40 秒)。

我们的主要问题与重新启动(无下电上电)有关、当我们持续执行该操作时、基于 AM6421 的电路板会在大约 2500 次重新启动循环后在重新启动期间卡住。

最初、重新引导卡滞频率约为 200-300 次重新引导循环。 在线搜索和检查、最初我们发现 USB(作为 CDC_NCM 器件)和 eMMC 几乎同时被初始化、这产生了一些竞态条件、Linux 内核甚至在跳转到用户空间和启动 systemd 之前就卡在那里。 作为修复、我们已禁用 Linux 内核中的 USB 和 CDC_MCM 支持。 在此之后,重启成功了大约 2500 个周期,之后它被卡住在用户空间等待/dev/ttyS2 在 systemd 中。

为了排除任何硬件和软件相关问题、我们在 AM6421-EVM 上的 ti image 做了同样的事情。 我们观察到类似的情况、我们可以在 EVM 上重现、并且在大约 3500 个重启周期后、它会一直滞留在 systemd 中的/dev/ttyS2 中。

 

我们在 AM6422 电路板上观察到的同样问题,但在这个电路板上,我们能够经常重现这个问题,只是在 10-20 重新启动后,这一次我们得到内核转储。

----------------------------------------

为了临时解决该问题、我们尝试在 uboot 和内核中启用看门狗。 这是有效的,我们能够恢复板,如果它卡住它超时,并自动重新启动.

 

但是、在基于 AM6422 的电路板上、如果我们在 uboot 中启用看门狗、CPU 1 将无法启动
image.png'

只有在 U-boot 中禁用了看门狗时、它才会启动。

 

但我们希望它从 Uboot 运行  

 

通过在线搜索、我们找到了与电源域相关的内容

image.png

 

所以删除它,并尝试.. 但如果我们在 uboot 中启用看门狗、仍然无法正常工作。

----------------------------

 

 

请指导我们识别并解决这两个问题

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

    尊敬的 Akshay:

    我先在 AM6422 上解决看门狗问题。

    在 U-Boot 中启用看门狗时、为什么 CPU1 无法启动

    RTI 看门狗是一个窗口式看门狗、用于在启动后触发 NMI、无法停止。 当 U-Boot 启动并跳转到 Linux 时、存在一个没有人爱它的空白。 CPU1 SMP 启动发生在内核初始化中的早期、就在 RTI_WDT 驱动程序探测之前。 如果 NMI 在 CPU1 的 PSCI CPU_ON 序列期间触发,则握手失败 — 因此 CPU1:在未知状态下失败:0x0。 AM6421 不显示此结果、因为没有 CPU1 可启动。

    您尝试的电源域更改无法解决此问题—NMI 时序与电源域所有权无关。 请参阅在 Foundational_Components 上启动看门狗的指南 —  https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/11_02_08_02/exports/docs/linux/Kernel_Drivers AM64x/Kernel/AM64x/Watchdog.html

    对于重新启动问题、我将与另一位可以更好地帮助您的专家联系。

    此致、
    Harshith

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

    您好 Harshith、

    感谢您的更新和建议。

    我将查看建议的链接。

    -----

    不过、我已经尝试了另外一个步骤、我在内核引导参数中添加了一个参数“maxcpus=1",“,这、这会在内核引导期间停止 CPU1 的初始化。 到达 userspace 后、 在 加载所有驱动程序并连续触发看门狗时、手动启动 CPU1。 使用相同的错误代码也会失败。

    此致、

    Akshay

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

    尊敬的 Akshay:

    听起来在  AM6421 与 AM6422 上会有问题。

    您能否 在 AM6422 上使用 maxcpus=1 进行压力测试并分享结果?

    此外、在正常模式失败后、请共享 AM6422 的 coredump。

    此致、
    Vinu

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

    您好 Harshith、

    连接的链接没有帮助。 不过、我通过在 uboot 中禁用 WDT1 来使其正常工作  

    仅启用 WDT0

    diff --git a/dts/upstream/src/arm64/ti/k3-am64-main.dtsi b/dts/upstream/src/arm64/ti/k3-am64-main.dtsi
    index abc123def456..789012345678 100644
    --- a/dts/upstream/src/arm64/ti/k3-am64-main.dtsi
    +++ b/dts/upstream/src/arm64/ti/k3-am64-main.dtsi
    @@ -1223,7 +1223,8 @@
     	main_rti1: watchdog@e010000 {
     		compatible = "ti,j7-rti-wdt";
     		reg = <0x00 0xe010000 0x00 0x100>;
     		clocks = <&k3_clks 126 0>;
    -		power-domains = <&k3_pds 126 TI_SCI_PD_EXCLUSIVE>;
    +		power-domains = <&k3_pds 126 0>;
    +		status = "disabled";
     		assigned-clocks = <&k3_clks 126 0>;
     		assigned-clock-parents = <&k3_clks 126 2>;
    	};

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

    尊敬的 Akshay:

    是否仍然出现重新引导问题、或者是否已解决?

    此致、
    Vinu

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

    您好 Vinu、

    重启问题仍然存在。

    --------------------------------------------

    我们的电话是 11.00.09.04。 我们正在将其升级到 11.02.08.02

    升级后、我们需要再次执行应力测试。

    此致、

    Akshay

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

    尊敬的 Akshay:

    感谢您提供的信息。

    请告知 SDK 升级后问题是否仍然存在。

    此致、
    Vinu