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.

[参考译文] AM5728:PRU EtherCAT 驱动程序停止接收帧

Guru**** 2563020 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/606386/am5728-pru-ethercat-driver-stops-receiving-frames

器件型号:AM5728
Thread 中讨论的其他器件:SYSBIOS

我们遇到了这样的问题:在重新启动目标之前、我们的 EtherCAT 主站不会看到任何从站、因为 PRU ICSS 驱动程序在 ESD 测试后会停止接收帧。  

通过使用 Wireshark、我们可以看到 EtherCAT 主站正在成功发送消息、它正在从从从站获取应答、但由于某种原因、EtherCAT 主站应用程序不接收应答、然后返回0从站。

在此之前、主器件会看到所有从器件。 一旦我们执行 ESD 测试、尽管主设备成功发送了帧、但似乎无法接收更多的 EtherCAT 帧。 这不是系统的、但很容易重复。

我们的应用程序不接受重新启动系统。 在分析之后、我们发现了以下统计数据:

在接收到坏的 CRC 帧或第一个未对齐的帧后、 PRU ICSS 似乎无法从它恢复、它始终接收到未对齐的帧。

-- 120sec AST:Idle NSL:7 TL:0 3TL:0 STL:0-
txBcast:239851 txMcast:0 txUcast:0 txOctets:106407584 rxBcast:239763 rxMcast:0 rxUcast:0 rxOctets:106414344-
tx64byte:82065 tx65_127byte:1 tx128_255byte:830 tx256_511 byte:78446 tx512_1023 byte:0 tx1024byte:78449--
rx64byte:82075 rx65_127byte:1 rx128_255byte:rx830 rx256_511 byte:78456 rx512_1023 byte:0 rx1024byte:78459--
lateColl:0 singleColl:0 multiColl:0 exeessColl:0 rxMisAlignmentFrames: 0 stormPrevCounter: 0 macRxError: 0 SFDError: 0 defTxError: 0 macTxError: 0-
rxOverSizeFrames: 0 rxUnderSizeFrames: 0 rxCRCFrames: 0 droppackets : 0 txOverFlow: 0 txUnderFlow: 0 sqeTestError: 0 TXqueueLevel: 100 CSError: 4194305-

-- 125sec AST:Idle NSL:7 TL:0 3TL:0 STL:0-
txBcast:254604 txMcast:0 txUcast:0 txOctets:113101336 rxBcast:254616 rxMcast:0 rxUcast:0 rxOctets:113108096--
tx64byte:87016 tx65_127byte:1tx128_255byte:830 tx256_511 byte:83397 tx512_1023 byte:0 tx1024byte:83400-
rx64byte:87026 rx65_127byte:1 rx128_255byte:830 rx256_511 byte:83406 rx512_1023 byte:0 rx1024byte:83410--
lateColl:0 singleColl:0 multiColl:0 exeessColl:0 rxMisAlignmentFrames: 0 stormPrevCounter: 0 macRxError: 0 SFDError: 0 defTxError: 0 macTxError: 0-
rxOverSizeFrames: 0 rxUnderSizeFrames: 0 rxCRCFrames: 0 droppackets : 0 txOverFlow: 0 txUnderFlow: 0 sqeTestError: 0 TXqueueLevel: 100 CSError: 4194305-

-- 130sec AST:Idle NSL:7 TL:0 3TL:0 STL:0-
txBcast:269463 txMcast:0 txUcast:0 txOctets:119797792 rxBcast:269475 rxMcast:0 rxUcast:0 rxOctets:119804552--
tx64byte:91969 tx65_127byte:1 tx128_255byte:830 tx256_511 byte:88350 tx512_1023 byte:0 tx1024byte:88353--
rx64byte:91979 rx65_127byte:1 rx128_255byte:830 rx256_511 byte:88359 rx512_1023 byte:0 rx1024byte:88363--
lateColl:0 singleColl:0 multiColl:0 exeessColl:0  rxMisAlignmentFrames: 0 stormPrevCounter: 0 macRxError: 0 SFDError: 0 defTxError: 0 macTxError: 0-
rxOverSizeFrames: 0 rxUnderSizeFrames: 0  rxCRCFrames: 0 droppackets : 0 txOverFlow: 0 txUnderFlow: 0 sqeTestError: 0 TXqueueLevel: 100 CSError: 4194305-

D:ECAT:在131655885上将主状态从"Op (操作)"更改为"Unknown (未知)"
D:EthercatMaster:Unknown:Setting EtherCAT Master State to Initialization at 131656358
D:ECATM:在131664020将请求主状态从"未知"更改为"初始"

-- 135sec AST:Idle NSL:0 TL:0 3TL:0 STL:0-
txBcast:276385 txMcast:0 txUcast:0 txOctets:122118766  rxBcast:274323 rxMcast:0 rxUcast:0  rxOctets:121985328--
tx64byte:95640 tx65_127byte:1 tx128_255byte:833 tx256_511 byte:89957 tx512_1023 byte:0 tx1024byte:89957--
rx64byte:93580 rx65_127byte:1 rx128_255byte:830 rx256_511 byte:89956 rx512_1023 byte:0 rx1024byte:89956-
lateColl:0 singleColl:0 multiColl:0 exeessColl:0  rxMisAlignmentFrames:2073 stormPrevCounter: 0 macRxError: 0 SFDError: 0 defTxError: 0 macTxError: 0-
rxOverSizeFrames: 0 rxUnderSizeFrames: 0  rxCRCFrames: 1 droppackets : 0 txOverFlow: 0 txUnderFlow: 0 sqeTestError: 0 TXqueueLevel: 100 CSError: 4194305-
E:ECATM:在135721777上从"未知"请求主状态到"初始"失败
D:ECATM:在136768452处将请求主状态从"未知"更改为"初始"
E:ECATM:请求主状态从"未知"更改为"初始"失败、地址为141063808

-- 140sec AST:故障 SF:0x00000004 NSL:0 TL:0 3TL:0 STL:0—
txBcast:278659 txMcast:0 txUcast:0 txOctets:122264238  rxBcast:274323 rxMcast:0 rxUcast:0  rxOctets:121985328--
tx64byte:97911 tx65_127byte:1 tx128_255byte:833 tx256_511 byte:89957 tx512_1023 byte:0 tx1024byte:89957--
rx64byte:93580 rx65_127byte:1 rx128_255byte:830 rx256_511 byte:89956 rx512_1023 byte:0 rx1024byte:89956-
lateColl:0 singleColl:0 multiColl:0 exeessColl:0  rxMisAlignmentFrames:4336 stormPrevCounter: 0 macRxError: 0 SFDError: 0 defTxError: 0 macTxError: 0-
rxOverSizeFrames: 0 rxUnderSizeFrames: 0  rxCRCFrames: 1 droppackets : 0 txOverFlow: 0 txUnderFlow: 0 sqeTestError: 0 TXqueueLevel: 100 CSError: 4194305-

-- 145秒 AST:故障 SF:0x00000004 NSL:0 TL:0 3TL:0 STL:0—
txBcast:280616 txMcast:0 txUcast:0 txOctets:122389486  rxBcast:274323 rxMcast:0 rxUcast:0  rxOctets:121985328--
tx64byte:99868 tx65_127byte:1 tx128_255byte:833 tx256_511 byte:89957 tx512_1023 byte:0 tx1024byte:89957--
rx64byte:93580 rx65_127byte:1 rx128_255byte:830 rx256_511 byte:89956 rx512_1023 byte:0 rx1024byte:89956-
lateColl:0 singleColl:0 multiColl:0 exeessColl:0  rxMisAlignmentFrames:6293 stormPrevCounter: 0 macRxError: 0 SFDError: 0 defTxError: 0 macTxError: 0-
rxOverSizeFrames: 0 rxUnderSizeFrames: 0  rxCRCFrames: 1 droppackets : 0 txOverFlow: 0 txUnderFlow: 0 sqeTestError: 0 TXqueueLevel: 100 CSError: 4194305-

-- 150sec AST:故障 SF:0x00000004 NSL:0 TL:0 3TL:0 STL:0--
txBcast:282573 txMcast:0 txUcast:0 txOctets:122514734 rxBcast: 274323 rxMcast:0 rxUcast:0  rxOctets:121985328--
tx64byte:101825 tx65_127byte:1 tx128_255byte:833 tx256_511 byte:89957 tx512_1023 byte:0 tx1024byte:89957--
rx64byte:93580 rx65_127byte:1 rx128_255byte:830 rx256_511 byte:89956 rx512_1023 byte:0 rx1024byte:89956-
lateColl:0 singleColl:0 multiColl:0 exeessColl:0  rxMisAlignmentFrames:8250 stormPrevCounter: 0 macRxError: 0 SFDError: 0 defTxError: 0 macTxError: 0-
rxOverSizeFrames: 0 rxUnderSizeFrames: 0  rxCRCFrames: 1 droppackets : 0 txOverFlow: 0 txUnderFlow: 0 sqeTestError: 0 TXqueueLevel: 100 CSError: 4194305-

因此、问题似乎更多地与 TI 相关、而不是与 EtherCAT 相关。  

你怎么看? 这是已知问题吗? 如何解决?

我测试了一个解决方案、该解决方案调用了 PRUICSS_pruDisable ()、PRUICSS_pruReset ()、PRUICSS_pruEnable ()、然后重新启动主器件、但它没有解决问题(我只尝试禁用/启用并仅重置两者)。

谢谢、

     Sylvain

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    已通知 RTOS 团队。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sylvain、您正在使用哪种 EtherCAT 从站版本? 哪个主设备?
    谢谢、
    Paula
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Paula、

    为什么需要 EtherCAT 版本? 问题不是指向 EtherCAT、而是 指向 PRU ICSS、因此我不理解为什么这些信息是相关的?

    此致、

      Sylvain

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sylvain、EtherCAT 版本将帮助我们了解 PRU-ICSS EtherCAT 从站固件构建版本。
    另一方面、您是否检查了 MDIO 活动状态和链路是否正确? 首先是检查 PHY 是否正常工作。

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

    您好、Paula、

      我们使用 的是 https://github.com/OpenEtherCATsociety/SOEM 上的 EtherCAT 主站 Soem 版本 cf76625f4caa3e7f6e9eb241797fdc8440c08fc0

      对于以太网驱动  程序、我们使用\ti\pdk_am57xx_1_0_5\packages、更具体地说是 ti\pdk_am57xx_1_0_5\packages/ti\drv\ICSS_EMAC。

      PRU 固件版本为:

    #include
    #include
    #define PRU0_firmware_name PRU0_firmware// PRU 头文件中 C 结构的名称
    #define PRU1_firmware_name PRU1_firmware// PRU 头文件中 C 结构的名称

      令我担忧的是,统计 信息 rxMisAlignmentFrames 和  rxCRCFrames  似乎是由硬件而非驱动程序更新的。 因此、我们似乎需要解决问题、以便 MAC 或 PHY 能够摆脱失准问题。

    此外,统计数据在 http://processors.wiki.ti.com/index.php/ICSS_EMAC_LLD_developers_guide:上被定义为未经测试

    rxMisAlignmentFrames 八位位组中字节数量不均匀的帧数

    (未经测试)

       总而言之、问题似乎仅出现在 EtherCAT 主站上、没有 EtherCAT 从站具有此类行为。 观察到问题后、EtherCAT 主站的传输路径正常工作、但 EtherCAT 主站的 PRU ICSS EMAC 接收到的所有以太网帧都报告未对齐、尽管 Wireshark 报告它们的格式也相同。  

    此致、

        Sylvain

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

    您好、Sylvain、感谢您的总结、我将尝试让我们的 ICSS_EMAC drv 专家参与其中。

    Paula

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sylvain、一个快速问题、您是否使用 TI RTOS 处理器 SDK 或 Linux 处理器 SDK?

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

    我们使用 的是 TI RTOS 处理器 SDK。

    谢谢、

      Sylvain

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sylvain、请您澄清一下(向我们解释) ESD 测试吗? 此外、您能否共享 Wireshark 日志?

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

    我们正在进行的 ESD 测试是在铝质货架上施加6 KV 放电、以干扰以太网通信。 这可能会损坏以太网总线上的帧、导致 CRC 错误。 然后、由于未知原因、我们再次遇到 RX 未对齐问题。

    我们没有记录 Wireshark 日志、但如果您确实需要、我们可以重新执行测试并记录日志。

    我们将 DP83822用作 PHY 的其他信息。

    谢谢、

    Sylvain
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Sylvain、感谢您澄清 ESD 测试。 日志对我们的专家进行进一步分析非常有帮助。

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

    我需要一些时间来再次进行设置。

    但是、正如我说过的、通信已经完成、Wireshark 报告从站按预期响应、但主站不接收帧、尽管 Wireshark 检测到这些帧。

    我想获取一些有关 RX 未对齐统计信息的信息。 它为什么会更新、出现这种情况时会发生什么、MAC 或 PHY 如何从这种情况中恢复。

    谢谢、

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

    您好、Paula、

      这是 Wireshark 跟踪、问题发生在数据包编号131462或时间27.506645附近。 在这一点之后、主器件发送信号、从器件做出响应、但主器件确实看到了应答。

    此致、

        Sylvain

    e2e.ti.com/.../RxMisalign.zip

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

    另请注意、使用 Wireshark 时、重现问题会更困难、因为我们需要通过智能交换机将数据包镜像到 Wireshark。 我们还怀疑导致问题的确切帧可能不在跟踪中、因为交换机过滤坏帧。

    此致、

    Sylvain
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sylvain、这是一个快速问题、我们确定 EtherCAT 从站在 ESD 测试后恢复正常吗?也许我们可以尝试将其连接到另一个 EtherCAT 主站、看看其行为是如何的。

    此外、您是否在主设备中启用了冗余? 。 我的想法是,如果我们将冗余电缆连接到另一个主端口(例如 eth1),在 ESD 测试之后,我们可以利用大于15us 的快速检测,看看主端口和从端口是否可以正常工作。 如果是这样、我们将确保主堆栈和从站正常工作、问题将集中在 eth0上。

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

    您好、Paula、  

     Sylvain 今天不在这里...

      到目前为止、我们已经看到从站通过以太网恢复并继续发送数据包(我们看到 Wireshark 跟踪传入、数据包看起来正常)。  

    我们没有简单的方法来添加第二个主器件。  这将需要更改我们的 PCB ...

    我们可以对当前设置执行什么操作来解决问题?

    感谢您的帮助!

    Jean-Michel Audet

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jean-Michel 您好,感谢您的答复。 我了解添加第二个 EtherCAT 主站还是冗余测试是否不容易。 我们将在这里努力重现此问题。

    谢谢、
    Paula
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、我在日志文件(PCAP 文件)中、我们可以看到以下事实:

    在第131470行、对于示波器、主器件会发送以太网数据包(重私有:01:01:01)、然后您可以看到从从器件返回的应答(当 WC 设置为7时、这意味着所有7个从器件都对应答返回做出贡献)。
    主器件发送 EtherCAT BRD 数据包作为广播保持活动数据包。 从站始终应答、但出于某种原因、主站不发送命令、而是重新命名广播保持活动数据包。 发生这种情况的唯一方法是主器件(在驱动器侧)不接收应答。 它与我们通过不对齐看到的行为匹配、这意味着数据包被丢弃。

    我希望这能有所帮助!
    JM
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Sylvain 和 Jean-Michel、我能够使用自制数据包生成器重现此问题、该数据包生成器可以生成具有奇半字节的 pkts 和稍微修改的 PRU-ICSS EMAC 环回演示版本(来自 PDK1.0.5)。

    我打开了一个 JIRA、以便我们的 PRU ICSS EMAC 专家可以确认并生成修复。 我会继续为您发帖。

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

    您好、Paula、

      好消息、一旦您知道我们何时可以获得修复、这将是一个很好的消息、因为我们在这里有很多压力、可以在不更改硬件的情况下尽快解决这个问题。

      如果我们还能做些什么来帮助您、请告知我们。

    谢谢、

      Sylvain

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

    您好、Sylvain、我已经测试 了 TI.com PSDK 4.0.0.4中发布的最新版本。 而且, 使用“奇半字节 pkts”时,RX 未对准。 但是 、RX 回调函数工作正常。  您能否 使用此包含 PDK 1.0.7的 PSDK 并在应用 ESD 测试后告知我您的观察结果?

    谢谢、

    Paula

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

    您好、Paula、

      我下载该软件包、只是为了确保该软件包的日期为 2017年6月26日、这是正确的吗?

      从安装的软件包中、我只需要使用 am57xx PDK 版本1.0.7、而不是我们现在使用的1.0.5?

      我将很快开始测试。

    谢谢、

         Sylvain

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sylvain、请在 PSDK 4.0.0.4软件包中安装所有工具。 EDMA、NDK 等、因为它们与之前的工具不同、并且不确定您使用的是哪些其他工具、但请记住、PDK1.0.7是使用 PSDK 4.0.0.4中的工具版本开发/测试的。

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

    从我们的角度来看、这是项目当前阶段的大量变化。 我将仅尝试使用 PDK 1.0.7、除非存在已知问题。

    谢谢、

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

    虽然 API 中有一些从1.0.5到1.0.7的变化、但这将比我的时间长。 我第一次没有进行干净的构建、也没有看到更改...

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

    您好、Sylvain、您好。它们是从 PDK 1.0.5到1.0.7的 API 更改。 需要一些移植工作。

    谢谢、

    Paula

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

    您好、Paula、

     我们使用最新的 SDK、NDK 和 BIOS 重现了问题、您怎么样?

    -- 160sec AST:Serving NSL:7 TL:0 3TL:0 STL:0-
     txBcast:300780 txMcast:0 txUcast:0 txOctets:133945896 rxBcast:300891 rxMcast:0 rxUcast:0 rxOctets:133994568--
     tx64byte:102470 tx65_127byte:1 tx128_255byte:830 tx256_511 byte:98889 tx512_1023 byte:0 tx1024byte:98914-
     rx64byte:102543 rx65_127byte:1 rx128_255byte:830 rx256_511 byte:98960 rx512_1023 byte:0 rx1024byte:989898989898986--
     lateColl:0 singleColl:0 multiColl:0 exeessColl:0 rxMisAlignmentFrames: 0 stormPrevCounter: 0 macRxError: 0 SFDError: 0 defTxError: 0 macTxError: 0-
     rxOverSizeFrames: 0 rxUnderSizeFrames: 0 rxCRCFrames: 0 droppackets : 0 txOverFlow: 0 txUnderFlow: 0 sqeTestError: 0 TXqueueLevel: 0 CSError: 4194305-
    D:ECAT:在161555096上将主器件状态从"Op"更改为"未知"
    D:EthercatMaster:Unknown:Setting EtherCAT Master State to Initialization at 1620817
    D:ECATM:在161707766上将请求主状态从"未知"更改为"初始"
    -- 165sec AST:Serving NSL:0 TL:0 3TL:0 STL:0-
     txBcast:307396 txMcast:0 txUcast:0 txOctets:136090574 rxBcast:305310 rxMcast:0 rxUcast:0 rxOctets:135953616--
     tx64byte:106087 tx65_127byte:1 tx128_255byte:833 tx256_511 byte:100289 tx512_1023 byte:0 tx1024byte:100289--
     rx64byte:103903 rx65_127byte:1E:ECATM:Req Master State 从"Unknown (未知)"更改为"Init"(初始)失败、地址为165811438
     rx128_255byte:rx830 256_511字节:100288 rx512_1023字节:0 rx1024字节:100288-
     lateColl:0 singleColl:0 multiColl:0 exeessColl:0 rxMisAlignmentFrames:2308 stormPrevCounter:0 macRxError:0 SFDError:0 defTx:0 macTxError:0-
     rxOverSizeFrames: 0 rxUnderSizeFrames: 0 rxCRCFrames: 1 droppackets : 0 txOverFlow: 0 txUnderFlow: 0 sqeTestError: 0 TXqueueLevel: 0 CSError: 4194305-
    D:ECATM:在166677275将请求主状态从"未知"更改为"初始"
    E:ECATM:在171034435处、请求主状态从"未知"更改为"初始"失败
    -- 170sec AST:Fault SF:0x00000004 SW:0x00000001 NSL:0 TL:0 3TL:0 STL:0-
     txBcast:309243 txMcast:0 txUcast:0 txOctets:136206734 rxBcast:305310 rxMcast:0 rxUcast:0 rxOctets:135953616--
     tx64byte:107831 tx65_127byte:1 tx128_255byte:833 tx256_511 byte:100289 tx512_1023 byte:0 tx1024byte:100289--
     rx64byte:103903 rx65_127byte:1 rx128_255byte:830 rx256_511 byte:100288 rx512_1023 byte:0 rx1024byte:100288--
     lateColl:0 singleColl:0 multiColl:0 exeessColl:0 rxMisAlignmentFrames: 3933 stormPrevCounter: 0 macRxError: 0 SFDError: 0 defTxError: 0 macTxError: 0-
     rxOverSizeFrames: 0 rxUnderSizeFrames: 0 rxCRCFrames: 1 droppackets : 0 txOverFlow: 0 txUnderFlow: 0 sqeTestError: 0 TXqueueLevel: 0 CSError: 4194305-

    该软件包是否包含用于 PRU 的新二进制文件?

    此致、

       Sylvain

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

    您好、Sylvain、使用旧的 PDK 1.0.5、如果我发送"奇数半字节" pkts、我永远不会返回 RX 回调函数。 使用最新的 PDK 1.0.7、即使具有"奇半字节" pkts、我也可以访问 RX 回调函数。 这是主要区别。

    关于 PRU 固件二进制文件、PDK 1.0.5和 PDK 1.0.7之间应该有一些更改、但是我从我们的开发人员那里获得了 PRU 固件二进制文件、该文件具有潜在的修复方法、请参阅随附的 zip 文件。 此修复程序位于 PDK1.0.7之上

    路径:C:\TI\pdk_am57xx_1_0_7\packages/ti\drv\ICSS_EMAC\firmware\ICSS_dualemac\bin

    在 PDK1.0.7之上测试此固件库时、我会获得与测试设置中没有这些库类似的结果、这就是我希望您首先测试原始 PDK 1.0.7固件二进制文件的原因。

    在任何情况下、请使用 Attached、并告诉我您的主器件是否可以在 ESD 测试后获取 RX 数据包

    e2e.ti.com/.../Firmware_5F00_iccs_5F00_dualemac_5F00_PDK_5F00_1_5F00_0_5F00_7_5F00_potentialRXmisalignFix_5F00_bin.zip

    谢谢、

    Paula

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

    我们使用的是 C:\TI\pdk_am57xx_1_0_7\packages\ti\drv\ICSS_EMAC\firmware\am57x\bin、您能否向我发送此二进制文件。

    #include
    #include
    #define PRU0_firmware_V1_0_name PRU0_firmware_V1_0 // PRU 头文件中 C 结构的名称
    #define PRU1_firmware_V1_1_name PRU1_firmware_V1_0 // PRU 头文件中 C 结构的名称

    #include
    #include
    #define PRU0_firmware_name PRU0_firmware // PRU 头文件中 C 结构的名称
    #define PRU1_firmware_name PRU1_firmware // PRU 头文件中 C 结构的名称

    谢谢、

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

    您好、Sylvain、请参阅 《SDK RTOS 迁移指南》 

    从那里我们可以看到:"ICSS EMAC 驱动程序组件包括双 EMAC 固件的源代码支持以及重建支持。 为了与 PRUSS 编译器保持一致、固件不再支持标头格式*。h..。 有关更新的固件二进制文件的更多详细信息、请单击此处"

    您可以以环回测试 CCS 项目为例。 要创建环回测试、请运行 pdksetupenv.bat 和 pdkProjectCreate.bat

    >pdkProjectCreate.bat AM572x idkAM572x 小尺寸 ICSS_EMAC ARM

    此外、我在下面观察到的情况下、使用固件修复重新运行测试:

    测试:

    1) 1)将 ARP 数据包发送到修改后的环回测试:RX Received OK

    2) 2)发送带有"奇半字节"的 ARP 数据包到修改后的环回测试:Rx 不会得到回调

    3) 3)将 ARP 数据包发送到修改后的环回测试:RX Received OK

    然后、当再次接收到"正常数据包"时、RX 恢复正常。

    注意:对于我的测试、我修改了环回测试、因此它不会比较 Tx 和 Rx 数据包、再加上一些其他修改。

    谢谢、

    Paula

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

    您好、Paula、

      遗憾的是、我无法使新 PRU 正常工作、我已升级链接和版本:

    并自定义随附的初始化文件、请参阅新的和旧的 version.e2e.ti.com/.../ICCSEmac.zip

    但以太网驱动程序不发送和接收帧。

    您能否查看我的修改并帮助我确定 PDK 1.0.7端口缺少的内容?

    谢谢、

      Sylvain

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

    我没有自定义以下文件、但可能需要 访问 e2e.ti.com/.../ICSSInit.zip

    Sylvain

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

    您好、Sylvain、我将检查该文件 并与环回测试的执行方式进行比较(附加了我的 main.c -仅有很少的修饰作为参考)。 以下是几个简短的问题:

    -简而言之,我没有看到 PRUICSS_pruWriteMemory(),您是否在另一个文件中加载固件?

    您是否获得了任何链路和 Rx 中断? 如果不是,您可以检查 linkIntNum 和 rxIntNum 是否正确?

    如果您尚未完成此操作、我建议您创建/构建环回测试并单步执行"main.c"、以查看 PRU 的设置和初始化方式。

    e2e.ti.com/.../4667.main.c

    谢谢、

    Paula

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    没有,我删除了 PRUICSS_pruWriteMemory(),所以我想这可能是问题所在。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    PDK 1.0.7中的 PRU0_firmware 和 PRU1_firmware 替换为什么以知道要传递给 PRUICSS_pruWriteMemory()的二进制文件的名称?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    看起来是(uint32_t *)&PRU_imem1_rev2_start、&PRU_imem1_rev2_end -&PRU_imem1_rev2_start 和(uint32_t *)&PRU_imem0_rev2_start、&PRU_imem0_rev2_end、&PRU_imem0_rev2_end?-pru_imem0_rev2_end?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sylvain、PRU_imem0_rev2_start 和 PRU_imem1_rev2_start、请遵循环回 main.c 流程。 它们可能是缺少的更多更改。 这可能需要一些时间、但至少所有内容都是一个文件

    Paula
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    符号是在哪里定义的? 看起来不是 PRU 二进制文件的一部分?
    对`PRU_imem0_rev2_end'的引用未定义
    对`PRU_imem0_rev2_start'的引用未定义
    对`PRU_imem1_rev2_end'的引用未定义
    对`PRU_imem1_rev2_start'的引用未定义
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您需要包括:
    #include
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    头文件 提供定义、我现在需要在哪里声明这些变量?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在 C:\TI\pdk_am57xx_1_0_7\packages/ti\build\pruss\lnk_A8_A9_a15_REV2.cmd 中
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    接近时、有两个问题需要解决:

    1. C:/ti/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld.exe:C:/ti/pdk_am57xx_1_0_7/packages/ti/build/pruss/lnk_a8_a9_a15_REV2.cmd:10:警告:存储器区域`APP_cached_data_BLK1_MEM'未声明

       应在何处声明 APP_cached_data_BLK1_MEM、要使用的值是什么?

    2. 在函数`MuxIntcP_create'中:AM572X/muxintcp/MuxIntcP_tirtos.c:60:未定义对`ti_SysBIOS_family_Shared_vayu_IntXbar_connect__E'的引用

      预计 ti_sysbios_family_Shared_vayu_IntXbar_connect_E 是 SYSBIOS 库的一部分、需要查看我的链接顺序... 有什么意见?

    此致、

    Sylvain

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

    Sylvan、为了确认、您是否添加了用于链接 ICSS_dualemac 二进制文件的标志、如下所示、如所附的快照所示? 您是否还添加了命令行 lnk_A8_A9_a15_REV2.cmd、如所附的快照中所示?

    -static

    ${pdk_install_path}/ti/drv/icss_emac/firmware/icss_dualemac/bin/am572x/a15_0/REV1/icss_dualemac_PRU0.bin ${pdk_install_path}/ti/drv/icss_emac/firmware/icss_dualemac/bin/am572x/a15_0/REV1/icss_dualemac_PRU1.bin ${pdk_install_path}/ti/drv/icss_emac/firmware/icss_dualemac/bin/am572x/a15_0/REV2/icss_dualemac_PRU0.bin ${pdk_install_path}/ti/drv/icss_emac/firmware/icss_dualemac/bin/am572x/a15_0/REV2/icss_dualemac_PRU1.bin

    谢谢、

    Paula

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

    我只包含版本2、因为这是我们使用的版本:

    我想我在 bin 之前缺少-static、会尝试...

    此致、

      Sylvain

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

    "C:/ti/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-gcc.exe -WL、--start-group -mcpu=cortex-a15 -marm -mfloat-abi=hard -mfp=vfpv4 -fno-exceptions -Dam5728 -debUG -dstop_am572x -dkos_device=hard -dkopos_hardware=am572X -fno-exceptions -dewl -dewl -dstewl -static -dwl -dwl -dwl -dwl -static -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl /ti/bios_6_46_05_55/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/fpu /stash/keos/Projects/rtos_ti/AM572X/A15/Debug-KR293 defsym、HEAPSIZE = 0x400 -WL、-TC:/ti/pdk_am57xx_1_0_7/packages/ti/build/pruss/lnk_a8_a9_a15_REV2.cmd -static C:/ti/pdk_am57xx_1_0_7/packages/ti/drv/icss_emac/firmware/icss_dualemac/bin/am572x/a15_0/REV2/icss_dualemac_PRU0.bin -o"armbase_ms7.out""./Sources/Communications/EthercatMaster/KaEthercatMaster.o ""./Sources/Communications/EthercatSlave/KaEthercatSlave.o ""./Sources/Controller/KaController.o ""./Sources/Controller/KaFwUpdater.o /Sources/KaActuatorConfig.o /Sources/KaRobotBase.o /Sources/NVRAM/M95256/KaM95256.o /Sources/Sensor/KaSensorButton.o /Sources/Sensor/KaSensorReadAdc.o ""./Sources/Controller/KaStateProcessor.o "./ti/pdk_am57xx_1_0_7/packages/ti/drv/icss_emac/firmware/icss_dualemac/bin/am572x/a15_0/REV2/icss_dualemac_PRU1.bin "./Sources/Communications/EthercatSlave/KaFoeUpgrade.o ".cc"/Sources/Controller/KaStateInit.o ".ldCM"/Sources/KaHardware.o ".ldCM"/Sources/Kinematics/KaControlModel.o -lwl"/Sources/KaLogger.o -ldCM"/Sources/Safeties/KaSafeties.o -r.com /Sources/Sensor/KaSensorManager.o -ldCM"/Sources/Sensor/KaSensorTemperature.o -ldCM"-l"-lwl"/Sources/NVRAM/KaNVRAM.o -ldCM"/Sources/Sensor/KaSensor.o /Sources/Sensor/KaSensorMiscSimulation.o /Sources/Sensor/KaSensorVoltage.o -r.com

    结果为:

    Makefile:189:目标'armbase_ms7.out'的配方失败
    C:/ti/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld.exe:C:/ti/pdk_am57xx_1_0_7/packages/ti/build/pruss/lnk_a8_a9_a15_REV2.cmd:10:警告:存储器区域`APP_cached_data_BLK1_MEM'未声明
    C:/stash/keos/Projects/rtos_ti/AM572X/A15/Debug-KR293 libkeos_a15.a (MuxIntcP_tirtos.o):在函数`MuxIntcP_create 中:
    C:/stash/keos/Kernel/File/drivers/AM572X/muxintcp/MuxIntcP_tirtos.c:60:未`对 ti_sysbios_family_shared_vayu_IntXbar_connect_E_E'的引用

    此致、

    Sylvain
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sylvain、您是否可以尝试在链接器命令文件中添加"、${pdk_install_path}/ti/build/pruss/lnk_a8_a9_a15_REV2.cmd "、如上一帖子中所示? 而不是仅针对测试使用-WL

    谢谢你
    Paula
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我确实将链接器窗口中的"${TI_PDK_INSTALL_DIR}/packages/ti/build/pruss/lnk_a8_a9_a15_REV2.cmd 行从"Misnewsous 移动到了库、但没有太大的成功:新的链接器行是:

    "C:/ti/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-gcc.exe -WL、--start-group -mcpu=cortex-a15 -marm -mfloat-abi=hard -mfp=vfpv4 -fno-exceptions -Dam5728 -debUG -dstop_am572x -dkos_device=hard -dkopos_hardware=am572X -fno-exceptions -dewl -dewl -dstewl -static -dwl -dwl -dwl -dwl -static -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl -dwl /ti/bios_6_46_05_55/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/fpu /stash/keos/Projects/rtos_ti/AM572X/A15/Debug-KR293 defsym、HEAPSIZE = 0x400 -static C:/ti/pdk_am57xx_1_0_7/packages/ti/drv/icss_emac/firmware/icss_dualemac/bin/am572x/a15_0/REV2/icss_dualemac_PRU0.bin C:/ti/pdk_am57xx_1_0_7/packages/ti/drv/icss_emac/firmware/icss_dualemac/bin/am572x/a15_0/REV2/icss_dualemac_PRU1.bin -o"armbase_ms7.out""./Sources/Communications/EthercatMaster/KaEthercatMaster.o ""./Sources/Communications/EthercatSlave/KaFoeUpgrade.o ""./Sources/Controller/KaController.o ""./Sources/Controller/KaStateInit.o ""./Sources/KaHardware.o ""./Sources/Controller/KaStateProcessor.o ""./Sources/Communications/EthercatSlave/KaEthercatSlave.o /Sources/KaActuatorConfig.o /Sources/KaRobotBase.o /Sources/NVRAM/M95256/KaM95256.o /Sources/Sensor/KaSensorButton.o /Sources/Sensor/KaSensorReadAdc.o /ti/pdk_am57xx_1_0_7/packages/ti/build/pruss/lnk_a8_a9_a15_REV2.cmd "".cc"".linker "".linker "/Sources/Kinematics/KaControlModel.o /Sources/Safeties/KaSafeties.o /Sources/Sensor/KaSensorManager.o /Sources/Sensor/KaSensorTemperature.o -lwl -l"-lwl -t"/Sources/NVRAM/KaNVRAM.o -lwl -lm -lwl -t"/Sources/Sensor/KaSensor.o -lwl -lwl -t.tr.cc"-dlpkg /Sources/Controller/KaFwUpdater.o -lwl -lm -lm -lwl -t"-lwl -t.cc"-lwl -t.dlpkg /Sources/KaLogger.o /Sources/Sensor/KaSensorMiscSimulation.o /Sources/Sensor/KaSensorVoltage.o

    相同的结果。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以向我发送链接器命令行吗?

    谢谢、

    Sylvain
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sylvain、下面是环回测试项目的 GNU 连接器摘要:

    -mfloat-abi=hard -Dam5728 -Dcore0 -DSOC_AM572x -DidkAM572x -DMEM_barrie_disable -g -gdwarf-3 -gstrict-dwarf -Wall -wl -map、"ICSS_EMAC_BasicExample_idkAM572x_wisdicl"-g -gstrict-dwarf -dewl -m-m-degr-vl -m-m-m-map-degr-dich-m-m-m-m-m-m-m-m-m-map-m-m-m-m-map-degr-m-m-m-m-m-m-map-vs -m-m-m-m-vs、-vs -vs -degr-m-map-dich-m-m-vs /TI/pdk_am57xx_1_0_7/packages/MyExampleProjects/ICSS_EMAC_BasicExample_idkAM572x_wSoCFile_armTestproject/../../ti/drv/icss_emac/firmware/icss_dualemac/bin/am572x/a15_0/REV2/icss_dualemac_PRU1.bin /TI/pdk_am57xx_1_0_7/packages/MyExampleProjects/ICSS_EMAC_BasicExample_idkAM572x_wSoCFile_armTestproject/../../ti/drv/icss_emac/firmware/icss_dualemac/bin/am572x/a15_0/REV2/icss_dualemac_PRU0.bin /TI/pdk_am57xx_1_0_7/packages/MyExampleProjects/ICSS_EMAC_BasicExample_idkAM572x_wSoCFile_armTestproject/../../ti/drv/icss_emac/firmware/icss_dualemac/bin/am572x/a15_0/REV1/icss_dualemac_PRU1.bin /TI/pdk_am57xx_1_0_7/packages/MyExampleProjects/ICSS_EMAC_BasicExample_idkAM572x_wSoCFile_armTestproject/../../ti/drv/icss_emac/firmware/icss_dualemac/bin/am572x/a15_0/REV1/icss_dualemac_PRU0.bin /packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/fpu /TI/bios_6_46_05_55/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/fpu

    谢谢、
    Paula
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    什么是-Map、"ICSS_EMAC_BasicExample_idkAM572x_wSoCFile_armTestproject.map"、它可能包含 app_cached_data_BLK1_MEM?