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.

[参考译文] AM6442:自 Arago 11以来的零星引导故障

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1515914/am6442-sporadic-boot-failure-since-arago-11

器件型号:AM6442
主题中讨论的其他器件:TPS65220、TPS65219、 SysConfig

工具/软件:

尊敬的 TI 专家:

我们正在开发基于 AM6442-SK 评估板的电路板。 我们从 Arago 10开始、让我们的电路板开始工作。 我们进行了许多天的循环启动测试(开机、等待、通过 ssh 连接、关机)、没有任何问题。
最近我们从 Arago 10.00.07切换到 Arago 11 (11.00.09、请参阅 files.zip 中的 submodules.txt)、现在我们遇到零星的启动错误。

有时、在下电上电后、启动过程会在 Linux 启动期间崩溃。 崩溃的位置并不总是相同(请参阅附加的日志)。
u-boot 似乎正常引导。 如果系统正常引导并且我们运行应力测试流/stress-ng)、则运行时不会出现任何问题。

我们的器件树(对于 u-boot 和内核、k3-am642-vem.dts 相同)、附加了 U-boot (R5/A53)的 defconfig 和 u-boot 环境。

我们保持了内核配置不变。 我们在 device-tree/u-boot config 中的主要变化是:

  • 我们没有 USB、因此删除了所有相关内容(USB/DFU/SerDes)
  • 我们有 eMMC (sdhci0)和 SD 卡(sdhci1)。
  • 我们将 u-boot 环境(冗余)存储在 e.MMC 中、因此 e.MMC 和 SD 卡的电源域更改为 TI_SCI_PD_SHARED、以便它在从 SD 卡引导时也能正常工作
  • 我们在 i2c0处有一个 PMIC TPS65220、这是利用器件树中的 TPS65219驱动程序设置的
  • 我们在 i2c0处有一个电路板 EEPROM、它也会由 u-boot 读取
  • 我们不打算使用 EFI 启动、因此已删除所有相关内容
  • 为了使引导加载程序二进制文件适合我们的4MB 引导分区、单个组件(tispl.bin / u-boot.img)的偏移量已更改
  • 我们使用 Micron LPDDR4、并使用 SysConfig 工具配置了 DRAM 控制器。 Arago10的*。dtsi 文件运行正常。

我们目前从 SD 卡引导、但电路板上还有一个 E.MMC、稍后将作为引导介质。


我们遇到的一点是 u-boot 现在设置 PMIC (LDO1电压从3V3变为1V8、如器件树中所述、我们看到了 I2C 总线上的流量)。 这不是我的错,而是我的错
即使器件树节点相同、只有 Linux 更改了电压。
如果 U-boot (可能甚至是 R5 SPL、因为它具有 bootph-all 属性)和 Linux 配置 PMIC、是否会出现问题? MAIN_i2c0的电源域也必须设置为 TI_SCII_PD_SHARED 吗?
为什么评估板的 MAIN_i2c0电源域未设置为 TI_SCI_PD_SHARED? 电路板检测 EEPROM 位于 MAIN_i2c0、通过 r5-u-boot 读取、也可以从 Linux 中获取。
您能否解释一下何时使用 TI_SCI_PD_SHARED/TI_SCI_PD_EXCLUTE?


我还不清楚引导日志文件(好日志和坏日志)中的以下行、因为我无法在设备树中使用任何可靠性周期:
/bus@f4000/i2c@20000000/PMIC@30:使用/bus@f4000/i2c@20000000/PMIC@30/regulators/buck2时的固定依赖周期


任何帮助都是非常感谢的。 如需更多信息、请联系我们。

Br Benjamin

e2e.ti.com/.../hangs_2D00_without_2D00_oops.txte2e.ti.com/.../boot_5F00_okay.txte2e.ti.com/.../crash_2D00_with_2D00_oops.txt

e2e.ti.com/.../6175.files.zip

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

    您好、
    还有一件事:我只是偶然发现了 [EXT_EP-12285] SK-AM64B:i2c 总线延迟探测警告-软件问题报告(sr)

    此问题是否与我的问题有关? 我还没有删除 sdhci0和  sdhci1的 clock 属性(相反、如上所述、它设置为从执行到共享)、并且我还想使用 R5和 A53的 I2C 总线。

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

    您好 Benjamin、

    一般而言、我们仅支持通过 K3器件(包括 AM64x)上的单个软件实例控制的外设或外设接口。 (例如、如果 Linux 使用 I2C0、则 M4F 内核和所有 R5F 内核都不能使用 I2C0)。 因此、如果 R5F 内核希望在运行时使用 I2C 接口、则需要使用不同的 I2C 实例。

    如需更多信息、请参阅 AM64x Academy、多核模块、外设:
    https://dev.ti.com/tirex/explore/node?node=A__AaRdsK4zRjlChfPY2v0AhQ__AM64-ACADEMY__WI1KRXP__LATEST

    这种"每个外设一个软件所有者"由专用设备管理器(DM)内核实施、该内核运行在您链接的 SIR 中提到的 TISCI 服务器。

    那么、它如何在 SPL 引导下工作?

    我们必须将 I2C0的所有权除以时间。 首先、R5F 在引导期间尽早请求 I2C 的所有权、DM 内核会注意 R5F 拥有 I2C。 R5F SPL 代码完成后、应向 DM 内核发送消息以释放 I2C 接口的所有权。 这样、U-Boot / Linux 能够在稍后的引导过程中请求 I2C 接口的所有权。

    在 允许 Uboot 或 Linux 与 I2C0电源设置混淆之前、它需要从 DM 内核请求 I2C0的所有权。 如果 DM 内核认为 R5F 内核仍在使用 I2C0、则它将拒绝该请求。

    此致、

    Nick

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

    您好、Nick、

    感谢您的回复和独家/共享模式的说明。 为了澄清这一点:一旦启动,我们从来没有计划在不同的软件实例之间共享外设,所以到目前为止一切都很好:)。

    阅读您的帖子我想知道共享模式何时有意义,因为它是一个可用的选项。

    一段时间前、我从 SD 卡引导(通过引导引脚)时、还在 R5 SPL 中从 e.MMC 读取环境数据时遇到问题、请参阅 PROCESSOR-SDK-AM64X:eMMC 中的冗余 u-boot 环境-处理器论坛-处理器- TI E2E 支持论坛

    您的同事建议将 sdhci0和 sdhci1的电源域从独占更改为共享。 这解决了我的问题,但似乎不是正确的方法,当我读你的帖子. 它还应该使 sdhci0和 sdhci1在 R5 SPL 中独占、并且在将控制移交给 A53 SPL (以及稍后的 U-Boot)之前、资源会被释放、并且可以由 A53 SPL 获取、对吧?

    BTW:我们放弃了在 R5 SPL 阶段提供我们的环境的要求,因此 sdhci0访问问题对我来说不再是一个问题,但您的回答将帮助我理解这个主题。

    Br Benjamin