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.

[参考译文] Linux/AM3352:ADC 挂起

Guru**** 2551310 points
Other Parts Discussed in Thread: AM3352

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/605216/linux-am3352-adc-hangs

器件型号:AM3352

工具/软件:Linux

您好!

我的系统在 AM3352处理器上工作。 并具有2个 ADC 输入。 ADC 使用内部基准。 在正常情况下、它工作正常。 如果我施加电力线 EFT、此时处理器无法访问 ADC 并挂起。  

系统正在运行内核4.4.12。  但是、如果我将内核版本更改为3.2.0、那么此时该 ADC 挂起问题将得到解决、并且 ADC 不会在同一电路板和相同的 EFT 测试设置下挂起。

我们的 Linux 应用程序正在由 sysfs 以一次性模式访问 ADC、即使内核4.4.1-12挂起、我们也无法从控制台手动访问 ADC。 但在内核3.2.0中、这运行得非常顺利。  

此外、在 EFT 中、我们正在监控来自 ADC 的样本、直到最后时刻、它都是稳定的。 ADC 在计数方面没有任何错误行为。 我们将 ADC 驱动器用作 模块。 如果我们禁用 ADC 驱动器、则系统不会挂起。  

那么、该问题的可能原因是什么。  

此致、

Dharit

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Dharit、

    您能否在运行最新版本的 Processor SDK 时尝试相同的测试、并查看症状是否仍然存在?

    最新的 Linux 处理器 SDK 位于内核4.4.4.41上: www.ti.com/.../PROCESSOR-SDK-AM335X

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

    我已经比较了内核4.4.12和4.4.4.41的 ADC 驱动程序。 我们发现只有一个与互斥量相关的差异。
    精确更改是获取"struct mutex fifo1_lock"的一个额外变量、并且在探测器函数中初始化 mutex、并在读取函数中解锁。
    否则、驱动程序在这两种情况下都是相同的。 我们还在内核4.4.12中引入了这种变化、但问题仍然存在、ADC 在 EFT 上挂起。

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

    Dharit、

    是否可以快速试用整个最新的 Processor SDK 内核? 我认为您做出了最大的更改、但在 ti_am335x_adc.c 文件之外可能还有其他更改。

    他们是否在 v3.2和 v4.4测试之间进行过任何硬件更改? 我的硬件团队同事不认为单靠软件就能解决这个问题。 如果此测试中的能量耦合到 ADC 中、ADC 很可能会挂起、恢复的唯一方法是上电复位。  在过去几年中、我们就该主题进行了多次 E2E 讨论。 这是一个与系统相关的问题、您必须设计产品、使这些瞬变产生的能量不会耦合到 ADC 中。

    Jason Reeder

     

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

    在测试中、V3.2和 V4.4.4.12的硬件是相同的。 PCB 板是相同的、因此 PCB 布线也没有任何变化。 我们已经为 ADC 使用了内部基准。 为 ADC 提供的1.8V 电压和 GND 均采用 BAD BLM21PG600SN1。 在这里、1.8V 从5V 至1.8V LDO 生成。 使用直流/直流转换器通过12V 输入生成5V 电压。 12V->5V (通过 DC-DC 转换器)、5V ->1.8V (LDO)。 哪种类型的噪声会使 ADC 的处理器挂起? 由于在系统上提供 EFT 时、我们也在监控12V 电压、因此计数不会发生太大的变化。 它的范围为3000到3010。

    我们已将 ADC 驱动程序从4.4.41更改为4.4.4.12。 移植后、我们发现应用程序仍会在 ADC 中挂起、"但如果我们执行 cat 操作、则会读取 ADC 计数。" 如果我们执行 cat、则应用程序在 ADC 中挂起时、cat 也会挂起。
    因此、如果4.4.41中有任何与 ADC 相关的更改、我们可以将整个内核移植到4.4.41。 另外、请告诉我们4.4.4.41中的更改是什么、因为移植整个新 SDK 是一项耗时的任务。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    噪声引起的问题可能不会每次产生相同的结果,因此我不确定您在软件版本之间看到的差异是否真实。 即使差异是非常可重复的、也可能存在微不足道的配置差异、从而产生稍微不同的最终结果。 但是、ADC 锁定的基本问题可能会保持不变。

     

    我不确定 EFT 测试中的能量是如何耦合到 ADC 并导致 ADC 挂起的。 如您所述检查直流电源时、假设能量通过电源传导、但情况可能并非如此。 EFT 测试可能会辐射直接耦合到 ADC 输入或其他间接将电流耦合到 ADC 的电路的能量。 您需要了解能量如何从 EFT 源耦合到 ADC、并对产品进行必要的更改以阻止此路径。

     

    您描述的电源拓扑使我提出一个可能不相关的问题。 如何确保 ADC 的1.8伏 LDO 遵循数据表中定义的上电顺序?

     

    此致、

    Paul