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.

[参考译文] MCU-PLUS-SDK-AM243X:以太网 PHY 引导时间

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1203729/mcu-plus-sdk-am243x-ethernet-phy-boottime

器件型号:MCU-PLUS-SDK-AM243X

您好!

我们目前在以太网-PHY DP83826和在 Profinet 应用中的启动行为方面存在问题。

在一些电路中、可能会发生系统在启动时挂起的情况。 Call-Stack 如下所示:

经过调查并再次查看数据表后、我们支持以下内容:

这是来自 PHY 数据表(https://www.ti.com/lit/ds/symlink/dp83826e.pdf?ts=1678218095288&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FDP83826E%253Futm_source%253Dgoogle%2526utm_medium%253Dcpc%2526utm_campaign%253Dasc-hsdc-null-prodfolderdynamic-cpc-pf-google-wwe_int%2526utm_content%253Dprodfolddynamic%2526ds_k%253DDYNAMIC%2BSEARCH%2BADS%2526DCM%253Dyes%2526gclid%253DCjwKCAiA3pugBhAwEiwAWFzwdb4sYbCQUZV18rs1rh86aH9xVML3ynoSHK56YaMTRXRG9s2IZcm8xRoC2QYQAvD_BwE%2526gclsrc%253Daw.ds)的时序图

T4定义为最大50ms、这意味着我们需要在复位版本之后等待这一次、以确保 Eth-PHY 完全引导。

下面是我对此的问题:

看来我们等待的时间不够长,而且很早就发出了命令。 这会使空穴系统进入无响应状态、它在上面的调用堆栈中只是空闲。

这个50ms 不应该在 PRU 级别得到处理吗? 至少我们应该在应用级别得到一个错误代码、指示"PRU 未就绪"或/和"EHTPHY 未就绪"等内容

我认为 ETH-PHY 的 RESET 引脚也由 PRU 驱动、因此应由 SDK 处理。

是否已经有功能可以检查 PRU 和 ETH-PHY 是否完全引导?  

但至少我认为 ETH-PHY 驱动程序的"命令函数"应返回前面所述的错误代码。

谢谢

Fabian

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

    尊敬的 Fabian:

    我们已经开始研究这些主题、让我在星期五尝试回复我的调查结果

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

    Fabian、

    您能帮助我了解以下详细信息吗:

    您使用的是哪个 MCU SDK 版本

    2.您使用哪个版本的 Profinet 示例(是 Kunbus Profinet 示例或您自己的 Profinet 堆栈)

    3.还有使用 MDIO 手动模式吗?

    我认为 ETH-PHY 的 RESET 引脚也是由 PRU 驱动的、因此该问题应由 SDK 处理。

    它可以连接到 PRU、但引脚的驱动仍由应用完成。

    是否已有检查 PRU 和 ETH-PHY 是否已完全引导的功能?  [/报价]

    与以前一样、这必须由应用程序处理、因为 PRU 代码与 PHY 无关。

    但至少我认为 ETH-PHY 驱动程序的"命令函数"应该返回前面提到的错误代码。

    ETH PHY 函数没有针对失败的事务的错误代码

    /resized-image/__size/320x240/__key/communityserver-discussions-components-files/908/pastedimage1678364072146v1.png

    现在来看看错误签名、您可以详细说明一下您在应用程序中看到了什么错误

    在一些电路中、可能会发生系统在启动时挂起的情况。 Call-Stack 如下所示:

    我没有完全做到这一点、您能详细说明一下吗  

    这使空穴系统进入无响应状态,它只是在上面调用堆栈中闲置。

    您是否一直看到此状态以及在运行迭代时是否对电路板进行电源复位、是否所有工业应用都需要在重新启动时进行电源复位。

    Br

    Nilabh A.,

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

    我检查了 MDIO 代码、它似乎进入了暂停状态、因为任何事务一旦发出、它都会等待完成、

    您能否检查 PHY 配置是否正确完成、并在对其下电上电后尝试重新运行应用程序。

    software-dl.ti.com/.../EXAMPLES_INDUSTRIAL_COMMS_ETHERCAT_SLAVE_DEMOS.html

    请查看此主题: (+) LP-AM243:不稳定行为-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

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

    尊敬的 Nilabh:

    将 ETH PHY 的 RST_N 连接到 Sitara 和 GPIO

    然后、我认为我们需要在软件中复位 ETH PHY、以确保 ETH PHY 处于正确的状态。  

    在启动时、我认为我们需要执行如下操作:

    将此引脚配置为输出。 将其25µs 为低电平至少1 μ s、将其驱动为高电平、然后等待50ms、直到 PHY 引导完成。  

    我这么说是对的吗?

    Br

    Fabian

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

    Fabian 您好、这种做法可行。 BUR 我想确认我之前提到的观点:

    您是否始终看到此状态,并且在运行迭代时是否为电路板加电复位,所有工业应用都需要在重新启动时重置电源。

    您能确认一下吗?

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

    尊敬的 Nilabh:

    我们在"实际"断电和接通期间看到了这一点。 我们在 QA 中进行了一些电源"抖动"测试。

    在短暂切断电源之后、我们为器件加电(我们连续执行此操作数次)。

    在像5个"脉冲"之后、我们来看一下器件是否正确启动  

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

    尊敬的 Fabian:

    因此、该问题出现在 QA 测试期间、它似乎在一定程度上取决于下电上电时序。 这可能取决于电路板特性(例如电容器以及放电所需的时间)。我们需要咨询硬件侧的专家。 请期待很快得到他的答复。

    您还能否详细说明一下在这里是如何进行功率抖动测试的?

    Br

    Nilabh A.

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

    尊敬的 Nilabh:

    "抖动电源"测试按如下方式完成:

    1.打开 PCBA 的主电源

    2.等待100ms  

    3.关闭 PCBA 的主电源  

    4.等待100ms

    5.重复步骤1。 改为4. 四次

    6.尝试通过以太网对 PCBA 执行 ping 操作

    7.如果 PCBA 可以被 ping 通,请再次执行步骤1

    这是通过数小时的测试完成的。

    Br

    Fabian

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

    尊敬的 Fabian:

    采用分立式电源解决方案还是 PMIC?

    您能否提供 PCBA 配电网络的原理图?  

    我同意您之前的声明、即一旦 AM243x 器件启动且所有电源/时钟信号都稳定、应用代码应负责将以太网 PHY 复位。

    此致、

    Zackary Fleenor

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

    尊敬的 Zack 和 Nilabh:

    好的、我认为我们需要在应用级别进行重置。  

    但你有什么建议来做这个重置呢? 是否应该始终等待50ms、然后释放重置或  
    是否有一个我们可以轮询的活动寄存器?

    谢谢  

    Fabian

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

    您好、Zack & Nilabh、

    Fabian 的同事在这里。

    我注意到在 TRM 中有一个 MDIO_ALIVE_REG 寄存器。 我刚刚选中了这个、它似乎代表了正确的值:

    这意味着地址0和2的 ethPHY 是有效的。 正确的地址。

    但我没有看到在任何驱动器中使用此寄存器。

    如果我按照说明进行操作:
    "如果 PHY 确认了对具有对应于寄存器位号的地址的 PHY 的最近一次访问、则该寄存器的32位中的每一位都将置位;如果 PHY 未能确认访问、该位将复位。 对 PHY 的用户访问和轮询访问都将导致相应的活动位更新。 活动位旨在用于通过相应的地址指示 PHY 是否存在。 向任何位写入1将清除该位、写入0无效。"

    该位应该告诉我们 PHY 是否可用、但只有在轮询访问之后才会更新该位。 由于我们在 MDIO 访问中遇到了这种挂起情况、我不确定"轮询访问 PHY "是什么意思。 连续 PhyRegRead 是轮询访问吗? 那么、我们可以连续读取 Phy 的任何寄存器并检查该寄存器以确保 PHY 处于活动状态?

    或者一个好的处理会是怎样的呢?

    问题是我们无法在启动时插入50ms 等待、因为我们的器件需要快速上电。 这可能会导致以下情况:
    Sitara 和 EthPhy 同时上电。 FW 启动、可能需要20ms 才能启动 Eth-phy-driver。 然后、睡眠会导致整体70ms 的时间、而不是只需要50ms 的时间。

    因此、检查寄存器是否处于活动状态将提高 Phy 的性能。 此外、问题是:如果该寄存器正常工作、如果仍需要拉 EthPhy 的复位引脚。 我想它会更稳定、尤其是在电源弹跳时、根据数据表、重置应该只需要2ms、而不是50次、所以我们可以这样做。

    因此我的建议是:
    1.同时为 Sitara 和 EthPhy 供电
    2.当创建 EthPhyDriver 时、可能会通过轮询 PHY 的任何寄存器在1ms 内检查相应 EthPhy 的 MDIO-ALive-register。
    3.(如果仍然需要)如果 PHY 处于活动状态、则通过将其拉至低电平至少25µs μ s 来通过 RST_N-Pin 进行复位、等待2ms (3ms 以确保没有时序问题)并继续执行固件。

    这种方法是否合适?

    此致

    Felix

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

    嗨、Felix:

    建议 如下:

    1. 同时为 Sitara 和 EthPhy 上电。
      1. 确保 EthPhy 的 RST_N 默认保持低电平并保持复位状态。
    2. Sitara 引导过程完成后、释放 EthPhy 的 RST_N
      1. 您可以使用 MAIN_RESETSTATz 状态引脚进行此控制
    3. 设置 MDIO_CONTROL_REG.ENABLE [30]位以开始轮询链路状态。
    4. 设置 MDIO_ALIVE_REG (确认 PHY 链路状态正确)后、继续执行固件。

    之前回复中提到的步骤最终导致以太网的初始引导浪费、因为代码无论如何都会最终复位器件。

    另请注意、设置  MDIO_CONTROL_REG.ENABLE [30]将自动导致对 PHY 通用状态寄存器进行轮询、并且无需额外的用户操作。 由于此 MDIO 操作的自动性质、驱动程序不使用 MDIO_ALIVE_REG。

    此致、

    Zackary Fleenor

x 出现错误。请重试或与管理员联系。