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.

[参考译文] TPS25751:处理嵌入式控制器软件中的失效模式

Guru**** 2589265 points
Other Parts Discussed in Thread: TPS25751

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1558024/tps25751-handling-failure-modes-in-embedded-controller-sw

器件型号:TPS25751


工具/软件:

团队、

客户正在为 TPS25751 设计器件驱动程序、并希望检查如何处理失效模式。 以下是我迄今为止确定的几种情景:

  1. PBMs 失败:
    1. 对于!CMD 错误、驱动程序是否应该执行某种重置、如 GO2P/Gaid/GAID? 如果没有、我们预计会在某种超时后收到 INT_EVENT1.ReadyForPatch 吗?
    2. CMD1 = 0、但 DATAX 返回错误。 从 DATAX 上的错误代码来看、似乎唯一的恢复是更新软件。 无法进行运行时恢复。 * 您能否证实 *?
  2. PBMC 失败:
    1. 对于!CMD 错误、应发出 PBMe。 同样、我们是否可以在某种超时后收到 INT_EVENT1.ReadyForPatch?
    2. CMD1 = 0、但 DATAX 返回错误。 从 DevicePatchCompleteStatus 中的错误代码来看、似乎除 0x20(未就绪)之外的所有错误都无法在运行时恢复。 * 您能否证实 *?
  3. 其他故障
    1. 假设补丁捆绑包在中途失败。 我们可以从 TPS 使用哪种信号来确定发生了这种情况?

 

如果我可能错过了一些内容、请告诉我。

此致、

Brian Antheunisse

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

    Brian Antheunisse 看起来您已经记录了我的问题。 将等待团队的响应

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

    我要添加的另一个问题是关于 'I2Cr'- I2C 读取事务。 在附加函数部分中、有一条注释:“由于 发送之前的'I2Cr'命令、'I2Cr'命令无法在 5 秒内发送。 这允许 PD 控制器执行
    完成所有 I2C 事务“

    这是否意味着软件需要等待 5s 才能继续 I2C 事务?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    • 实现
      • 在 EC 驱动程序中使用计时器来跟踪自上次 I2Cr 命令以来的时间。
      • 在发送新的 I2Cr 之前、请检查是否已过去 5 秒。 如果没有、请延迟命令。
      • 监控 CMD1Complete (0x14、位 30)、以确认前一个 I2Cr 成功完成、然后再启动下一个 I2Cr。
    • 行动 :在驱动程序中为 I2Cr 命令添加一个 5 秒的保护计时器。 使用中断或轮询通过 0x14 确认命令完成。                 

      驱动器设计总结

      • PBMs!CMD :发出 GO2P、等待 100 毫秒、检查 ReadyForPatch。 重试或下电上电。
      • PBMs DATAX 错误 :更新修补程序配置;除瞬态错误外、没有运行时恢复。
      • PBMC!CMD :发送 PBMe、等待 100 毫秒、检查 ReadyForPatch、重试或重置。
      • PBMC DATAX 错误 :重试 0x20;更新其他错误的修补程序。
      • 修补中间路故障 :监视 0x14(错误,PatchLoaded)和 0x2D (PatchHeaderError)。 使用 PBMe/GO2P 进行恢复。
      • I2Cr :在驱动程序中的命令之间强制执行 5 秒的延迟。
      • 一般条款 :记录所有错误代码 (0x14、0x2D、DATAX)、确保 I2C 通信稳健(例如,验证 ACK)、并在 EV 充电器的嘈杂环境中进行测试。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 SunilBhai:

    感谢您的回答。 您还能告诉我如何处理其他 4CC 任务的 1 字节任务返回代码吗?

    此外、除了 I2C_NACK 之外、我们可以取消屏蔽寄存器 0x14 哪些错误代码来帮助我们  

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

    是否有多次调用 DBfg 的副作用?

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

    您好、Nihir、  

    您还能告诉我如何处理其他 4CC 任务的 1 字节任务返回代码吗?

    您能否指定在此处引用哪些 4CC 任务? 拒绝 4CC 任务有不同的原因、例如超时、锁定缓冲器等 更多详细信息、请参阅下表:

    此外、除了 I2C_NACK 外、我们可以对寄存器 0x14 取消屏蔽哪些错误代码、这可以帮助我们 [/报价]

    您可以使用的一个 INT 是 CMD1 完成[30]、此 INT 将告诉您何时接受 4CC 任务并发送了返回代码(成功或不成功)。  

      

    谢谢。此致、

    Raymond Lin

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

    尊敬的 Raymond:

    我指的是 PBMe、GO2P、DBFg、I2Cr。 我猜这些返回标准任务返回代码。

    我使用的中断是 I2C_NACK 和 CMD1 完成的。 是否有其他任何我可以打开的选项会有所帮助?  

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

    您好、Nihir、  

    让我检查一下这些命令、明天就回复您。 我不建议使用 GO2P 进行错误恢复、此命令旨在仅在电池无电配置设置为 NegotiateHighVoltage 时才使 PD 恢复到 PTCH 模式(请参阅数据表)。  

    对于中断事件、I2C_NACK 和 CMD1 完成应该足够好。 PD 控制器还在加载配置之前默认启用了已加载补丁[80]和准备补丁[81]、我强烈建议在启用其他两个中断时不要禁用这些功能。  

    谢谢。此致、

    Raymond Lin

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

    如果不是 GO2P、那么您的错误恢复建议是什么?

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

    您应该使用 GAID(冷重置)进行错误恢复、而不是 GO2P、以便从其 ROM 代码重新启动 PD 控制器。

    请记住、如果 PD 控制器处于 APP 模式、发送 GAID 会将其重置回 PTCH。  

    另一个复位命令 (Gaid、WARM RESET) 会将 PD 控制器重置回其加载的原始配置、PD 将保持在 APP 模式。  

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

     您是否有使用 Gaid 的示例? 此外、我们尝试解决的问题是下载补丁捆绑包时的故障模式。 Gaid 是否有助于将部件重置回 PTCH、以便我们重新启动流程?

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

    您好、Nihir、  

    GAID(热复位)只会将 PD 重置回原始配置(模式仍在 APP 中)。

    GAID(冷复位)会将 PD 重置回其 ROM 代码(模式在 PTCH 中)。

    如果要将 PD 重置回 PTCH 模式、在此情况下应使用 GAID。  

    谢谢。此致、

    Raymond Lin