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.

[参考译文] TPS65219:冷复位无法正常工作

Guru**** 2587365 points
Other Parts Discussed in Thread: TPS65219, AM623, SK-AM62B-P1

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1402054/tps65219-cold-reset-not-able-to-work-properly

器件型号:TPS65219
主题中讨论的其他器件: AM623SK-AM62B-P1

工具与软件:

我目前正在使用基于由 TPS65219 PMIC 供电的 AM6232处理器并运行 Linux 内核 v6.1的定制电路板。 它当前能够在 Linux 上运行"重新启动"命令时执行热复位、但我已经检查了电源信号、PHY、RAM、SD 卡和 USB 等外设没有复位。 具体情况如下:

  • 施加主 VCPU 电源电压(3.3V)后、PMIC 会启动 SoC 电压的启动序列、然后在 MCU_PORz 引脚(SoC 中 RESET 信号的根)上释放 SoC 复位;
  • SoC 通过 RESETSTATz 引脚从外部发出复位状态信号、用于将复位传播到系统的其余部分(eMMC、PHY、SD 卡、USB 等)。 当执行 Reboot 命令时、RESETSTATz 信号变为活动状态、指示 MPU 复位并导致系统复位。 RESETSTATz 信号也连接到 PMIC 的 MODE_RESET 引脚、该引脚的功能是重新启动 MPU 的电源序列;
  • 我们验证了 RESETSTATz、一切都符合预期(RESETSTATz 在 Linux 执行 Reboot 命令后变为活动状态)。 此外、我们在 PMIC 数据表(TPS65219)中验证了 MODE_RESET 引脚是多功能的、需要配置为作为复位(7.3.9 PWM/RESET 和 PFM (MODE/RESET))运行;
  • 我们希望进行 POR 复位(PMIC 进行下电上电);
  • 我还分析了 EVM 的原理图、发现 EVM 使用的是具有多个独立转换器的分立式解决方案、而我使用的是集成式解决方案。 EVM 不控制 CPU 的主电压、因此 EVM 在执行 REBOOT 命令时不会重新启动电源。 需要注意的是、执行 REBOOT 命令时、EVM 板也不会正确重新启动。 Linux 冻结。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您的咨询。 您使用的是什么具体的 TPS65219可订购产品、如何触发冷复位?  

    大多数预配置为为为 AM62x 供电的 TPS65219可订购产品都将 MODE/RESET 引脚配置为"热复位"。  触发热复位后、PMIC 会复位寄存器设置、但所有电源轨都保持开启状态。 如果 MODE/RESET 引脚配置为热复位、则可由 I2C (COLD_RESET_I2C_CTRL)触发冷复位。   

    谢谢!

    Brenda

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    • 可订购: TPS6521904RHBR;
    • 我知道这些有关 PMIC 功能的信息。 有一个尚未清除的问题是、 当在 Linux 上运行"reboot"命令时、如何通过 I2C 触发 COLD_RESET_I2C_CTRL 命令;
    • 我曾尝试为 TPS65219启用器件驱动程序 (自行命名)、但无法调用该驱动程序的重启处理程序、因为 PSCI 重启处理程序具有更高的优先级、建议不要编辑这些参数;
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Leonardo:

    我会将该票证分配给我们的软件团队、以便他们可以提供有关如何触发冷复位的信息。

    谢谢!

    Brenda

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

    您好、Brenda:

    您能否为 COLD_RESET_I2C_CTRL 提供确切的十六进制 i2c cmd/地址/数据? 然后我可以帮助为 Leonardo 提供 Linux 命令。

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

    您好、Bin、

    寄存器字段 " COLD_RESET_I2C_CTRL "位于地址0x29位2中。  

    谢谢!

    Brenda

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

    您好、Brenda

    如果需要、随附了 Altus 的 AM623+PMIC sch。  

    Tks、

    Raphael Marchi

    TI S America - FAE

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

    您好、Brenda:

    我尝试从 AM62x 写入寄存器0x29位2、但似乎会立即触发 AM62x 的冷复位。 这是预期结果吗?

    如果是、这不是 Leonardo 所要求的。 他需要的是、仅当 AM62x 将 RESETSTATz 引脚置为 PMIC 时才让 PMIC 进行冷复位。 我不熟悉 PMIC、但此要求似乎是将 MODE/RESET 配置为"冷复位"。

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

    您好、Bin、

    这是预期的 PMIC 行为。 向寄存器地址0x29上的位2写入0x1会执行冷复位。 这是 Leonardo 提出的问题:" 当在 Linux 上运行"reboot"命令时、如何通过 I2C 触发 COLD_RESET_I2C_CTRL 命令"

    谢谢!

    Brenda

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

    您好、Brenda:

    通过 i2c 触发 COLD_RESET_I2C_CTRL 不能回答该问题。 通过 i2c 实现 COLD_RESET_I2C_CTRL 的问题在于 i2c 命令立即导致系统复位、然后有可能在 Linux 中运行"reboot"命令。

    Linux reboot 命令会触发 AM62x 置位 RESETSTATz、问题是当 AM62x 置位 RESETSTATz 时、PMIC 是否/如何发出冷复位。

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

    你好、莱昂纳多、

    TPS65219 04. 将 MODE/STBY 引脚配置为热复位。 触发冷复位的唯一替代方法是 写入  COLD_RESET_I2C_CTRL  字段。

    当 RESETSTATz 变为低电平时、在 PMIC 上触发冷复位有什么作用? 如 AM62x 技术参考手册中所述、 RESETSTATz 指示  MAIN 域的热复位状态。

    谢谢!

    Brenda

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

    您好、Brenda

    我知道可以通过写入来触发冷复位  COLD_RESET_I2C_CTRL。  我还已经使用"i2cset"命令在定制板上对其进行了测试。 我的问题是  如何通过在 Linux 上运行"reboot"命令来触发冷复位。

    此外、当  RESETSTATz 变为低电平时在 PMIC 上触发冷复位的目的是遵循 TPS6521904参考手册中的说明、该说明在方案中指明了 RESETSTATz 连接到 MODE/RESET、MODE/STBY 连接到 PMIC_LPM_EN0 (B7)。

    在 Linux 系统上运行"reboot"命令时、我希望进行上电复位、但实际上发生的是热复位。

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

    您好、Leonardo:

    我弄清楚如何解决这个问题。 查看 PMIC TPS65219数据表中寄存器0x20h 的相关信息:

    其 bit2 MODE_RESET_CONFIG 配置 MODE/RESET。 在 SK-AM62B-P1上、该位已经为1、因此这里没有问题。

    其位6 WARM_COLD_RESET_CONFIG 指定用于触发热复位或冷复位的 MODE/RESET 引脚。 值0用于冷复位。

    以下是我在 SK-AM62B-P1 EVM 上使用 U-Boot 进行的实验:

    引导至 U-Boot 提示符、然后运行"reset"命令重新启动。 现在检查复位模式:

    => md.l 0x43018178 1.
    43018178:00010000

    寄存器值0x00010000表示发生了热复位。

    现在运行以下命令来检查 PMIC 寄存器0x20h 位6:

    => i2c dev 0
    将总线设置为0
    => i2c MD 0x30 0x20.1 1
    0020:DD   。

    值0xdd 表示设置了位6、用于热复位。 现在将其更改为 COLD RESET:


    => i2c mw 0x30 0x20.1 0x9d 1
    => i2c MD 0x30 0x20.1 1
    0020:9d   。

    现在运行"reset"命令重新启动、然后检查复位模式:

    => md.l 0x43018178 1.
    43018178:00000000

    它现在是冷复位。

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

    您好!

    我的电路板也无法在 U-boot 上通过"reset"命令复位。

    => reset
    resetting ...
    System reset not supported on this platform
    ### ERROR ### Please RESET the board ###
    

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

    嗯、不确定是什么原因造成的...

    仍然可以在 Linux 中使用 i2cget/i2cset 命令来进行实验吗?

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

    好的、我已经在将0x20寄存器设置为0x9d 后测试了"reboot"命令、我确实获得了正确的冷复位、但之后、我执行的下一个"重新启动"命令不起作用、PMIC 寄存器设置为0xDE、因此显然无法代表该解决方案。

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

    感谢这个实验,这只是一个测试,以确保它可以得到我们需要的东西。

    其中一个解决方案是添加" I2C dev 0;i2c MW 0x30 0x20.1 0x9d 1 "中的命令来设置 PMIC 寄存器、然后再引导到 Linux、Linux 重新引导命令将触发冷复位。

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

    好的、基于此、我可以针对我的问题实施一种解决方案。 因此、 我可以将该问题视为已解决的问题。

    关于 u-boot 复位问题、我想我应该在论坛上打开专门解决这种情况的另一个问题吗?

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

    您好、Leonardo:

    如果您在 U-Boot 中启用了 tps65219驱动程序、您是否尝试过此 i2c 命令" I2C dev 0;i2c MW 0x30 0x20.1 0x9d 1 "然后在 U-Boot 中后跟"reset"不会触发冷复位?

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

    您好!

    我已使用以下配置启用该驱动器: DM_COMPUTER_TPS65219和 PMIC_TPS65219;

    在 u-boot 初始化时、我收到以下消息:"tps65219_bind:PMIC@30 - no child found";

    器件树根据文档进行配置。

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

    您好、Leonardo:

    我感到困惑。

    如果您可以" I2C dev 0;i2c MW 0x30 0x20.1 0x9d 1 "在 U-Boot 中、为了解决 Linux 的冷重启问题、为什么不能在 U-Boot 中只写入 COLD_RESET_I2C_CTRL 来直接触发 U-Boot 中的 COLD RESET? 为什么必须在 U-Boot 中配置 PMIC 驱动器?

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

    您好!

    这是因为我想使用"reset"命令重置 U-boot 系统、就像在 Linux 上使用"reboot"命令一样。 问题是、当我运行此命令时、会收到以下错误消息:

    => reset
    resetting ...
    System reset not supported on this platform
    ### ERROR ### Please RESET the board ###

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

    您好、Leonardo:

    在深入探讨 U-Boot 复位问题之前、我想了解一下您是在最终产品中使用 U-Boot "reset"命令、还是仅用于开发? 通常、产品中没有与 U-Boot 命令行的交互、当电路板上电时、U-Boot 直接引导至 Linux、则没有机会或需要在 U-Boot 中运行"reset"命令。

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

    您好!

    "reset"命令仅用于开发目的。

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

    如果仅用于开发、您可以只对 COLD_RESET_I2C_CTRL 使用 i2c 命令而不是进行复位吗? 两者在重新启动方面没有区别。

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

    实际上、这里没有发生这种情况、因为在开发过程中、U 引导环境中可能会出现一些问题、导致电路板自动复位(例如引导加载程序例外)。 我已经遇到过此类问题、U-boot 会因之前显示的错误消息而停止。

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

    好的、明白。

    我不是 U-Boot 专家。 请针对 U-Boot 复位问题创建一个新的 E2E 主题。 它将分配给我们的 U-Boot 专家以获得支持。

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

    使用。 谢谢你