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.

[参考译文] DRA712:DRA712 上的 I2C 卡滞且控制器超时

Guru**** 2574495 points
Other Parts Discussed in Thread: DRA712

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1570233/dra712-i2c-stuck-and-controller-timed-out-on-dra712

部件号:DRA712


工具/软件:

尊敬的 TI 团队:

 

我们面临 DRA712 I2C 总线卡滞和 I2C 控制器在基于 DRA712 的定制电路板上超时。

系统运行的是 Yocto/Linux。 内核版本 4.19.73。

 

Linux 内核日志=“OMAP-Li2c 48070000.i2c:控制器超时“

 

 

如上面的部分方框图所示、同一 I2C 总线上连接的其他 2 个芯片为 TI 的 DS90UB954 和 DS90UB953、即 FPDLink-MIPI_CSI SerDeses。

 

在正常运行期间、两个 Serdes 之间每 20ms 存在一些周期性 I2C 流量。

当 SoC 尝试访问 DS90UB954 时、会出现 SoC I2C 控制器超时。 它只是一个单字节写入操作。  该问题 发生在 SoC 访问总线的约 2%时间。

使用协议分析器、我们发现在问题期间、I2C 总线阻塞约 1 秒。

这会使两个串行器之间的周期性 I2C 通信暂停、从而导致整个系统出现问题。

 

  1. 请帮助我们了解当 SoC 尝试访问 I2C 总线时导致该问题的原因。
  2. 以及可以采取哪些措施来避免该问题。
  3. 此外、为了减少总线卡住的时间、我们正在考虑将 OMAP-LTIMEOUT 的值(在 Linux 驱动程序 i2c-OMAP-Lc 中)降低到几毫秒。
    1. 请务必告诉我们进行此更改是否安全。

谢谢。此致、

Anand Mistry

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

    您好、Anand、

    这是否仅在连接到 FPD-Link 器件的总线中发生?

    可以通过 TI EVM 独立重新创建它吗?  

    第二、您能否详细说明 2%发生的原因是什么?  

    Ergo、它是特定寄存器还是特定字节?  

    第三个问题... 在我看来、您不想更改 i2c-OMAP 驱动程序的此值、因为这会影响系统中的所有 i2c 事务、我不知道这是否会导致其他问题。 我继续研究这个问题、以了解在理解为什么会发生这种情况的基础上、最好的建议是什么。

    -Josue

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

    您好 Josue、

     

    感谢您的答复。

    请在线找到答案。

     

    这是否仅在连接到 FPD-Link 器件的总线中发生?

    • 是的

    可以通过 TI EVM 独立重新创建它吗?  

    • 我们还没有尝试过。

    第二、您能否详细说明 2%发生的原因是什么?  

    Ergo、它是特定寄存器还是特定字节?

    • 它并不像另外 98%的时间那样查看字节/寄存器特定的情况、我们也在重复执行相同的事务。

    此外、对于 OMAP_I2C_TIMEOUT  减少方法、需要从协议/控制器的角度了解这是否安全。

    如果需要、我们可以将其减少到多少?

    谢谢。此致、

    Anand Mistry

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

    Anand、  

    我认为有办法通过 ioctls 减少一个器件的 I2C 超时、对于驱动器、我不确定从控制器的角度减少超时会产生什么影响。 我将不得不研究它,并在本周结束时作出回应。

    -Josue

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

    Anand、

    该超时通常被选为无数连接/器件的稳定超时。 从控制器的角度来看、我认为这是安全的、但在系统方面 、您必须注意、任何更改都会影响 I2C 上连接的其他器件的可靠性。 这将需要您进行一些系统验证。

    是否使用示波器检查了 SDA 和 SCL 线路?

    您能否在失败时附上已解码事务的屏幕截图?

    -Josue

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

    您好 Josue、  

    以下是一个 I2C 超时实例(默认软件,不会调整 SOC I2C 超时设置)。  我在故障任一端添加了一些流量、以提供解串器(另一个 I2C 主器件)与总线上串行器之间的正常流量。

    这是 超时的事务开始时间。  我希望在这里读取 I2C 地址 0x18 寄存器 0x5D。  我看到启动条件、然后是 7 位地址 0x18、但 SDA 从箭头开始变为低电平 1 秒:  

    然后在 1 秒后、I2C 总线会解冻:

    谢谢
    Lee

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

    Lee、

    感谢您发送编修。 对我来说、这使我怀疑从器件处于使 SDA 线保持低电平的状态。

    可能的问题:

    • 从器件处于故障状态
    • 从器件与主器件不同步

    我假设内核显示超时错误? 请您确认一下。

    另外、在一秒超时后、是否恢复正常运行?  

    是否已检查所有电压和电容?

    -Josue

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

    您好 Josue、

    感谢您的答复。

    请在下面找到答案。

    >我假设内核显示超时错误? 请您确认一下。

    是的。 内核给出以下超时错误、也在初始开机自检中提到。

    “OMAP-Li2c 48070000.i2c:控制器超时

    >另外,一秒超时后,正常操作恢复正常?  

    是的

     

    >可能的问题:

    >*从属设备处于故障状态

    >*从器件与主器件不同步

    由于 I2C 总线上的两个从器件都是 TI FPDLink 器件、您能帮助将该主题添加/转发到 E2E 的数据转换器论坛吗?

    谢谢。此致、

    Anand Mistry

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

    Anand、

    由于该主题的标题,最好是使用   按钮和部件号,这将自动将螺纹放在正确的团队前面。

    -Josue