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**** 2563960 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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是最后创建的存储器映射
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我理解这一点、我正在寻找符号 app_cached_data_BLK1_MEM?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Sylvian、存储器映射是一个与 app.out 一同创建的输出文件、因此您可以查看所有内容的位置。 请将其添加到您的项目中、只需使用您的 appName 点图即可

    另一方面、我在快照下面找到了 APP_cached_data_BLK1的位置:

    如前所述、请使用 PDK1.0.7中的环回演示作为项目示例

    谢谢、

    Paula

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

    第二个误差的更多信息

    您是否在工程*。cfg 文件中配置了"IntXbar"变量? (如下所示)

    - var IntXbar  = xdc.useModule('ti.sysbios.family.shared.vayu.IntXbar');

    如果是、您能评论一下吗?

    请参阅随附的环回测试项目配置文件以供参考:

    e2e.ti.com/.../icss_5F00_emac_5F00_arm_5F00_wSoCFile.cfg

    谢谢、

    Paula

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

    您好、Paula、

    1. 我们即将结束2年的开发项目、因此我们将使用旧的 cfg 文件、添加"var IntXbar  = xdc.useModule('ti.sysbios.family.shared.vayu.IntXbar');"仅解决了第二个问题"in function `MuxIntcP_create':AM572X/muxintcp/MuxIntcP_tirtos.c:60:undefined reference to `ti_sysbios_review_connect___connect____connect_____connect____connect____connect____connect___connect____connect

    2. 关于构建配置文件以获取 APP_cached_data_BLK1_MEM、这意味着什么、我们现在不使用。 如果我 在项目中包含 C:\ti\pdk_am57xx_1_0_7\packages/ti\build\am572x\config_am572x_a15.bld、存储器映射将会发生什么情况?

    此致、

       Sylvain

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sylvain、了解您的问题、请检查/修改"CONFIG_AM572x_a15.bl"以满足您的项目需求。 也许您可以尝试快速(和脏)包含原样以进行快速测试、只是查看它是否起作用

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

    似乎我要使用"config_am572x_a15.bld"、然后需要从头开始完全重建项目。 是否有任何其他方法可以像以前一样链接新的 PRU 二进制文件? 这只是在 PRU 中进行修复升级时出现的链接问题。 我宁愿使用旧的头文件机制、风险更低、集成速度更快。 我觉得我所做的事情比它所需要的要大。 我将在周一早上再次讨论此问题、希望届时您能为我提供更简单的升级途径。

    此致、

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

    您好、Paula、

    这是我的应用配置文件 :e2e.ti.com/.../app.zip

    此致、

    Sylvain

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sylvain、您好、我们可以更改"lnk_A8_A9_a15_REV2.cmd"内存储器"PRU0_REV2_XX"中的位置。 我们可以尝试使用当前数据存储器的位置。

    只需说、您为数据存储器部分使用了"EXT_RAM"名称(请检查 linker.cmd)、然后、您只需在 lnk_A8_A9_a15_REV2.cmd 中进行更改:
    > APP_Cached_DATA_BLK1_MEM
    更改为
    > EXT_RAM

    请告诉我这是否可行。

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

    您好、Paula、

      我正在尝试这种方法、但现在似乎制作一个干净的编译失败了、并且有一些未定义的引用、而我在星期五没有遇到这些引用。 我正在对此进行调查。

    同时、获取 DUAL_EMAC 的等效头文件要容易得多:

    #include
    #include

    链接二进制文件、就像我们以前所做的那样...

    此致、

      Sylvain

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

    我成功地链接了包含新 PRU 在内的图像、今天稍后我将继续向您发布测试结果。

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

    你好,Sylvain,太棒了! 感谢您的帮助

    Paula

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

    到目前为止、我们的测试是正的。 我们在30次试验中没有再现这一问题、而以前是可以再现的、有60%的机会。 我们正在继续进行测试、我们预计将在一天结束前确认我们的当前结果。

    此致、

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

    我们的测试是肯定的、我们再也不能重现问题了。

    现在、我们的问题是测试工作、因为我们确实更新了过去一年使用(和测试)的所有 TI 库。

    从中删除
    com.ti.sdo .edma3:2.12.1;com.ti.rtsc.ndk:2.25.0.09;com.ti.rtsc.sysbios:6.45.1.29;com.ti.pdk.am57xx:1.0.5
    更改为
    com.ti.sdo .edma3:2.12.4;com.ti.rtsc.ndk:2.25.1.1;com.ti.rtsc.sysbios:6.46.5.55;com.ti.pdk.am57xx:1.0.7;

    我们需要重新测试所有内容。 因此、如果有可能、通过此修复程序、我们可以很容易地获得 PDK 1.0.5的简单更新。 这将大大降低我们的风险和测试工作量。

    此致、

    Sylvain
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、我理解 Sylvain、但据我所知、我们不会修复移植问题、因为我们很难维护移植问题。 我们始终建议用户更新为最新版本

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

    您好、Paula、

      我已经在没有 ESD 测试的情况下进行了夜间测试、并获得了以下统计数据:

    -- 55165sec AST:Idle NSL:1 TL:0 3TL:0 STL:0-

    txBcast:164916074 txMcast:0 txUcast:0 txOctets:411162832 rxBcast:164916227 rxMcast:0 rxUcast:0 rxOctets:411179152--
    tx64byte:10994442 tx65_127byte:1 tx128_255byte:54971979 tx256_511byte:0 tx512_1023byte:0 tx1024byte:0-
    rx64byte:109944624 rx65_127byte:1 rx128_255byte:54972069 rx256_511byte:0 rx512_1023byte:0 rx1024byte:0-
    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-

    为什么 PRU ICSS 报告许多 载波侦听错误?

    它看起来像一个已使用和未初始化的统计数据,因为它在启动时始终设置为该值。

    -- 5秒 AST:空闲 NSL:1 TL:0 3TL:0 STL:0--
    txBcast:6106 txMcast:0 txUcast:0 txOctets:629712 rxBcast:6175 rxMcast:0 rxUcast:0 rxOctets:637392-
    tx64byte:4349 tx65_127byte:1 tx128_255byte:1920 tx256_511 byte:0 tx512_1023 byte:0 tx1024byte:0-
    rx64byte:4445 rx65_127byte:1 rx128_255byte:1969 rx256_511 byte:0 rx512_1023 byte:0 rx1024byte:0-
    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-

    谢谢、

      Sylvain

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Sylvain、我将检查这个问题、并返回给你。 如有新问题、请帮助我打开新的 E2E 主题、以便跟进并分配给合适的人员更容易
    谢谢、
    Paula
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sylvain、我在下面的注释"ICSS_emacStatistic.h"中找到:

    //调试变量,这些不是标准 MIB 的一部分。 对调试很有用

    //保留供将来使用

      volatile uint32_t txOverFlow;        /**发送 FIFO 溢出计数*/

      volatile uint32_t txUnderFlow;        /**发送 FIFO 下溢计数*/

      volatile uint32_t sqeTestError;       /** MAC 接收错误数*/

      volatile uint32_t TXqueueLevel;       /**当前 Tx 队列级别*/

      volatile uint32_t CSError;          /**载波侦听错误数*/

    我将确认情况确实如此、并返回给您。

    谢谢、

    Paula

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

    您好、Paula、

      我们已完成测试、无法重现问题。 因此我们可以解决这个问题。

    谢谢、

       Sylvain

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

    您好,Sylvain,感谢您的介绍=)

    Paula