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.

[参考译文] TCP-AM263PX:控制卡的以太网 LWIP MCU-PLUS-SDK 客户端 SDK 示例-中止错误

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1346863/mcu-plus-sdk-am263px-ethernet-lwip-tcp-client-sdk-example-for-control-card---abort-error

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

 运行 SDK-AM263PX MCU-PLUS-SDK 时遇到 About Error (-13)示例:enet_cpsw_tcpclient_am263px-cc_r5fs0-0_freertos_ti-arm-clang  

我对处理 IPv4地址做了一些小改动。 也就是说,服务器地址采用硬编码,客户端使用的是静态 IP 而不是 DHCP。

当我在 AM263x 控制卡版本的项目上运行相同的"应用程序代码"时、就会起作用。

硬件设置相同。

TCP 服务器正在运行 Wireshark。 我可以看到 AM263x 的传输、但  AM263Px 没有。

以太网电缆连接到 AM263x 上的中间(带标签)端口。

在我花更多时间进行故障排除之前、我想查看:

控制卡或 SDK 之间是否有任何差异、会在  运行相同应用层代码时导致 AM263Px 上出现 About Error (-13)?

 

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

    尊敬的 TollMan:

    为了消除困惑并隔离问题、您能否让我知道在 AM263Px 上运行 enet_loopback 或 enet_layer2_cpsw 示例的结果。  

    预计开箱即用应用程序可以正常工作、如果逻辑适用于 AM263x、那么它也应该适用于 AM263Px。  

    您还能告诉我引导模式吗? 您是在刷写应用映像还是从 CCS 加载.out 文件(对于 AM263Px)

    此致、

    Shaunak

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

    尊敬的 Shaunak:

    我正在运行引导模式== SPI (8S)-八进制读取模式

    SBL 为 SBL_NULL。

    我的测试对象为: enet_loopback_am263px-cc_r5fss0-0_freertos_ti-arm-clang、仅运行第一个内核。 希望这是有效的测试。

    这是 调用 EnetApp_showMenu()时停止的 gEnetLpbk :

    观察结果:

    1)

    gEnetLpbk.hostMacAddr 的值是否可疑?

    也许值没有写入到 EVK 中?

    2)

    运行 enet_loopback_am263px-cc_r5fss0-0_freertos_ti-arm-clang 时,我看不到任何有意义的 Debug_Log () printfs。

    这是我看到的:

    ***启用外设时钟***
    Cortex_R5_0:GEL 输出:启用 RTI[0:3]时钟
    Cortex_R5_0:GEL 输出:启用 RTI_WDT[0:3]时钟
    Cortex_R5_0:GEL 输出:启用 UART[0:5]/lin[0:5]时钟
    Cortex_R5_0:GEL 输出:启用 QSPI 时钟
    Cortex_R5_0:GEL 输出:启用 I2C 时钟
    Cortex_R5_0:GEL 输出:启用跟踪时钟
    Cortex_R5_0:GEL 输出:启用 MCAN[0:3]时钟
    Cortex_R5_0:GEL 输出:启用 MMCSD 时钟
    Cortex_R5_0:GEL 输出:启用 MCSPI[0:4]时钟
    Cortex_R5_0:GEL 输出:启用 CONTROLSS 时钟
    Cortex_R5_0:GEL 输出:启用 CPTS 时钟
    Cortex_R5_0:GEL 输出:启用 RGMI[5、50,250]个时钟
    Cortex_R5_0:GEL 输出:启用 XTAL_TEMPSENSE_32K 时钟
    Cortex_R5_0:GEL 输出:启用 XTAL_MMC_32K 时钟
    Cortex_R5_0:GEL 输出:

    ***所有 IP 时钟均已启用***

     

    此致、

    托尔曼

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

    尊敬的 Tollman:

    您在终端窗口中看不到任何打印件吗? 以上打印内容是 GEL 脚本日志。 您在终端中没有看到任何应用程序初始化日志吗?

    此致、

    Shaunak

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

    尊敬的 Shaunak:

    关于:

     "在终端窗口中看不到任何打印件吗?"

    我用相同的结果重新测试。 运行仅无断点的环回 SDK 示例输出:

    ***启用外设时钟***
    Cortex_R5_0:GEL 输出:启用 RTI[0:3]时钟
    Cortex_R5_0:GEL 输出:启用 RTI_WDT[0:3]时钟
    Cortex_R5_0:GEL 输出:启用 UART[0:5]/lin[0:5]时钟
    Cortex_R5_0:GEL 输出:启用 QSPI 时钟
    Cortex_R5_0:GEL 输出:启用 I2C 时钟
    Cortex_R5_0:GEL 输出:启用跟踪时钟
    Cortex_R5_0:GEL 输出:启用 MCAN[0:3]时钟
    Cortex_R5_0:GEL 输出:启用 MMCSD 时钟
    Cortex_R5_0:GEL 输出:启用 MCSPI[0:4]时钟
    Cortex_R5_0:GEL 输出:启用 CONTROLSS 时钟
    Cortex_R5_0:GEL 输出:启用 CPTS 时钟
    Cortex_R5_0:GEL 输出:启用 RGMI[5、50,250]个时钟
    Cortex_R5_0:GEL 输出:启用 XTAL_TEMPSENSE_32K 时钟
    Cortex_R5_0:GEL 输出:启用 XTAL_MMC_32K 时钟
    Cortex_R5_0:GEL 输出:

    ***所有 IP 时钟均已启用***

    关于:

     "在终端窗口中看不到任何打印件吗?"

    我看不到任何。 我确认:

     EnetApp_showMenu()

    正在执行、其中包含:

     DebugP_log ("%s"、loopbackTestMenu);

    我还运行了一个"已知良好"SDK 示例:

     adc_soc_continuous_am263px-cc_r5fss0-0_nortos_ti-arm-clang

    ...要确认没有设置问题。 我看到打印件正在运行该示例:

    [Cortex_R5_0] ADC SoC 连续测试已启动
    ADC 1通道0输出:
    9
    1081
    1080
    1080
    1080
    1082
    1081
    1081
    1081
    1082
    1081
    ADC SoC 连续测试通过
    所有测试均已通过!!

    此致、

    托尔曼

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

    尊敬的 Tollman:

    对于延迟响应深表歉意、感谢您耐心等待。 我试图重复这个问题,但我无法做到。

    我怀疑这可能也是 PLL 时钟(来自 GEL 文件)中的一些错误配置所致。 我们是否可以通过将图像刷写到板上来测试同一个应用程序? 我们确实有关于 CCS 12.5和 CCS 12.6的已知问题、即 GEL 文件错误配置了时钟、且电路板 Rx 无法正常工作。 仅 AM263Px 出现了该问题、我怀疑这里的拦截器是存在的。

    请按照以下步骤操作: https://software-dl.ti.com/mcu-plus-sdk/esd/AM263X/latest/exports/docs/api_guide_am263x/TI_UNIFLASH_TOOL.html

    因为我无法复制它、所以我想在您的终端尝试它

    此致、
    Shaunak

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

    尊敬的 Tollman:

    感谢您运行测试并确认问题。 因此问题与 GEL 文件错误地初始化 PLL 时钟有关。 这些 GEL 文件将在下一个 CCS 版本中修复。 我将提供 GEL 文件。 请在提到的路径中替换它、并尝试使用正确的 GEL 文件再次运行。

    路径: C:\ccs1260 \ccs\ccs_base\emulation\gel\AM263Px_PLL

    e2e.ti.com/.../AM263Px_5F00_PLL.gel

    替换此处的 GEL 文件。 重启 CCS 并重试

    或者、由于 GEL 文件的原因、该问题仍然存在、因此在 CCS 中、打开 AM263Px 的目标配置、转到 Advanced、选择 Cortex_R5_0、并删除初始化脚本字段中的 CSP GEL 文件路径。 然后启动目标配置、在 OSPI 引导模式下使用 SBL NULL 运行。

    此致、
    Shaunak

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

    我更换了 GEL 文件、并根据建议重新启动 CCS。 但是、我认为仍然有问题、因为我没有看到从 OSPI 运行时看到的 printfs。


    当我运行时:

     enet_loopback_am263px-cc_r5fss0-0_freertos_ti-arm-clang

    ...在调试模式中,我看到在 控制台上:

    ------------------

    Cortex_R5_0:GEL 输出:在 R5F0上加载 GEL 文件完整
    Cortex_R5_0:GEL 输出:***OnTargetConnect ()已启动***

    Cortex_R5_0:GEL 输出:已启动 AM263Px 初始化脚本。
    请稍候...


    Cortex_R5_0:GEL 输出:AM263 Px_Cryst_Clock_Loss_Status ()已启动
    Cortex_R5_0:GEL 输出:晶体时钟存在
    Cortex_R5_0:GEL 输出:AM263Px_SOP_Mode ()已启动
    Cortex_R5_0:GEL 输出:SOP 模式= 0x00000003
    Cortex_R5_0:GEL 输出:
    OSPI - 8S 功能引导模式
    Cortex_R5_0:GEL 输出:AM263 Px_Read_Device_Type ()已启动
    Cortex_R5_0:GEL 输出:EFuse 器件类型值= 0x000000AA
    Cortex_R5_0:GEL 输出:AM263Px_dual_or_lockstep_mode ()已启动
    Cortex_R5_0:GEL 输出:r5fs0 = 0x00000001
    Cortex_R5_0:GEL 输出:r5fs1 = 0x00000000
    Cortex_R5_0:GEL 输出:
    R5FSS0处于双核模式
    Cortex_R5_0:GEL 输出:
    R5FSS1处于双核模式
    Cortex_R5_0:GEL 输出:MSS_CTRL 控制寄存器未锁定
    Cortex_R5_0:GEL 输出:MSS_TOP_RCM 控制寄存器未锁定
    Cortex_R5_0:GEL 输出:MSS_RCM 控制寄存器未锁定
    Cortex_R5_0:GEL 输出:MSS_IOMUX 控制寄存器未锁定
    Cortex_R5_0:GEL 输出:解除锁定的 TOP_CTRL 控制寄存器
    Cortex_R5_0:GEL 输出:

    *** R5FSS0重置双核***
    Cortex_R5_0:GEL 输出:

    ***R5FSS1重置双核***
    Cortex_R5_0:GEL 输出:R5F ROM Eclipse
    Cortex_R5_0:GEL 输出:R5FSS0_0已发布
    Cortex_R5_0:GEL 输出:R5FSS0_1已发布
    Cortex_R5_0:GEL 输出:R5FSS1_0已发布
    Cortex_R5_0:GEL 输出:R5FSS1_1已发布
    Cortex_R5_0:GEL 输出:L2存储器初始化完成
    Cortex_R5_0:GEL 输出:邮箱存储器初始化完成
    Cortex_R5_0:GEL 输出:*********** R5FSS0/1双核模式已配置****
    Cortex_R5_0:GEL 输出:ROM 设置模式
    Cortex_R5_0:GEL 输出:切换到 XTAL 完成
    Cortex_R5_0:GEL 输出:内核 PLL 配置完成
    Cortex_R5_0:GEL 输出:SYS_CLK DIVBY2
    Cortex_R5_0:GEL 输出:DPLL_CORE_HSDIV0_CLKOUT0被选为 R5FSS 和 SYS CLK 的 CLK 源
    Cortex_R5_0:GEL 输出:
    CLK 已编程、400MHz 并且200MHz
    Cortex_R5_0:GEL 输出:

    ***启用外设时钟***
    Cortex_R5_0:GEL 输出:启用 RTI[0:3]时钟
    Cortex_R5_0:GEL 输出:启用 RTI_WDT[0:3]时钟
    Cortex_R5_0:GEL 输出:启用 UART[0:5]/lin[0:5]时钟
    Cortex_R5_0:GEL 输出:启用 QSPI 时钟
    Cortex_R5_0:GEL 输出:启用 I2C 时钟
    Cortex_R5_0:GEL 输出:启用跟踪时钟
    Cortex_R5_0:GEL 输出:启用 MCAN[0:3]时钟
    Cortex_R5_0:GEL 输出:启用 MMCSD 时钟
    Cortex_R5_0:GEL 输出:启用 MCSPI[0:4]时钟
    Cortex_R5_0:GEL 输出:启用 CONTROLSS 时钟
    Cortex_R5_0:GEL 输出:启用 CPTS 时钟
    Cortex_R5_0:GEL 输出:启用 RGMI[5、50,250]个时钟
    Cortex_R5_0:GEL 输出:启用 XTAL_TEMPSENSE_32K 时钟
    Cortex_R5_0:GEL 输出:启用 XTAL_MMC_32K 时钟
    Cortex_R5_0:GEL 输出:

    ***所有 IP 时钟均已启用***

    ------------------

    我知道该应用程序正在运行,因为它在 EnetApp_showMenu()中的断点处停止,如下所示:

    我 以 SBL NULL 在 OSPI 引导模式下运行、但尚未修改任何目标配置:

    接下来应该做什么?

    此致、

    托尔曼

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

    尊敬的 Tollman:

    很遗憾、我无法重现此问题。 唯一已知问题是与 PLL GEL 脚本有关。 在本例中、替换 GEL 文件无效。

    您是否也可以尝试以下方法:

    1.打开 CSS 控制台并在运行应用程序时检查打印件

    2.打开 CCS 终端并同时打开正确的 UART COM 端口。 当您将引导模式切换到 UART 时、是否看到终端中打印了多个"C"? 显示这些多个"C"打印输出的 COM 端口(在 UART 引导模式下)将是在 SBL_NULL + OSPI 引导模式下运行应用程序时显示应用程序打印的端口。

    我认为问题现在与网络软件无关、因为您已确认命中了断点。

    此致、

    Shaunak  

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

    我可以在连接到 UART0的终端中看到 printfs (在 CCS 控制台中看不到这些 printfs)。

    请记住、我创建这个线程是因为:

     运行 SDK-AM263PX MCU-PLUS-SDK 时遇到 About Error (-13)示例:enet_cpsw_tcpclient_am263px-cc_r5fs0-0_freertos_ti-arm-clang  

    虽然我单击断点 Lwip2Enet_sendTxPackets(),但我在以太网 LAN 上的 Wireshark 中看不到任何数据包。

    问题1:

    您是否认为 PLL/Gel 脚本的问题与以太网通信相关?

    问题2a:

    如何解决 以太网通信问题?

    问题2b:

    您可以推荐一个用于断点的位置或一个良好的观察表达式吗?  

    此致、

    托尔曼

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

    尊敬的 Tollman:

    1. PLL 时钟问题会导致电路板通信不稳定。 PLL 时钟将配置 PHY 时钟、错误的配置可能会导致 Rx 数据包的 Tx/PHY 失败、从而导致 lwIP 连接中止。 但我们需要确认这一点。 由于您遇到了该断点、所以对我来说、这似乎不是 lwIP 或驱动程序问题、也可能是与 PHY 相关的问题。  

    2、我无法重现开箱即用示例的问题、但我确实为您提供了一些可提供帮助的调试指针

    3.在尝试建立 TCP 客户端服务器连接之前,请尝试使用打印稿中显示的 IP 对微控制器执行 ping 操作(例如: Enet if Up Event. 本地接口 IP:10.24.72.91),ping 此 IP 并检查是否得到回复。  

    4.在 CCS 表达式窗口中、在遇到 lwIP 连接 abort (-13)错误后暂停、并键入"lwip_stats"。 在这些 lwIP 统计信息中、检查"TCP"、"IP "、"icmp"。 展开每一个,检查是否有丢失、协议错误或任何其他意外的统计数据递增。

    5.将其粘贴到表达式窗口中: (CSL_xge_cpswRegs *) 0x52820000。 这些是 CPSW 统计信息。 向下滚动、直到找到 P0_STATS 和 Pn_STATS。 展开每一个、并检查数据包丢弃、CRC 错误或 ALE 溢出。 如果可能、请分享屏幕截图、以便我也可以查看。

    类似地检查 pn_stats[0]。

    6.如果所有的统计数据看起来都不错。 尝试在"EnetDma_submitTxPktQ"函数处放置断点。 这是处理数据包的最后一个 Enet 驱动程序函数。 在此之后、DMA 负责数据包传输。

    您是否还可以分享一些有关网络设置的详细信息(TCP 客户端和 TCP 服务器之间、它们的 IP 地址等)

    此致、

    Shaunak

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

    尊敬的 Tollman:

    我还想知道应用程序中所做的更改。 开箱即用示例可以正常工作、也可以对微控制器进行静态 IP 配置(假设您执行了以下步骤: AM263x MCU+ SDK:以太网 LwIP TCP/IP 静态 IP)
    我想知道您是如何配置服务器静态 IP 以及应用程序日志的。

    此致、

    Shaunak

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

    尊敬的 Shaunak:

    1)

    关于:

    "我还想知道应用程序中所做的更改... "

    我所做的更改是:

    a)对 Sitara 使用静态 IP 地址。 我不想依赖 LAN 上的 DHCP 服务器。 但是、在使用未修改的 SDK 示例时、我使用 DHCP 发现数据包作为一种验证栈是否正常运行的方法。 我可以在 Wireshark 上看到数据包。

    b) 对 TCP 服务器地址使用静态 IP 地址。 我不想在每次执行时都在控制台中键入地址。

    同样、当我在 TMDSCNCD263-AM263x Sitara 控制卡上运行此应用程序代码时、代码会起作用。

    2)

    关于:

    "在尝试建立 TCP 客户端服务器连接之前、请尝试使用 IP 来 ping 微控制器 ..."。

    我将使用静态 IP 的应用尝试此操作。 DHCP 版本没有要 ping 的 IP 地址。

    3)

    感谢您提供故障排除技巧。 我将尝试你关于 表达式和断点的建议。  

    希望我今天晚些时候将测试结果发布。

    此致、

    托尔曼

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

    我使用未修改版本的 SDK 运行了测试示例:

     enet_cpsw_tcpclient_am263px-cc_r5fss0-0_freertos_ti-arm-clang

    我让应用程序运行几秒钟、然后在以下条件下停止处理器:

    while (false == App_isNetworkUp (netif_default))

    {

    ...

    供参考:

    Watch 表达式如下所示:

    我还将其粘贴到随附的文件中。

    e2e.ti.com/.../TiSupport100a_5F00_1346863.txt

    观察结果:

    (lwip_stats.ip.xmit)=5、但是(lwip_stats.link.xmit =0)

    注意:我在 Wireshark 上没有看到任何数据包。

    请查阅。

    此致、

    托尔曼

     

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

    尊敬的 Tollman:

    对不起,由于健康问题,我不在办公室。

    1.根据上面的统计数据,我看到一些 IP 数据包从 lwIP 发送到以太网驱动程序(5个数据包)

    2.我复制了相同的用例,并进行了测试,而且运行良好。 我将 AM263Px 设置为"192.168.1.2"并将我的服务器硬编码为"192.168.1.4"、并在 Linux PC 上使用命令"ncat -e /bin/cat -kV -l 888888"进行测试。 我将附加我的二进制文件和日志。 您能使用我的.out 二进制文件进行测试并确认相同的结果吗?

    e2e.ti.com/.../enet_5F00_cpsw_5F00_tcpclient.release.out

    注:我所做的唯一更改是对客户端和服务器的静态 IP 进行硬编码

    3.能否分享 AM263Px 器件的修订版号? 应该有一个标签、上面提到"PROCxxxEx..."

    通过正确的更改和网络设置、我能够运行相同的操作、而不会出现任何问题。 看到 AM263x 上一切正常、我不确定问题可能是什么。

    此致、
    Shaunak

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

    尊敬的  Shaunak:

    关于:
    " 根据上面的统计数据、我看到一些 IP 数据包从 lwIP 发送到以太网驱动程序(5个数据包)"

    这是否意味着在数据包被发送到 PHY 时、lwip_stats.link.xmit 会为零? 如果是,这一统计数字意味着什么?


    关于:
    " 我复制了相同的用例并进行了测试、而且成功了。 我将 AM263Px 设置为"192.168.1.2"并将我的服务器硬编码为"192.168.1.4"、并在 Linux PC 上使用命令"ncat -e /bin/cat -kV -l 888888"进行测试。 我将附加我的二进制文件和日志。 您能用我的.out 二进制文件进行测试并确认相同的结果吗?"

    请提供使用此文件的过程。 我尝试将它复制到工程中、然后在调试模式下运行、但它被覆盖。 此外、它似乎不是 Uniflash 的有效文件类型。


    关于:
    "3. 您能否分享 AM263Px 器件的修订版号? 应该有一个提及"PROCxxxEx..."的标签

    PCB 显示 PCB#:PROC159E2

    此致、

    托尔曼

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

    尊敬的 Tollman:

    我使用 AM263Px 器件进行了测试、刷写了 SBL 空值、将器件置于 OSPI 引导模式、然后使用连接到 R5F 内核的 CCS 并加载给定的二进制文件。

    我已经随附了 zip 文件、以便您可以在所需的 waye2e.ti.com/.../enet_5F00_cpsw_5F00_tcpclient.zip 中进行测试

    e2e.ti.com/.../enet_5F00_cpsw_5F00_tcpclient.zip

    此致、

    Shaunak

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

    尊敬的 Tollman:

    感谢您到目前为止的答复。 我想更深入地理解这一点。 我无法重现、因此以这种方式调试对我来说有点困难。 同时、

    1.您能否与我共享您的二进制文件(.out 文件)、这样我就可以在 AM263Px 上进行相同的测试。

    2.我检查了我正在工作的应用程序的 lwip_stats , 链接统计数据不会增加。

    在执行过程中没有看到调用"link_stats_inc (link.xmit);"被命中。  

    在理想的工作情况下、应该会看到 lwip_stats.tcp.xmit 和 lwip_stats.tcp.recv 递增。 CPSW 主机端口和 Mac 端口1会在不发生丢失的情况下统计 Rx 和 Tx。

    3.之前共享的统计数据是在循环期间应用程序仍处于等待网络启动状态时发送的。 这些数据并没有太大帮助。 您能否分享以下统计信息:网络已建立、Mac 端口已建立链路且您从 lwIP 收到中止命令后。

    4. ping (ICMP)是否正常工作?

    5.您可以尝试运行一次吗: https://software-dl.ti.com/mcu-plus-sdk/esd/AM263PX/latest/exports/docs/api_guide_am263px/EXAMPLES_ENET_LAYER2_CPSW.html (相同的方式、SBL NULL + OSPI 引导模式)

    并验证您是否在 Wireshark 上看到数据包。 我的怀疑现在不在驱动程序或应用代码上。 如果该示例无法运行、让我们在星期一安排一个调试调用、并在调试/工作会话

    此致、
    Shaunak

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

    尊敬的 Tollman:

    1.我测试了与你附加的二进制(我想不能为你工作,我成功地建立了一个 TCP 连接)。 应用程序按预期工作。 甚至在 AM263Px 上运行应用之前、您是否有一台 ncat 服务器在运行?

    Ping 可能不是最佳测试、因为经过某些尝试后套接字连接可能已关闭、我们暂时将其忽略。

    5. 我看到在应用程序日志中也看不到 RX Stats。 您是否按照示例文档中所述使用 colasoft 或 packeth 发送数据包。 是不是在发送数据包后统计数据没有增加?

    6.可以在 EnetDma_submitTxPktQ 处放置一个断点。 如果您到达此函数、并且这里的数据包内容正确、则数据包将被移交给 CPDMA 以供进一步传输、lwIP 或以太网驱动程序将不起任何作用。 我怀疑问题出现在 PHY Tx 和 Rx 配置中。

    此处的问题似乎与 lwIP 或以太网驱动程序无关、但除此之外、

    您可以尝试在这些 CPDMA API 中放入一个断点吗:

    对于来自 MCU 的 Tx:  EnetCpdma_enqueueTx (如果我们到达该断点并且数据包在 Wireshark 上可见、则驱动程序和 PHY 正常工作)

    对于 MCU 上的 Rx: EnetCpdma_dequeueRx (如果我们能够在驱动程序中达到该点、PHY Rx 工作正常、数据包将传递到驱动程序)

    我们还可以安排一个调试调用以进行进一步调查。 我已向您发送有关同一主题的电子邮件

    此致、
    Shaunak

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

    尊敬的 Shaunak:

    1.

    关于:

    "我用你附加的二进制文件进行了测试(我想这不适合你,我成功地建立了一个 TCP 连接)。 应用程序按预期工作。  甚至在 AM263Px 上运行应用程序之前、您就有一台 ncat 服务器在运行吗?"

    我使用的是 Wireshark。 由于 LAN 仅包含运行 Wireshark 的 Windows 主机、交换机和控制卡、因此通信很少。 通过此设置、我可以让 Wireshark 保持运行、而无需过滤器、而且我无需让 TCP 服务器运行。 ‘就消除了"坏筛选器",并将 TCP Server 作为故障点。 所有测试都可以依赖 Wireshark。 请告诉我、您认为这种方法存在缺陷。

    关于:

    "ping 可能不是最佳测试、因为在某些尝试后套接字连接可能已关闭、让我们暂时忽略此项。"

    正确回答、如果我错了、但我认为 ping 不需要 TCP 连接。

    我正在通过 printf()输出对 Ping 计时。 等待"Connecting to:192.168.1.3:888888"printf ()。

    当我检查 Wireshark 时、当我看到 ARP 数据包"谁有192.168.1.2。 在 ping 命令时使用 Broadcast 目的地址告知192.168.1.3"。 我认为这样可获取 ping 所需的 MAC 地址。 无论如何、由于它是广播的、我非常确定控制卡应该会接收到这些数据包。 我还尝试将 UDP 发送到192.168.1.2、以避免需要 TCP 连接。 不过、这导致了相同的 ARP 传输。 接下来、我尝试了 UDP 广播。 测试完成后、我遇到"与服务器的连接未建立\r\n "处的断点、并检查监视表达式。

    我附上测试结果、但我认为这进一步证实了 Control Card 无法在网络堆栈的下层成功发送或接收数据。

    e2e.ti.com/.../TiSupport102a_5F00_1346863.txt

    5.

    关于:

    "我看到 RX Stats 在应用程序日志中也不可见。  您是否按照示例文档中所述使用 colasoft 或 packeth 发送数据包。 是不是在发送数据包后统计数据没有增加?"

    我在命令行上使用 ping、PacketSender 用于传输 UDP。 我试图安装 ncat、但我没有完成安装。 恐怕它不能与 Wireshark 好共存。 请参阅项目.1。

    6.

    关于:

    "您可以在 EnetDma_submitTxPktQ 处放置一个断点。 如果您到达此函数、并且这里的数据包内容正确、则数据包将被移交给 CPDMA 以供进一步传输、lwIP 或以太网驱动程序将不起任何作用。 我怀疑 PHY Tx 和 Rx 配置中存在此问题。"

    "您可以尝试在这些 CPDMA API 中放入一个断点吗:

    对于来自 MCU 的 Tx:  EnetCpdma_enqueueTx (如果我们到达该断点并且数据包在 Wireshark 上可见、则驱动程序和 PHY 正常工作)

    对于 MCU 上的 Rx: EnetCpdma_dequeueRx (如果我们能够在驱动程序中达到该点、PHY Rx 工作正常、数据包将传递到驱动程序)"

    当我‘s您的"static ip"项目时,会命中 EnetCpdma_enqueueTx()处的断点。 在我逐步执行时、我没有看到任何错误指示。

    EnetCpdma_dequeuerx()处的断点永远不会被命中。

    7.

    关于:

    "我们还可以安排一个调试调用以进一步调查。 我已向您发送了有关相同内容的电子邮件"

    我回复了您的电子邮件。

    此致、

    托尔曼

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

    尊敬的 Tollman:

    这消除了‘错误过滤器’,并将 TCP 服务器作为故障点。 所有测试都可以依赖 Wireshark。 请告诉我,你认为这种方法有一个缺陷。

    从 TCP 连接的角度来说、我所说的内容。 您需要在 TCP 客户端(AM263Px)尝试建立连接之前运行 TCP 服务器、

    如果只是为了获取 lwIP 和 CPSW 统计信息、那么没有问题。

    然而,由于它是广播的,我很确定控制卡应该接收这些数据包。

    此处的问题似乎与 PHY Rx 时钟有关。 您是否曾通过任何机会更改 PHY 的时钟源? PHY 时钟甚至在数据包到达以太网驱动程序(CPDMA)之前就导致数据包被丢弃

    为了进一步检查 PHY Rx 是否正常工作、您能否探测 AM263Px-CC DP83869 PHY 上的 R212电阻器? 在您探测此情况时、请以"external loopback"模式运行 enet_loopback 示例? 请分享观察结果、以便我们可以确认 PHY Rx 时钟问题。 到目前为止、我们的测试都不存在以太网驱动程序、lwIP 协议栈或 SDK 中的 TCP 应用程序的问题。

    此致、

    Shaunak

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

    1)

    我录制了一段 在 R212上进行探测时以"外部环回"模式运行 enet_loopback 示例的视频。 在整个视频中、我想我一直把探针保持在稳定状态。  

    示波器在 RX_CLK 的上升沿触发。

    请查看随附的视频。

    e2e.ti.com/.../TI-Support112a.mp4

    2)

    也许我应该更早地问这个问题,但是...

    控制卡上是否有可能影响以太网的跳线和开关?

    此致、

    托尔曼

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

    尊敬的 Tollman:

    1.感谢大家分享视频,PHY 的 Rx 时钟看起来不错。 但是、您是否还可以共享外部环回示例是否起作用? 日志看起来是否正常?

    2.我不确定这一点。 您是否在控制卡上使用了任何跳线/开关?

    3.我认为我们只能通过电话继续调试。 我今天再次尝试,但未能重现它。 我可以在美国东部时间上午9点到东部时间上午11点之间随时设置一个1小时的电话。 请通过电子邮件确认时隙 、 我可以共享会议邀请

    4.是否要对时钟源进行任何更改? 出现了什么情况?

    5.您是否在客户端启动前尝试了 TCP 客户端示例、其中 TCP NCAT 服务器正在运行?

    此致、

    Shaunak

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

    尊敬的  Shaunak:

    1.

    关于:

    "感谢您分享视频、PHY Rx 时钟对我来说看起来很好。 但是、您是否还可以共享外部环回示例是否起作用? 日志看起来是否正常?"

    对不起,我以为我昨天写了第二篇文章。 我想我实际上并没有发送它。

    TX 任务似乎正常工作、但 RX ISR 绝不会执行。

    即、这从不执行:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    static void EnetApp_rxIsrFxn(void *appData)
    {
    ··· SemaphoreP_post(&gEnetLpbk.rxSemObj);
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
     

     

    2.

    关于:

    "我不是这个意思。" 您是否在控制卡上使用了任何跳线/开关?"

    我看到 SW14、SW15和 SW16决定了以太网的路由。 我没有在我拥有的任一控制卡上更改任何这些开关。 但是、我将调查它们是否处于正确的位置。

    3.

    关于:

    我想我们只能通过呼叫继续进行调试。 我今天再次尝试,但未能重现它。 我可以在美国东部时间上午9点到东部时间上午11点之间随时设置一个1小时的电话。 请通过电子邮件确认时隙 、 我可以共享会议邀请

    我期待与您一起进行故障排除。

    4.

    关于:

    您是否要对时钟源进行任何更改? 出现了什么情况?

    我尚未对正在测试的控制卡进行任何更改。

    5.

    关于:

    您是否在客户端启动之前尝试了 TCP 客户端示例、其中 TCP NCAT 服务器正在运行?

    正如我之前提到的、我怕在我的测试 PC 上安装 ncat。 恐怕会损坏我的 Wireshark 设置。 我认为这没有什么好处、因为 Wireshark 显示没有数据包从控制卡到达测试 PC。

    此致、

    托尔曼

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

    更新:

    抱歉、我忘记在项目1中包含 printf 日志。 在这里、它们是:

    ================================

     0:内部 MAC 环回

     1:外部 PHY 环回

     

     输入选项:11

    ============================

     ENET 环回:迭代1

    ============================

    CPSW_3G 测试

    EnetAppUtils_reuceCoreMacAllocation:将 CoreID:0的 MAC 地址分配从4个减少为2个

    EnetPhy_bindDriver:1828

    PHY 0处于活动状态

    initQs()以16个 pkts 初始化 txFreePktInfoQ

    Cpsw_handleLinkUp:1629

    传输的5000个数据包

    删除 EnetApp_txTask()并退出。

    ================================

    此致、

    托尔曼

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

    尊敬的 Shaunak:

    好消息。 我发现 SW15处于 错误的位置。 我的两个 EVK 在出厂时都没有将 CPSW 路由到板载 RJ45连接器。

    当我将 SW15的位置更改为 off 并执行您的"动态地址 TCP 客户端"应用时、我可以在 Wireshark 上看到数据包。

    此致、

    托尔曼

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

    尊敬的 Tollman:

    很高兴听到问题现已解决。

    似乎两个 EVK 发货时都带有 CPSW,但没有路由至板载 RJ45连接器。

    发货前会执行硬件检查。 这可能是在 测试后的手动包装期间发生的。 这是非常罕见的情况、对于您所面临的问题、我深表歉意。 我已将此事件转交给我们的制造商、以确保不会再次发生这种情况。

    此致、
    Shaunak