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:MDIO 手动模式

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1215130/mcu-plus-sdk-am243x-mdio-manual-mode

器件型号:MCU-PLUS-SDK-AM243X
主题中讨论的其他器件:TMDS243EVM

尊敬的支持团队:

我们使用的是板 TMDS243EVM。

我们的最终目标是在 AM243x CPU 上加载我们自己的 EtherNet/IP 堆栈。

我按照本指南使用 ICSS-EMAC:
https://software-dl.ti.com/mcu-plus-sdk/esd/AM263X/latest/exports/docs/api_guide_am263x/ICSS_EMAC.html
但在尝试发送以太网数据包时看不到链路检测。

由于问题 i2329 [MDIO 接口损坏(CPSW 和 PRU-ICSS)]、因此、 我按照本指南在手动模式下加载 MDIO:
https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/latest/exports/docs/api_guide_am243x/INDUSTRIAL_COMMS_MDIO_MANUALMODE_FW_USAGE.html

(有关 i2329的详细信息、请参阅 https://www.ti.com/lit/er/sprz457g/sprz457g.pdf?ts=1680680167338&ref_url=https%253A%252F%252Fsoftware-dl.ti.com%252Fmcu-plus-sdk%252Fesd%252FAM243X%252Flatest%252Fexports%252Fdocs%252Fapi_guide_am243x%252FINDUSTRIAL_COMMS_MDIO_MANUALMODE_FW_USAGE.html)

首先、我在 PRU0和 PRU1上为加载 PRU FW、如下所示:
C:\ti\mcu_plus_sdk_am243x_08_05_00_24\source\industrial_comms\EtherNetIP_adapter\ICSS_fwhal\firmi\mii\ethernetip_adapter_pru0_bin.h
C:\ti\mcu_plus_sdk_am243x_08_05_00_24\source\industrial_comms\EtherNetIP_adapter\ICSS_fwhal\firmi\mii\ethernetip_adapter_pru1_bin.h

然后、加载手动模式的 MDIO FW、位于此处:
C:\ti\mcu_plus_sdk_am243x_08_05_00_24\source\industrial_comms\ethercat_slave\icss_fwhal\firmware\g_v1.3\mdio_fw_bin.h

之后,我调用 ICSS_EMAC_PARAMS_INIT (),初始化结构 icssEmacParams 字段,然后再调用 ICSS_EMAC_OPEN ()。

当我 用调试器进入 ICSS_EMAC_OPEN ()时,即使我连接/断开了两个堆叠的 ICSSG 以太网端口上的电缆,也看不到任何链路。

在 MDIO_phyLinkStatus ()中,我可以看到这些 MDIO 寄存器:



我想知道是否正常、正如 API 指南页面中提到的 、某些寄存器不可用(MDIO_VERSION_REG、 MDIO_CONTROL_REG...) (参见§"影响")

如果没有加载手动模式设置的 MDIO FW、为了进行比较、我可以看到完全相同的寄存器值、很奇怪...

根据 i2329、好像在手动模式下加载 MDIO FW 不起作用、这可以解释未检测到链路。

在我的实施中、在两个以太网端口上都未检测到链路状态的原因可能是什么?
我是不是错过了什么?

简单来说、我还尝试加载演示项目"enet_lwip_icssg_am243x-evm_r5fss0-0_freertos_ti-arm-clang"、我可以看到连接/断开以太网电缆时链路状态发生变化、因此硬件正常工作。

感谢你的帮助。

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

    附加备注:

    在这个用于 EtherNet/IP 适配器演示的页面中:

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/latest/exports/docs/api_guide_am243x/EXAMPLES_INDUSTRIAL_COMMS_ETHERNETIP_ADAPTER_DEMOS.html

    在中可以看到 一条注释、指出 EtherNet/IP 适配器演示在 HS FS 器件上不起作用。


    由于我的 EVM 板是 TMDS243EVM、因此是 HS FS、这是否意味着我发现的链路检测问题与此不兼容有关?

    当我尝试在 HS FS 上加载 EIP 演示时,FW 会在函数 MDIO_phyRegRead ()中循环,因此永远不会启动应用。
    它在 GP 版本的 EVM 板上工作正常。

    应该怎样做才能使链路检测在 HS FS 器件上运行的 ICSS-EMAC 上正常工作?

    谢谢。
    卢多维奇

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

    尊敬的 Ludovic:

    我建议从 HSR-PRP 示例开始、并通过添加 EIP FW 对其进行修改。 我担心的是初始化问题、而不是勘误问题。

    您可以尝试以上内容吗?

    Br

    N·A·尼拉布

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

    尊敬的 Nilabh:  

    在 HSR 演示中、我设置了一个 IP 地址。
    当我尝试对它执行 Ping 操作时、没有响应。
    这是正常的吗?

    谢谢。

    卢多维奇

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

    尊敬的 Ludovic:

    这不是预期行为、因为 ping 应该可以正常工作。 让我检查一下、并在星期四之前再次查看  

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

    尊敬的 Ludovic:

    请尝试使用 PRP 示例、因为 PC NIC 通常会丢弃 HSR 帧、因为帧中存在的 HSR 标签无法被 PC 识别。

    PRP 也有标签、但它附加在末尾、以便 PC NIC 可以检测到它

    请您尝试一下、并告诉我。

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

    尊敬的 Nilabh:

    我确认 ping 可以用于 PRP 演示项目。
    我还尝试在做了一些修改后通过 HSR 演示使 ping 起作用(主要是删除与 HSR 相关的内容)。
    也可以使用、但存在超时问题、这可能是由于我在库中添加了调试跟踪以用于调试。

    您知道在 PRP 演示中 ping 的位置吗?
    是在 LwIP 还是其他地方?
    在 lwipcfg.h 中、我可以看到"#define LWIP_ping_app  0"、因此如果 ping 有效、它应该是别的。

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

    我们不建议修改 HSR 驱动器、因为它可能会影响功能。

    Ping 位于 lwip 中。 请允许我知道您正在尝试实施的是什么。

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

    尊敬的 Nilabh:

    按照您之前的建议、我将使用 HSR 演示项目作为连接我们自己的 EtherNet/IP 堆栈的基础、包括我们自己的 DLR 实施。
    由于我们根本不会使用 HSR、我将其删除、只保留了 LwIP 和 ICSS-EMAC。

    我的第一个目标是能够使用 LwIP 和 ICSS-EMAC 发送/接收帧、这就是我尝试使用 Ping 的原因。

    我还想按照与 MDIO 接口损坏相关的问题 i2329的建议、在手动模式下使用 MDIO 管理链路状态。

    Br、
    卢多维奇

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

    尊敬的  Nilabh:

    在 HSR-PRP 演示项目的 ICSS-EMAC 配置期间、我们可以看到以下情况:

    icssEmacParams.callBackObject.customRxCallBack.callBack =(ICSS_EMAC_CALLBACK) RedRxPktGet;
    icssEmacParams.callBackObject.customRxCallBack.userArg =(void*)(hsrPrphandle);
    icssEmacParams.callBackObject.customTxCallBack.callBack =(ICSS_EMAC_CALLBACK) RedTxPacket;
    icssEmacParams.callBackObject.customTxCallBack.userArg =(void*)(hsrPrphandle);
    ……
    然后致电:
    emachandle = ICSS_EMAC_OPEN (CONFIG_ICSS_EMAC0、&icssEmacParams);

    我想知道 与  rxRTCallBack.callBack 和 rxNRTCallBack.callBack.callBack?相比、什么叫 customRxCallBack.callBack 和 customTxCallBack.callBack

    谢谢。
    卢多维奇

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

    没问题、我已经找到了我的问题的答案。
        无论数据包的优先级如何,也无论数据包来自哪个优先级 Q,customRxCallBack 和 customTxCallBack 分别从 ICSS_EMAC_rxPktGet ()和 ICSS_EMAC_txPacket 调用。

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

    尊敬的 Ludovic:

    很高兴知道。 将关闭该主题帖

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

    你好,Nilbah,

    请尚未完成。
    我对 MDIO 软件权变措施 i2329有一个问题:

    在 i2329中、"注意"中指出、由于链路状态检查需要轮询间隔、实施运行时权变措施可能会对 CPU 或 PRU 负载产生重大影响。
    链接: AM64x/AM243x 处理器器件修订版1.0、2.0 (修订版 G)(TI.com)

    在 HSR 演示中没有实现轮询;通过调用 ICSS_EMAC_osInit ()中配置的 ICSS_EMAC_LinkISR ()来检测链路更改。

    注:
    我在手动模式下加载 MDIO 固件、并以太网/IP PRU 固件(替代 HSR PRU 固件)、因为未来我们计划使用 DLR。

    问题:
    为什么 HSR 项目中未实施轮询、这与 i2329中的说明相反?
    我的理解是从 R5内核实施轮询来检查链路变化。
    链路状态轮询是否由 MDIO FW 在内部在手动模式下完成,而手动模式会生成由 ICSS_EMAC_linkISR  ()中的 R5内核捕获的 ISR

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

    尊敬的 Ludovic:

    为什么 HSR 项目中没有执行轮询与 i2329中的解释相反?
    我的理解是从 R5内核实施轮询来检查链路变化。
    链路状态轮询是否由 MDIO FW 在内部在手动模式下完成,而手动模式会生成由 ICSS_EMAC_linkISR  ()中的 R5内核捕获的 ISR

    链路更改状态仍由 MDIO HW IP 使用 PHY 的 RX_LINK 引脚(MII0_RXLINK 和 MII1_RXLINK  引脚)进行监控。 在链路更改时,使用这些引脚中的信息,MDIO 硬件 IP 会生成链路更改中断,在该 中断上调用 ICSS_EMAC_linkISR()以处理中断。 只有 PHY 的 MDIO 通信受到勘误表 i2329的影响、因此由 PRU 固件处理。

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

    尊敬的 Ludovic:

    请告诉我上述讨论是否解决了您的疑问、以便我可以关闭该话题。  

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

    尊敬的 Himanshu:
    是的,这回答了我的疑虑。
    感谢你的帮助。