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.

[参考译文] AM3357:ICSS EMAC TX 数据包错误

Guru**** 2540720 points
Other Parts Discussed in Thread: AM3357

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/851511/am3357-icss-emac-tx-packet-error

器件型号:AM3357

Sitara 支持团队、

我的客户遇到 PRU/ICSS2实例的 TX 数据包错误问题
在定制板上使用 AM3357、

当前状态:
(1)环境:
软件:TI PROCESSOR-SDK-RTOS-AM335X 4.02

(2)根据上述 SDK 中 ICEv2的 PRU/ICSS2实例的 IP 示例代码进行修改
以同时操作 CPSW1实例的 IP。
客户参考"Nimu_ICSS_FtpExample_icev2AM335x_wSoCLib_armExampleProject"、
因为示例软件结构靠近其系统。

(3)错误状态:
启动时、IP 地址分别分配给三个实例中的每个实例:CPSW1、PRU1、PRU2。
客户检查了六个板套、三个板运行良好、
但其他三个板不能每次在 PRU2端口上发送。
六个板的硬件没有不同。
确认已接收到来自 PRU2的 RX 并返回接收到的响应、
并向 PRU 固件发出传输请求。 但数据包不会输出。

(4)连接状态:100M 以太网端口
定制板 PRU#0 (RJ45)=== 交叉电缆===(通过电缆切换)==PC:Win10
定制板 PRU#1 (RJ45)=== 交叉电缆===(通过电缆切换)===(PC:Win10)
定制板 CPSW#0 (RJ45)=== 交叉电缆===(通过电缆切换)===(PC:Win10)

检查以下各项以研究不发送数据包的原因。

调用"ICSS_EmacTxPacketEnqueue"请求将数据包传输到 PRU
在 pdk_am335x_1_0_9/packages/ti/drv/icss_emac/src/icss_emacDrv.c 中、
数据在 PRU/ICSS 中正确设置。

-通过发送相同的数据检查六个板,每个板的结果是相同的。
三个板存在 TX 数据包错误。


[问题]
是否可以使用 CCS 同时调试 AM335x 主 CPU + PRU x2?

2.如何检查 PRU/ICSS 未将 Sach 作为"来自 PRU/ICSS 的错误状态"等发送的状态?


此致、
卡纳

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

    Kanae、

    1.是的、您可以单步进入两个内核并进行调试...

    2.您可以从 ICSS_EMAC 驱动程序 test\src 中引用 test_common_utils.c 中的 ICSS_EMAC_testGetPruStats ()以获取如下所示的 PRU 统计信息:

    ICSS_EmacReadStats (portnum、icssEmacHandle);
    ICSS_EmacPruStatistics_t* pruStatsPtr =(ICSS_EmacPruStatistics_t *)((((ICSS_EmacObject *) icssEmacHandle->object)->pruStat);

    打印("txBcast:0x%x\n"、pruStatsPtR->txBcast);
    打印("txMcast:0x%x\n"、pruStatsPtR->txMcast);
    打印("txUcast:0x%x\n"、pruStatsPtR->txUcast);
    print("txOctets:0x%x\n",pruStatsPtr ->txOctets;

    打印("rxBcast:0x%x\n"、pruStatsPtr->rxBcast);
    打印("rxMcast:0x%x\n"、pruStatsPtr->rxMcast);
    打印("rxUcast:0x%x\n"、pruStatsPtr->rxUcast);
    打印("rxOctets:0x%x\n"、pruStatsPtr->rxOctets);

    打印("tx64byte:0x%x\n"、pruStatsPtr -> tx64byte);
    打印("tx65_127byte:0x%x\n"、pruStatsPtr -> tx65_127byte);
    打印("tx128_255byte:0x%x\n"、pruStatsPtr ->tx128_255byte);
    打印("tx512_1023byte:0x%x\n"、pruStatsPtr -> tx512_1023byte);
    打印("tx1024byte:0x%x\n"、pruStatsPtr ->tx1024byte);

    (笑声)

    此致、

    Garrett

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

    您好、Garrett、

    感谢你的答复。

    我想确保如何同时调试三个内核:AM335x 主 CPU + PRU x2。
    如果我使用 TMDXICE3359板、步骤是...

    使用 TMDXICE3359.GEL 连接 Cortex-A8。
    2.从 CCS 的脚本初始化 PRI_ICSS。
    3.连接 PRU_0和 PRU_1
    4.将 test_common_utils.c 中引用 ICSS_EMAC_testGetPruStats ()的示例程序加载到 Cortex-A8。

    我的理解是否正确?

    此致、
    卡纳

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

    您好、Kanae、

    通常 情况下、"Nimu_ICSS_FtpExample_icev2AM335x_wSoCLib_armExampleProject"之类的应用会初始化、加载和启用 PRU、您不必使用 CCS 脚本初始化 PRU-ICSS、而是只需运行应用程序、然后连接 PRU 内核即可在 PRU 映像加载并启用 PRU 之后开始调试...

    此致、

    Garrett

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

    您好、Garrett、

    感谢您的支持。

    关于 Q1、我的客户需要知道在启动 A8内核的同时运行

    和下载 PRU 固件。

    具体而言、以下代码正在将程序从主 CPU 运行到 PRU、

    但是、在这之后、如何同时调试该代码?

    之后、它只需连接到 PRU、而 IT PruEnable ()则会中断正在工作的 PRU、

    它无法按客户的预期进行调试。 建议我如何同时进行调试?

    *****
        PRUICSS_pruDisable (pruIcssHandle、ICSS_EMAC_PORT_1-1);
        PRUICSS_pruDisable (pruIcssHandle、ICSS_EMAC_PORT_2-1);
        if (PRUICSS_pruWriteMemory (pruIcssHandle、PRU_ICSS_IRAM (0)、0、
                              (uint32_t *)&pru_imem0_rev1_start、
                              &PRU_imem0_rev1_end -&PRU_imem0_rev1_start)
        {
            if (PRUICSS_pruWriteMemory (pruIcssHandle、PRU_ICSS_IRAM (1)、0、
                                  (uint32_t *)&pru_imem1_rev1_start、
                                  &PRU_imem1_rev1_end -&PRU_imem1_rev1_start)
            {
                firmwareLoad_DONE = true;
            }
        }

        if (firmwareLoad_DONE)
        {
            PRUICSS_pruEnable (pruIcssHandle、ICSS_EMAC_PORT_1-1);
            PRUICSS_pruEnable (pruIcssHandle、ICSS_EMAC_PORT_2-1);
        }

    *****

    关于 Q2、这里是从 PC ping 电路板的测试结果;好的、NG、

    您能否从结果中指出该误差?

    e2e.ti.com/.../NG_5F00_BOARD.txt

    e2e.ti.com/.../OK_5F00_BOARD.txt

    此致、
    卡纳

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

    Kanae、

    对于 Q1、如果他们在 PRU 代码的开头添加条件为的 while 循环、然后修改条件的逻辑表达式以在 PRUICSS_pruEnable()...

    对于 Q2、统计数据确实指示 PRU 中丢弃的 TX 数据包。 这是否也会在 PRU2上(而不是 PC 和 PRU2)进行环回测试时发生? 您是否监控了 PHY/MDIO 中的 ALYE/LINK 位? 此外、Wireshark 数据包捕获是如何进行的?

    PRSDK v4.2 (pdk_am335x_1_0_9)已经很旧了、是否已尝试过最新的 v6.0 (pdk_am335x_1_0_15)?

    此致、

    Garrett

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

    Kanae、

    对此进行了任何更新?

    此致、

    Garrett

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

    您好、Garrett、


    感谢您关注此内容。
    我的客户一直在调查此问题。
    我将向他询问进展情况并在这里报告。

    此致、
    卡纳

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

    Kanae、

    我们可以关闭该主题、还是客户仍然被阻止?

    此致、

    Garrett

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


    您好、Garrett、

    感谢您的确认。
    客户仍对此问题进行了调查。

    此致、
    卡纳

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

    Kanae、

    有更新吗? 谢谢。

    -Garrett

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

    您好、Garrett、

    感谢您的跟进。
    客户未完成调查。

    当我获得他们的更新状态时、我将在这里发布。

    此致、
    卡纳

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

    Kanae、

    我现在要关闭这个。 如果需要的话,可以随意重新打开它。。。

    谢谢、

    Garrett

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

    您好、Garrett、

    我的客户会不断研究此问题。

    他需要知道 PRU TX 错误。

    如何观察 PRU ECAP 中的"PRU R31:接收接口数据和状态"
    有何不同?  

    TRM:表4-32. PRU R31:接收接口数据和状态(读取模式)

    我应该重新打开另一个线程吗?

    此致、
    卡纳

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


    您好、Sitara 支持团队、

    此论坛中是否有任何支持成员?
    今年的支持是否已经结束?

    此致
    Kane

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

    您好、Garrett、

    我理解保留此线程、因为新线程显示为"访问被拒绝"。

    以下是其他问题。

    问题1. 是否有另一种方法可以检查"PRU/ICSS 内部信息和状态"
     除了"ICSS_EMAC_testGetPruStats ()"之外、从 Cortex-A8端传输?

    问题2. 正如您在2019年10月28日星期一发布的、我们提供了检查方法
     TEST_common_utils.c 中带有 ICSS_EMAC_testGetPruStats ()的 PRI 状态
     您能否解释所有变量的含义以及要更新的条件?
     此外、如果这些变量有任何文档、请提供。

    此致、
    卡纳

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

    您好、Garrett、

    请问您能回答这些问题吗?

    我应该将其发布为新主题吗?

    此致、
    卡纳

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

    Kanae、

    1."根据存储器映射、用户可以直接查看 CCS +仿真器环境中的存储器、并验证驱动程序/固件是否正常工作。"、请参阅  

    请访问 https://processors.wiki.ti.com/index.php/ICSS_EMAC_LLD_developers_guide#Statistics

    该线程已打开很长时间。 最好为单个问题创建一个新主题、以便轻松跟踪。

    谢谢、

    Garrett

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

    您好、Garrett、

    感谢您的支持!

    此致、
    卡纳