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.

[参考译文] AM243X-AM243X:MCU-PLUS-SDK LaunchPad - EtherNet/IP 适配器通用器件 MII

Guru**** 2455560 points
Other Parts Discussed in Thread: DP83826E, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1438978/mcu-plus-sdk-am243x-am243x-launchpad---ethernet-ip-adapter-generic-device-mii

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

工具与软件:

大家好!

我从几周开始致力于 EtherNet/IP 协议、并尝试运行和研究 SDK 9.02.15示例文件夹中包含的名为"EtherNetIP_adapter_demo"的示例。

在 AM243x LaunchPad (用作从设备)上加载示例后、我已尝试在专用本地网络中使用 PC 上的软件连接到用作主设备的从设备。

例如、如果我选择"Input Only"命令从从从器件读取属性、则会看到主器件和从器件之间的通信持续了8次。

之后、主器件停止发送任何内容、但从器件继续发送其他8条消息。

然后、Slave 关闭 TCP 连接。

为什么通信仅对前8条消息有意义、之后从器件在没有主器件请求的情况下继续发送消息?  

您可以看到 Wireshark 记录的日志作为附件。

谢谢你。

此致、

Stefano

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

    Stefano、您好!

    根据您使用的配置、您能否在 CCS 存储器浏览器中检查以下存储器地址:

    1. 0x3001FF08
    2. 0x3001FF0C

    这些地址   分别对应于 MDIO 活动寄存器和 MDIO 链路寄存器。 这些可以帮助我们确定2件事:
    1. PHY 正确响应 ICSS MDIO 模块
    2.如果正在检测到 PHY 的链路

    此致
    归档开发

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

    您好!

    我有这两个值。 但我无法找到手册中解释的位置。  

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

    Stefano、您好!

    您在应用中编程的 PHY 地址是什么? 应在 MDIO_ALIVE_REG (在应用初始化之后)和 MDIO_LINK_REG (如果该 PHY 上的链路已建立)中设置与这些 PHY 地址相对应的位。

    有关详细信息、请参阅" 6.4.14.10 PRU_MDIO_MDIO 寄存器 "一节。

    此致
    归档开发

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

    您好!

    我在地址1 (DP83826E)和地址2 (TJ1100)上有一个 PHY、在 RX 和 TX 中似乎不起作用

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

    Stefano、您好!

    我看到  MDIO_ALIVE_REG (0x3001FF08)对应的值为0x06 -->这意味着地址1和2的 PHY 均处于活动状态。

    关于 MDIO_LINK_REG (0x3001FF0C)、我看到该值为0x02 ->、这意味着仅检测地址1处的 PHY 建立链路。

    是否也在地址2 (TJ1100)为 PHY 接通以太网链路?

    此致
    归档开发

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

    您好!  

    遗憾的是、我没有电缆连接到此 PHY、但它连接到另一个模块。 现在、我正在使用电缆来检测这种情况。

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

    Stefano、您好!

    您能否确认以下几点:

    连接到 TJ1100 PHY 的另一个模块是否检测到连接到 TJ1100 PHY 的端口上的链路?


    2.如果可能、 您是否能够在 PC 和 TJ1100 PHY 之间连接以太网电缆并观察  MDIO_LINK_REG (0x3001FF0C)的值? 根据预期、成功链接后、应在该寄存器中设置位2。


    3.作为第2点的延续、 您是否可以使用 TJ1100 PHY 在 PC 和 DUT 端口之间运行一些 Ping/EIP 消息传送测试?

    此致
    归档开发

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

    您好!

    其他模块未检测到链路接通

    此致。

    Stefano

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

    Stefano、您好!

    感谢您试用该建议。

    1.能否确保两个节点(具有 TJ1100和其他模块的 AM243x)上 PHY 的 Speed 和 Duplex 设置是否兼容? 未对齐的设置(如果不使用自动协商)可能会导致链路检测出现问题。

    您是否还可以尝试上一条消息中提到的以下步骤:

    2.如果可能、 您是否能够在 PC 和 TJ1100 PHY 之间连接以太网电缆并观察  MDIO_LINK_REG (0x3001FF0C)的值? 根据预期、成功链接后、应在该寄存器中设置位2。

    3.作为第2点的延续、 您是否可以使用 TJ1100 PHY 在 PC 和 DUT 端口之间运行一些 Ping/EIP 消息传送测试?

    此致
    归档开发

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

    Stefano、您好!

    如果可能、您是否还可以分享用于测试的网络拓扑详细信息?

    此致
    归档开发

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

    您好!

    我发现了问题。

    问题是 EIP 堆栈设置错误的回调函数而不是我的 PHY 层的功能。

    特别是、设置为 OPEN、COMMAND 和 CLOSE 的回调函数为 PRU_PHY_Close -  PRU_PHY_Open、这是我有 PHY 写入功能的函数。

    我该如何避免这种情况呢?

    在调用堆栈中、我看到它被称为 EIP_LOAD_PRU、并设置此函数。 我需要设置我的函数而不是默认值。

    此致

    Stefano

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

    Stefano、您好!

    那么、问题是、如果您已将自己的 PHY 实现正确地介绍到堆栈中、正确的方法是:
    1) PHY 实施应实现 以下接口:CUST_PHY_SPhyDescriptor_t (可在 custom_phy.h [ /source/industrial_comms/common/inc)

    2) 2)确保您已为 PHY 实现此接口后、现在您应该将其引入 PHY 检测阶段:  
    在 CUST_PHY_BASE.c 下、扩展以下数组以包括您的 PHY:

    您是否已遵循此设计并仍然失败?

    此致、
    Pourya

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

    是的、问题是不会调用像软件复位这样的函数。

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

    您好、如果我没有看到错误、则在示例中、数组 CUST_PHY_knownImplementation_s 仅具有 NULL 值、但会调用类似的回调。

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

    Stefano、您好!

    如果  CUST_PHY_knownImplementation 中未提供自定义 PHY 驱动程序、则 栈 会 在内部研究已知的实现(例如 DP83869)。
    您能否确认是否在 UART 日志中打印了"TJA1101 Detected"? 或者、你可以调试一下、看看是否调用了检测函数?

    此致、
    Pourya

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

    是的、就是这样。

    如此日志所示。

    我的同事正在研究 Profinet、在他的情况下、所有工作都正常。 事实上、当 PRU 调用 PRU_PN_Load 时、它会调用 TJA1100的回调。

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

    您好!

    您可以看到、TJ1100已在调试中检测到。

    再见

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

    Stefano、您好!  

    您能否也在所有接口函数(例如 CUST_PHY_TJA1101_softwareReset)上放置断点、并查看是否实际调用了它们?

    此致
    Pourya

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

    尊敬的 Pourya:  

    在这部分代码中设置断点、从不会触发断点。  

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

    Stefano、您好!

    软件 重新启动 通常不会在初始化阶段调用、而是在软件中调用 复位 正弦值。
    为了确保不会出现调试器问题、您能否在名为的函数上设置断点  PRU_PHY_EXT_softwareReset 、如果此函数被触发、则逐步运行代码(Step Into [F5])以查看是否进入 phy-reset 函数。  

    同时、您可以将您的 SysConfig 文件和 CUST_ethPhy.c 文件(位于中)发送给我 /板/ /freertos/drivers/ethphy

    此致
    Pourya

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

    e2e.ti.com/.../ethernetip_5F00_ICSS_5F00_EMAC.txtHi  Pourya,

    作为附件、您可以找到所需的文件。

    此致

    Stefano

    e2e.ti.com/.../CUST_5F00_PHY_5F00_base.ce2e.ti.com/.../8551.CUST_5F00_PHY_5F00_dp83826e.ce2e.ti.com/.../CUST_5F00_PHY_5F00_tja1101.ce2e.ti.com/.../CUST_5F00_ethPhy.c

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

    Stefano、您好!

    您的 PHY 是否通过引脚 Strap 配置设置为自主运行模式? 如果不是、那么我认为您应该通过寄存器访问(寄存器27、位15)来执行该操作。 除此之外、您是否测试过 CUST_PHY_TJA1101_softwareReset 是否被调用?
    如果是、则第一步只需 将您在 CUST_PHY_TJA1101_softwareRestart 中实现的相同逻辑复制到 CUST_PHY_TJA1101_softwareReset 中 、看看它是否有用。
    下一步、您需要 
    正确实现 CUST_PHY_TJA1101_setLinkConfig。  

    另一点是、SysConfig 希望您为 PHY 定义两个变量(如果尚未声明、则实际上应该会生成链接器错误)、我希望在 CUST_ethPhy.c 中看到它们、这就是我提出该请求的原因。
    您在哪里声明了这些变量?

    在上面的示例图中、我刚刚声明了 CUST_ethPhy.c 中的变量

    此致、
    Pourya

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

    尊敬的  Pourya:

    将代码从 software_restart 复制到 software_reset、TJ1100工作正常。

    非常感谢!

    此致

    Stefano

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

    您好!

    关于采用 EtherNet/IP 的冗余协议、我可以使用 DLR 或 HSR/PRP、或者在您的协议栈中仅支持 DLR?

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

    Stefano、您好!

    是的、仅 DLR 作为冗余协议受我们当前的 EthernetIP 协议栈支持。  

    此致
    归档开发

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

    您好!  

    好的、谢谢。

    我能否举例说明如何使用 ICSS_DLR 函数和 ICSS_EIP_DRIVER.h?

    具体来说、我已经使用了你们的堆栈、并且我已经开发了有关 CIP 消息的一个很大部分。 现在我必须开始开发冗余性、但我认为、例如、我必须在调用 DLR_init ()之前设置 DLR_Handle。

    我可以提供一些建议吗?

    此致

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

    Stefano、您好!

    在我们的示例中、默认启用 DLR 功能。 您可以使用 EthernetIP 显式消息传递来查询 DLR 对象(0x47)的属性。

    此致
    归档开发

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

    您好!

    好的、那么如何设置环网(属性1)?

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

    Stefano、您好!

    DLR 对象中的属性1 (网络拓扑)不是可设置的属性。 它仅返回网络的当前网络拓扑(环形/线性)。

    您可以在网络中引入一个 DLR 主管来定期发送信标帧、在这种情况下、DUT 中属性1的值应切换为 Ring。

    此致
    归档开发

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

    您好!  

    有没有办法用一些工具来模拟 DLR 监控器?

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

    Stefano、您好!

    我个人并不知道有任何可用于模拟德国航天中心监督员功能的公开工具。 通常需要一个 PLC 或配备 DLR 监控器功能的设备。

    此致
    归档开发

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

    尊敬的 Pourya:

    您知道如何在 https://hilscher.atlassian.net/wiki/spaces/EIS2V7/pages/123994946/Hilscher+EtherNet+IP+Tool?中加载.eds 文件吗

    此致、

    Stefano

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

    Stefano、您好!

    我不确定这是否可行。 您 可以使用 ODVA CT21 EN 工具、可以访问报文传递工具(显式、IO 等)、当然也可以运行一致性测试。

    此致、
    Pourya

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

    您好!  

    是否有办法从命令行编译 CCS 工程(.projspec)、而不打开工程和使用自动生成的 makefile 文件?

    此致

    Stefano

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

    Stefano、您好!

    可以、当您在系统上安装"make"后、可以将 其 与 projectspec 文件一同使用、以从命令行构建工程:

     make -f makefile_projectspec clean profile=Release
     make -f makefile_projectspec 导出配置文件=发布
     make -f makefile_projectspec 所有配置文件=发布

    (配置文件可以是"发布"或"调试")
    此致、
    Pourya
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Stefano:

     我认为您刚才要求的应该是针对功能的单独 e2e 条目。

    许多设计流程往往使用调用非常长的命令行参数的 GUI 界面(即 CCS、SysConfig)。

    根据所使用的操作系统、还可能出现在命令行中达到字符限制的问题。

    此致

    Jim (前 TI 员工'82-'97)

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

    尊敬的 Pourya:

    在哪里可以找到  makefile_projectspec?  

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

    您好!

    安装工业通信 SDK 时、会随附已生成的  makefile_projectspec 和  example.projectspec。 例如:
    \examples\industrial_comms\EtherNetIP_adapter_demo\device_profiles\generic_device\mII\am243x-lp\r5fss0-0_freertos\ti-arm-clang

    现在、如果您有一个定制项目并且希望将.c、.h 文件添加到您的构建中、那么您需要 相应地调整 example.projectspec。  
     makefile_projectspec 只是一个文件、可使构建无头 CCS 工程变得更容易。
    有关无头构建的详细信息、请参阅此处:
    使用命令行创建和编译工程

    此致、
    Pourya  

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

    您好!

    是否能够使用与 OSPI 控制器相关的闪存相关的两个不同读取/写入命令?

    我的目标是使用两个不同的读取/写入命令、一个用于读取/写入存储器的一个部分(比如标准方式)、一个用于读取/写入 SSR 区域(如 OTP 区域)。 我的闪存为这两部分提供这两种不同的命令、我需要使用这两种命令。

    此致

    Stefano

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

    Stefano、您好!

    由于此查询与 EthernetIP 无关、请关闭此主题并使用您的问题创建一个新查询。 这将确保新线程被分配给相关的域专家。

    此致
    归档开发

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

    大家好!

    我使用该线程是因为我有一个有关 TI EtherNet/IP 堆栈的请求。

    是否有办法使用我认为位于 TI 堆栈中的 lwip? 具体而言、我需要创建像 TFTP 服务器这样的固件更新。 是否具备从 PHY 层获取 EtherNet/IP 协议之外的以太网数据的其他方法?

    谢谢!

    此致

    Stefano

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

    大家好!

    我使用该线程是因为我有一个有关 TI EtherNet/IP 堆栈的请求。

    是否有办法使用我认为位于 TI 堆栈中的 lwip? 具体而言、我需要创建像 TFTP 服务器这样的固件更新。 是否具备从 PHY 层获取 EtherNet/IP 协议之外的以太网数据的其他方法?

    谢谢!

    此致

    Stefano

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

    Stefano、您好!

    lwIP 库与 EthernetIP 协议栈分离。 您可以在"ICSDK_INSTALL_PATH\source\industrial_comms\EtherNetIP_adapter\stack\lwip"下查看该软件。

    您可以进行所需的修改并重新编译库。  

    此致
    归档开发

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

    您好!

    感谢您的回答。

    我已经找到了。 我的问题是,例如:如何恢复 lwip 中使用的结构 netif ? 以管理链路回调(例如、使用 PHY 层)。

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

    Stefano、您好!

    您无需访问较低层即可了解有关链路的信息、例如、您可以使用 netif_add_ext_callback 注册您的回调以进行链路状态更改、而无需访问较低层(ICSS-EMAC)。 对于 TFTP、您可以尝试 tftp_init_server 来查看它是否工作。  
    例如,您可以看到,我们已经在应用程序层中有一个 Webserver ,我们不直接与低层 API 交互,而只是 LWIP。 我认为您还可以运行 TFTP 服务器。

    此致、
    Pourya