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:在 AM64上使用 DP83822处理 IRQ 的潜在竞态条件

Guru**** 2463330 points
Other Parts Discussed in Thread: AM6442

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1477225/am6442-potential-race-condition-handling-irq-with-dp83822-on-am64

器件型号:AM6442

工具与软件:

大家好!

我使用的是 AM64 MPU 和 DP83822 PHY、并且我要将 PHY 中断引脚配置为触发 IRQ。 根据 DP83822数据表:

   '当这个引脚被配置为一个中断引脚时、这个引脚在一个中断条件出现时被置为低电平。 该引脚有一个带弱内部上拉电阻的开漏输出。 某些应用可能需要外部上拉电阻器。"

在 MPU 端、GPIO 控制器文档说明:

   "中断可以由上升沿和/或下降沿触发、为每个可中断的 GPIO 信号指定。"

由于 GPIO 限制、我只能将中断配置为下降沿。 我还注意到、在 Linux 中、drivers/net/phy/phy.c 文件将中断模式设置为 IRQF_OneShot

* IRQF_OneShot -在 Hardirq 处理程序完成后不重新启用中断。
*由需要保持的线程化中断使用
* IRQ 行被禁用,直到线程处理程序运行完毕。



我的问题是、在 读取 PHY 的 MICR 寄存器(这将清除中断)和返回 IRQ_HANDLED (这将重新启用中断)之间、drivers/net/phy/dp83822.c dp83822_handle_interrupt 可能存在竞态条件。

请注意、应如何正确处理此问题以避免这种情况? 我们可以触发 EN 级别的中断吗? 我使用 GPIO1_28。

提前感谢您的任何见解!

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

    Remi、您好!  

    Milan 在一个电话中通知我、尝试使用 AM6442配置 PHY 中断模式的原因是 RSTP 恢复时间不符合要求。 您或米兰是否能够阐明需要满足的预期恢复时间? 此外、当前测量的 RSTP 恢复时间是多少?

    使用 AM6442将 PHY 配置为中断模式的主要问题是、如果 DP83822 PHY 仅支持电平中断、而 AM6442上的 GPIO 仅支持边沿中断、则可能会由于电平和边沿中断差异而缺少事件。   有关更多详细信息、请参阅 e2e.ti.com/.../5104744  

    [报价 userid="643222" url="~/support/processors-group/processors/f/processors-forum/1477225/am6442-potential-race-condition-handling-irq-with-dp83822-on-am64 ]根据 DP83822数据表:

       '当这个引脚被配置为一个中断引脚时、这个引脚在一个中断条件出现时被置为低电平。 该引脚有一个带弱内部上拉电阻的开漏输出。 某些应用可能需要外部上拉电阻器。"
    [报价]

    在我看来、这种描述意味着 DP83822 PHY 仅对电平敏感。 我将与 TI PHY 团队核实、以便仔细核实这一点。

    -道林

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

    你好、Daolin。

    感谢您的帮助和链接、这些链接与我们的分析一致。

    预期恢复时间为100ms、包括20块电路板的传播时间。

    目前、我们修补了 drivers/net/phy/phy.c、可以处理过快的中断。

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

    尊敬的 Remi:  

    感谢您澄清恢复时间要求。 您是否碰巧知道当前测量的 RSTP 恢复时间(即不符合要求的时间)?

    [报价 userid="576780" url="~/support/processors-group/processors/f/processors-forum/1477225/am6442-potential-race-condition-handling-irq-with-dp83822-on-am64/5671428 #5671428"]据我所知、此描述暗示 DP83822 PHY 仅对电平敏感。 我将与 TI PHY 团队核实一下。

    PHY 的反馈为 DP83822对电平敏感:"我们期望的是、如果 PHY 没有置位 INT、则该引脚为高电平(因为 OD PU 使电压处于高电平)。 每当存在 INT 时、PHY 就会将引脚拉至低电平、从而指示 SoC 对其进行检查(可能通过 ISR 进行检查)。 每当读取 INT 寄存器时、中断就会清除、并且该引脚应处于高电平、直到下一个 INT。"

    [报价 userid="643222" url="~/support/processors-group/processors/f/processors-forum/1477225/am6442-potential-race-condition-handling-irq-with-dp83822-on-am64 "]我担心在 读取 PHY 的 MICR 寄存器(这将清除中断)与返回 IRQ_Handle (这将重新启用中断)之间、drivers/net/phy/dp83822.c dp83822_handle_interrupt 可能存在竞态条件。

    我将该主题引导至 TI PHY 专家、以帮助就有关 DP83822 PHY 驱动程序的问题提供建议。 如果您在周二之前尚未收到回复、请 ping 此主题。

    -道林

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

    尊敬的 Daolin:

    currenlty 项目告诉我们、 恢复时间超过1秒... 它们的最大时间为1.3s、平均时间为785ms…… 该测试配置中请求的时间为100ms。

    通过对中断进行一些测试、得到36ms-130ms……