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:IND-COMMS-SDK EtherCAT Beckhoff Slave 示例-- am64x IEP 配置

Guru**** 2540720 points
Other Parts Discussed in Thread: SYSCONFIG, IND-COMMS-SDK

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1367237/am6442-ind-comms-sdk-ethercat-beckhoff-slave-example----am64x-iep-configuration

器件型号:AM6442
Thread 中讨论的其他器件:IND-COMMS-SDK、SysConfig、 DP83869

工具与软件:

您好!
我正在 phytec 开发板上使用 am64x。 我正在尝试运行 IND-COMMS-SDK 的 EtherCAT 示例(版本09_01_00_03)。
用于 PRU_IEP 信号的 SysConfig 默认配置不适用于 phytec 板、因为它将引脚用于其他用途(例如、 PRG0_IEP0_EDC_SYNC_OUT1引脚用于 以太网 PHY 的 INT/PWDN)。

现在、我想知道 latch0/1和 sync0/1的信号是否甚至需要多路复用到引脚、或者它是否应该正确配置 am64x 的时间同步路由器、而不是多路复用相应引脚上的信号。


此致、

Jakob

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

    尊敬的 Jakob:

    如果您不打算使用  latch0/1和 sync0/1引脚、则可以从 SysConfig 中将其删除。

    您还可以 将 SYNC 信号映射到4个时间同步路由器 SYNCx_OUT 引脚之一:  

    此致、

    亚伦

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

    大家好、Aaron:
    不使用它们、您的意思是、我不需要在 GPIO 引脚上使用它们、对吧?  
    PRUICSS EtherCAT 从站控制器固件需要它们用于分布式时钟机制、对吧?  

    如何正确配置它?  

    此致、

    Jakob

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

    尊敬的 Jakob:
    很抱歉迟到了响应。 请给我一些时间来研究这个问题。

    PRUICSS EtherCAT 从站控制器固件针对分布式时钟机制要求使用该固件、对吗?  
    [报价]
    • 是的、回答正确。
    如何正确配置该文件?  [报价]
    • 您的意思是要将同步信号映射到 TSR SYNCx_OUT 引脚而不是 PRG0_IEP0_EDC_SYNC_OUTx 引 脚?  请给我一些时间来研究这个问题。  我会在周三 EOD 之前回复您。

    此致、

    亚伦

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

    大家好、Aaron:

    目前、我不需要任何 GPIO 引脚上的信号来使用 am64x 的"外部"信号。 我想知道、是否需要将信号映射到任何引脚以便 PRUICSS 使用这些信号、或者是否以其他方式进行配置。   

    在 tiescsoc.c 的 ethercat_slave_Beckhoff_ssc_demo 代码中、存在以下代码:

    void tiesc_socEvmInit()
    {
        const PRUICSS_HwAttrs *pruicssHwAttrs;
        uint32_t inEventLatch0, inEventLatch1, outEventLatch0, outEventLatch1;
        
        ...
        ...
        
        /* TimeSync Router configuration for latch pins */
        if(pruicssHwAttrs->instance == 0)
        {
            inEventLatch0 = CSLR_TIMESYNC_EVENT_INTROUTER0_IN_PINFUNCTION_PRG0_IEP0_EDC_LATCH_IN0IN_PRG0_IEP0_EDC_LATCH_IN0_0;
            inEventLatch1 = CSLR_TIMESYNC_EVENT_INTROUTER0_IN_PINFUNCTION_PRG0_IEP0_EDC_LATCH_IN1IN_PRG0_IEP0_EDC_LATCH_IN1_0;
            outEventLatch0 = TIMESYNC_EVENT_INTROUTER0_MUXCNTL_8;
            outEventLatch1 = TIMESYNC_EVENT_INTROUTER0_MUXCNTL_9;
        }
        else
        {
            inEventLatch0 = CSLR_TIMESYNC_EVENT_INTROUTER0_IN_PINFUNCTION_PRG1_IEP0_EDC_LATCH_IN0IN_PRG1_IEP0_EDC_LATCH_IN0_0;
            inEventLatch1 = CSLR_TIMESYNC_EVENT_INTROUTER0_IN_PINFUNCTION_PRG1_IEP0_EDC_LATCH_IN1IN_PRG1_IEP0_EDC_LATCH_IN1_0;
            outEventLatch0 = TIMESYNC_EVENT_INTROUTER0_MUXCNTL_12;
            outEventLatch1 = TIMESYNC_EVENT_INTROUTER0_MUXCNTL_13;
        }
    
        HW_WR_REG32((CSL_TIMESYNC_EVENT_INTROUTER0_CFG_BASE + outEventLatch0), (inEventLatch0 | 0x10000)); // 0x10000 for enabling interrupt see userguide 10.3.2.3.1.2.1
        HW_WR_REG32((CSL_TIMESYNC_EVENT_INTROUTER0_CFG_BASE + outEventLatch1), (inEventLatch1 | 0x10000));
    }

    此代码是否要求将信号映射到 GPIO 引脚?  

    问题是:如何配置 IEP 模块或 PRU、需要执行哪些步骤来向 PRUICSS 固件提供所需的信号?

    此致、
    Jakob

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

    尊敬的 Jakob:

    [报价 userid="567243" url="~/support/processors-group/processors/f/processors-forum/1367237/am6442-ind-comms-sdk-ethercat-beckhoff-slave-example----am64x-iep-configuration/5240098 #5240098"]我想知道是需要将信号映射到任何引脚以使 PRUICSS 使用它们、还是以其它方式配置此引脚。   [报价]
    • 是的、您需要将信号映射到 PRUICSS 的特定引脚才能将其用于 EtherCAT 通信。 EtherCAT 驱动程序将使用映射的引脚。
    问题如何配置一般的 IEP 模块或 PRU、需要执行哪些步骤来为 PRUICSS 固件提供所需的信号?
    [报价]
    • 我将对此进行探讨、并在周一之前回复您。

    此致、

    亚伦

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

    尊敬的 Jakob:

    目前我不需要任何 GPIO 引脚上的信号即可"在 am64x 的外部"使用信号。

    如果您不打算在 AM64x 外部使用 SYNC/LATCH 信号、我认为您不需要将它们映射到任何引脚。

    PRUICSS EtherCAT 从站控制器固件针对分布式时钟机制要求使用该固件、对吗?  [报价]

    我不确定这句话是什么意思。 如果没有这些信号、ESC 固件非常令人满意。 恕我直言、您需要对 AM64x 内的直流执行什么操作。 仅仅通过 Sync0/1中断在 R5f 上运行某些代码就不需要这些信号。 如果希望通过 AM64x 内部时间同步路由器路由这些信号、也不需要它们在外部。

    请注意、我不是 TI、因此他们可能会为您提供其他建议。

    此致、

    Dominic

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

    您好、Dominic:
    感谢您的答复。 目前、我只想在 PHYTEC 板上使用 Beckhoff EtherCAT 堆栈运行工业通信示例。
    AM64x 工业通信 SDK:EtherCAT 子器件 Beckhoff SSC 演示

    使用 TwinCAT 或 EtherCAT 一致性工具、该器件无法识别为 EtherCAT 子器件。 使用 Wireshark 我可以看到、经过广播扫描子器件后、ESC 侧没有任何反应、即不发送任何应答。  

    因此、我尝试找出根本原因。 我必须对示例进行的更改是所使用的 PRU (PRU-ICSSG0而不是 ICSSG1)、并从引脚中删除 SYNC 和 LATCH 信号。 这就是为什么我对这些信号感到担忧的原因。

    此致、  
    Jakob

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

    你好、Jakob、

    在这个层面上,这是(几乎肯定的,如99.9%...) 与同步和锁存信号无关。

    您正在使用哪个 Phytec 板? phyBOARD-AM64x?

    您在 AM64x 上运行什么软件? 工业 仅限 Comms/MCU+ SDK、不含 Linux? 或者您是尝试随 Linux 一起运行 EtherCAT 子器件吗?

    如果您在 phyBOARD-AM64x 上独立运行 MCU+ SDK:

    phyBOARD 使用 AM64的 EXT_REFCLK1引脚作为 CLKOUT0、为 ICSSG 以太网 PHY 输出25 MHz 参考时钟。 如果您使用的是库存监视器 comms SDK 示例、该示例尚未启用。 我一直手动执行此操作、例如:

        /* configure EXT_REFCLK1 (A19) as CLKOUT0, output */
        *(volatile uint32_t*) 0x000f4274 = 0x10005;
    
        /* enable CLKOUT0 @25 MHz */
        *(volatile uint32_t*) 0x43008010 = 0x11;

    我还没有使用 phyBOARD 作为子设备,因此不幸的是,我不知道这是否是所有需要的,或者你将面临进一步的障碍。

    此致、

    Dominic

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

    您好、Dominic:
    是的、它是 phyBOARD-am64x、是 MCU+ SDK 独立。
    我配置了基准时钟。 我通过 ESC-MDIO API 检查了两个 PHY 是否处于活动状态、并在连接到 PC 时显示"Link up (链路接通)"。 我还将 PHY 更改为使用 MII 配置。  
    因此、我认为 PHY 不应该是问题。 但如果同步和锁存信号不是问题、我也不知道下一步该去哪里寻找。

    此致、
    Jakob

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

    尊敬的 Jakob:

    通过 ESC-MDIO API、两个 PHY 都处于活动状态并在连接至 PC 时显示链路接通

    IIRC ESC 固件不使用 MDIO 来确定链路状态、但默认情况下依赖于 RXLINK 引脚(这可通过配置更改)。 我认为可以检查 ICSSG 的 MDIO_LINK_REG、以确定 ICSSG 是否检测到链路。

    如果存在链路、您可以在 SoC 级别和 PRU 级别验证 Pin Mux、以验证所有 MII 引脚是否配置正确。

    如果所有引脚都配置正确、您可以查看 MII_G_RT_RX_STAT_*寄存器。 IIRC、您应该会看到接收到的帧在向上计数。

    我们已在几个定制板上启动了 TI ESC 从站、但始终存在可能出错的细微细节。 也许 TI 的某个人会为您提供其他建议。

    此致、

    Dominic

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

    您好、Dominic:  

    我查看了 ESC AM64x 工业通信 SDK 的寄存器:TI EtherCAT 子器件控制器寄存器列表
    当我将 ESC 连接到 PC 时、 ESC DL 状态寄存器将更改为"端口0链路建立"和"端口0连接已建立"。

    此外、帧计数器寄存器也会递增、当我从 PC 发送帧时、错误计数器寄存器会保持为0。

    您是否知道可能在 TX 端还会出什么问题?  因为 ESC 不会对一致性工具的 ECAT 链路发现做出响应。

    非常感谢您到目前为止提供的帮助。

    此致、
    Jakob

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

    尊敬的 Jakob:

    我必须对示例做的更改是使用的 PRU (PRU-ICSSG0而不是 ICSSG1)

    对于 ICSSG0实例、您将需要一个 附加电路板、并确保 PHY 复位序列和 ETHPHY 初始化是相对于相应的附加电路板以及 SysConfig 更改完成的。 您可以查看上面提到的示例以供参考。   

    此致、

    亚伦

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

    大家好、Aaron:  
    是的、我使用 ICSSG0、但由于我不使用 TI-EVM、而是使用 phyboard am64x、因此我不需要附加板的权变措施。
    为了确保我已迁移至最新版本的 ind 通信(V09.02.00.00.08)
    我得到与之前相同的行为。  

    如前所述、当连接到 PC (一致性工具、子器件扫描)时、ESC 会接收 ECAT 帧。 因此、PHY 配置上没有问题。 至少在 RX 侧。

    需要发生什么情况、这样 ESC 就能对广播做出响应?  

    此致、
    Jakob

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

    我想您在使用 r5fss1-0上运行的示例。 请确保根据电路板初始化 SysConfig 更改。

    如前所述、ESC 在连接到 PC 时(一致性工具、子器件扫描)确实会接收 ECAT 帧。
    • 您是否可以共享同一 Wireshark 日志?

    此致、

    亚伦

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

    大家好、Aaron:  
    是对于最新版本的 ind-comms、它在 r5fss-1-0上。 由于我只使用一个内核、因此我要将其更改为 r5fss-0-0。
    这是一个日志的屏幕截图。 遗憾的是、您看不到太多内容、因为 ESC 没有应答、前三个帧是"扫描可用器件"、其余帧是由 EtherCAT 一致性工具启动的"扫描从站"。 当我发送这些帧并检查 ESC 的寄存器0x0E00 (端口0帧计数器)时、它会递增。 因此、ESC 能够看到这些帧。 我不知道如何知道,为什么它不给出答案。  当 ESC 接收到帧时、寄存器0x030C (ECAT 处理单元错误计数器)不递增、 RX 错误计数器(0x0300)也不递增

    此致、
    Jakob

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

    尊敬的 Jakob:

    感谢您的确认。

    是否可以共享 EtherCAT SysConfig 快照以确认 PRU0/1的 Tx 引脚是否连接到 MII0/MII1?

    此致、

    亚伦  

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

    大家好、Aaron:
    这里是 MII 信号的屏幕截图、
    我还进行了检查、确认信号已在电路板的原理图上正确路由到 PHY。


    此致、
    Jakob

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

    谢谢 Jakob。

    这似乎是对齐的。 您能否提供 ICSS 存储器转储(尤其是 ESC 寄存器和 MDIO 寄存器)?

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

    大家好、Aaron:
    当然。 我附加了转储。  
    CPU 错误计数器的值为3、因为一旦我将以太网电缆连接到主机、就会发送三个 EAPOL 协议数据包。 (这是基于公司设置的设置、我无法禁用它)。 如果我发送 EtherCAT 帧、RX 计数器会增加、但 CPU 错误计数器保持不变。
    MDIO 寄存器值来自 PRU_ICSSG0_PR1_MDIO_V1P7_MDIO 地址、具有相应的偏移量。

    phy 地址为1和2。 PHY 地址1是端口0。
    e2e.ti.com/.../mdio_5F00_reg_5F00_dump.loge2e.ti.com/.../esc_5F00_reg_5F00_dump.log

    此致、
    Jakob

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

    谢谢 Jakob。 我将对其进行分析并给您回复。

    此致、

    亚伦

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

    大家好、Aaron:

    我还发现、DL 状态(0x110)的 ESC 寄存器显示端口1的"链路建立"和"已建立连接"、即使它连接到端口0也是如此。
    通过查看端口0帧计数器寄存器(该寄存器在连接到主机 PC 时递增)可以确认这一点。

    只有新版本 09_02_00_08中出现这种情况。 它在版本 09_01_00_03中正确显示"链路接通"和"已建立连接"。

    我上一篇文章中的寄存器转储也显示了该行为。 端口0帧计数器位于3 (0xE00)并且显示端口1已连接(0x110)


    此致、
    Jakob

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

    感谢您的观看。 我将在内部检查它、然后回复给您。

    此致、

    亚伦

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

    尊敬的 Jakob:

    [报价 userid="567243" url="~/support/processors-group/processors/f/processors-forum/1367237/am6442-ind-comms-sdk-ethercat-beckhoff-slave-example----am64x-iep-configuration/5259412 #5259412"]我还发现、用于 DL 状态(0x110)的 ESC 寄存器显示端口1的"链路接通"和"已建立连接"、即使它连接到端口0也是如此。
    通过查看端口0帧计数器寄存器(该寄存器在连接到主机 PC 时递增)可以确认这一点。[/QUOT]
    • 我将这些值与我们的工作示例进行了比较、我看到在我们的示例中、我们有的位9  ESC DL 状态 这意味着"通过端口0建立通信"。
    • 同样、位8复位、这意味着端口0上的循环已打开且位4已置位、这意味着在端口0上检测到物理链路。
    • 您能否确认在配置期间是否交换了 PHY 地址?

    此致、

    亚伦

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

    大家好、Aaron:
    非常感谢您的调查。
    我最终发现了导致 TX 问题的错误。  
    在 dp83867驱动程序中、我已读出 rgmii 配置寄存器、清除第7位以启用 mii 模式、并将其写回 dp83869的寄存器。  
    这 导致了配置错误、并且在我调整 dp83867的 ethphy_dp83869.c-file 时、只是复制粘贴错误。

    现在我找到了具有广播功能的 ESC、它将从站信息发送到主器件。

    感谢你的帮助。

    此致 Jakob