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.

[参考译文] TM4C1294NCZAD:强制100Base-T 问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1113480/tm4c1294nczad-force-100base-t-problem

器件型号:TM4C1294NCZAD
Thread 中讨论的其他器件:EK-TM4C1294XL

您好!

我正在尝试调整 enet_tcpecho_client_tirtos 示例 NDK 程序以强制建立100Base-T 连接。 在另一个用户发布后、我向示例程序中的 initEMAC 函数添加了以下代码。 但是、我的网络速度保持在大约10Mbps。 另请参阅接下来的两个图像、其中显示 EMAC0寄存 器 EMACPC 中的 ANMODE 保持为1 (启用自动协商)、即使 EMAC_PHY_FORCE_100B_T_FULL_DUPLEX 宏应禁用自动协商。

我的代码中出现了什么问题?

带有100Base-T 强制码的 initEMAC 函数:

EMAC0 EMACPC 寄存器视图、显示 ANMODE = 1 (自动协商仍然启用)。

EMAC0 EMACCFG 寄存器视图显示 FES = 0 (速度= 10Mbps)。

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

    您好!

     PHY 配置在 C:\ti_tirtos_tivac_2_16_00_08\products\tidrivers_tivac_2_16_00_08\packages/ti\drivers\emac\emacSnow.c 文件中完成。  EMAC_PHY_CONFIG 当前定义为:

    #define EMAC_PHY_CONFIG (EMAC_PHY_TYPE_INTERNAL |\
                              EMAC_PHY_INT_MDIX_EN |\
                              EMAC_PHY_AN_100B_T_FULL_DUPLEX)

    您需要更改为:

    #define EMAC_PHY_CONFIG (EMAC_PHY_TYPE_INTERNAL |\
                              EMAC_PHY_INT_MDIX_EN |\
                             EMAC_PHY_FORCE_100B_T_FULL_DUPLEX)

    由于此文件 EMACSnow.c 是驱动程序库的一部分、因此您需要在更改后重新构建库。 但是、另一种更简单的方法是将 EMACSnow.c 文件复制到应用程序所在的项目目录中。 在本地进行更改、然后重新构建应用程序。 将使用本地副本而不是库版本。

      

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

    您好!

    感谢您的回答。 我执行了这些步骤、但当我将  EMAC_PHY_AN_100B_T_FULL_DUPLEX 更改为 EMAC_PHY_FORCE_100B_T_FULL_DUPLEX 时、我的 MCU 不再通过以太网连接到我的 PC。 您是否有任何想法、为什么会发生这种情况?  

    在同一个 EMACSnow.c 文件中、我向 EMACConfigSet 添加了 EMAC_COCONFIG_100Mbps 宏选项、虽然该选项在 EMAC_CFG 寄存器中将 FES (速度)标志设置为1 (指示100Mbps)、但实际通信速度没有变化。 正如您说过的、我认为我需要更改 PHY 设置以设置速度。

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

    您好!

    我更改为 EMACSnow.c 文件中的波纹。 我删除 了 EMAC_PHY_INT_MDIX_EN 标志、当我的 PC (充当客户端)可以连接到 LaunchPad (充当服务器)时、该标志似乎对我有效。  

    #define EMAC_PHY_CONFIG (EMAC_PHY_TYPE_INTERNAL |\
    EMAC_PHY_FORCE_100B_T_FULL_DUPLEX)
    #endif  

    以便给您一个平视的视点。 我已经在度假、在下周二之前无法回复、  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [~ userid="518050" URL"/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1113480/tm4c1294ncszad-force-100Base-t-problem /4127472#4127472"]按照这些步骤操作、但当 i_ac_emb_mc_ac_mc_100n_my 以  太网以太网连接至 ful_mc_100b_mc_mc_mc_mc_100b_mc_mc_ma-ma-ma-ma-ma-ma-t- [/报价]

    您的 PC 是否设置为固定的100Mbps 全双工,或者是否设置为自动协商?

    100Mbps 全双工与自动协商 描述了如果一个线路伙伴设置为自动协商,另一个设置为固定100Mbps 全双工,可能会出现的一些问题。  

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

    您好、Charles、

     按照您的建议(删除 MDIX_EN 标志),我的 MCU 现在与 PC 通信,但速度仍然为10Mbps。 FES 标志现在设置为1、但我认为这是由于我添加到 EMACConfigSet 命令中的 EMAC_CONFIG_100Mbps 标志(也在 EMACSnow.c 中)。 此外、An (自协商)标志仍然被设定为1、这使得我相信  EMAC_PHY_FORCE_100B_T_FULL_DUPLEX 标志并不完全有效、这是因为根据 TivaWare 外设 API、它应该禁用自协商(AN=0)。

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

    切斯特、您好!

    感谢您提供这些信息。 到目前为止、更改 PC 自动协商设置不会影响性能、但我将记住这一点以供将来参考。

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

    您好!

     我尝试使用 lwIP 和 TI-RTOS tcp_echo 示例、就 ANEN 而言、两者都显示 ANEN=0、这意味着自动协商被禁用。  

    lwIP tcp_echo 示例上的寄存器设置。

    TI-RTOS tcp_echo 示例上的寄存器设置。  

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

    感谢您的回答...这很有趣。

    在我的应用中、电路板是客户端。  当您也使用客户端示例时、ANEN 标志是否成功设置为零?

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

    我现在尝试一个客户端示例、它显示相同。 我在家里使用 tp-link TL-SG105E 交换机。 不过、不确定开关类型是否有所不同。  

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

    我在没有 开关(将 PC 连接到电路板的单根以太网电缆)的情况下进行直接的点对点连接、并将 IP 地址静态分配给电路板。  但不确定这是否会影响自协商问题。

    我将尝试进行更多的故障排除、然后返回给您。 谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="518050" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1113480/tm4c1294nczad-force-100Base-t-problem /41344696#4134696"]我正在进行 单点直接连接(不连接至我的 PC)以太网电缆[引用]

     两端 RJ45插头是否有交叉电缆(TX-RX 和 RX-TX)? 直通电缆仅适用于交换机端口。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="48581" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1113480/tm4c1294nczad-force-100Base-t-problem /4134971#4134971"]直通电缆只能与交换机端口配合使用[引用/引用]。

    我相信我的 PC 具有自动 MDI-X 功能、所以这不是问题。 我的连接现在可以工作、只是速度不能达到所需的100Mbps。

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

    我意识到我使用了错误的宏(而不是强制)、现在我的 ANEN 标志为0。 但是、根据 Wireshark 和任务管理器、我的速度仍以大约10Mbps 的速度达到最高速度。 我使用对示例代码的简单修改来将消息(send()在无限循环内)从电路板发送到 PC。 您是否了解测试速度/带宽的更好方法? 也许我的当前方法是限制我的速度。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [~ userid="518050" URL"/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1113480/tm4c1294nczad-force-100Base-t-problem/4135149#4135149"]我的连接正在工作,但速度不是100Mbps[报价100Mbps]。

    通常,连接两端启用10/100 NIC 自动协商,将建立100 Mbps。 除非电缆在实心铜线中的 RJ45压接不良、否则可能会降至10Mbps。 尽管某些设备层连接问题 可能不会将数据包向上推入网络或应用层。

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

    我明白了。 感谢您的解释。 我将购买 TM4C1294XL 评估套件来测试此 问题并与定制板的性能进行比较。

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

    定制 PCB 可能是以太网 XFMR 问题或差分对电感、甚至是 PCB 布局。 我的 PCB 为每对长度相等的双面 布局提供2个过孔。 Charles 可能会有一些其他指针来检查该区域、发布以太网区域的原理图会有所帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="518050" URL"~μ C/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1113480/tm4c1294nczad-force-100Base-t-problem /4135238#4135238"]我正在使用简单的修改从 PC (示例)内发送代码、以从 PC 内循环发送无限条码。 [/报价]

    TM4C1294KCPDT:TM4C1294微控制器中的吞吐量测试 包含我上次查看使用 NDK 的 TM4C129器件的最大吞吐量时的注意事项、

    使用您的硬件、您尝试在参考线程中运行测试程序、看看是否可以在 每个方向重复我之前的55.5兆位/秒结果。

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

    感谢您提供此资源! 我下周要休假、所以我将在下周一回来时进行测试。

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

    切斯特、您好!

    使用吞吐量测试、我现在在每个方向上实现了大约26兆位/秒(随附屏幕截图)。 大约是您速度的一半。  

    我在 EK-TM4C1294XL Launchpad 以及我的定制板上对此进行了测试、两者的结果相同(~26Mbps)。  

    我如何设置命令行实例以运行 tcpSendReceive 时可能出现问题? 附件显示了我运行的四个命令行窗口的屏幕截图。  

    注意:对于一个命令行实例、任务管理器将我的以太网速度显示为~21Mbps、而第二个实例将其连接至~26Mbps。 之后(添加第三个、第四个)、速度不会改变。

    谢谢你。

    [任务管理器以太网速度的屏幕截图]

    [四个命令行实例的屏幕截图]

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

    运行相同的测试、我看到使用 Windows 任务管理器进行测量的速度大约为28Mbps。 但是、我对 NDK 堆栈没有太多深入的了解、因此无法建议要进行哪些更改来提高性能。 另请注意、当您测量26Mbps 时、它 与 TX 和 RX 方向分离。 当您将它们相加时、速度将为52Mbps。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [~ userid="93620" URL" url="支持/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1113480/tm4c1294nczad-force-100Base-t-problem/4150423#4150423"]运行与使用 Windows 任务管理器测量相同的测试。 [/报价]

    回顾我之前的测试、其中说"每个方向的以太网吞吐量为55.5兆位/秒"、当时在 Linux 而不是 Windows 上运行 tcpSendReceive。

    吞吐量可能受到 TM4C 或 Windows 端的限制、具体取决于套接字缓冲。

    我可以在周末尝试并重复测量、包括在 Windows 和 Linux 上运行 tcpSendReceive。

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

    谢谢、Chester!

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

    好的、谢谢!

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

    谢谢切斯特!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [~ userid="518050" URL"~μ C/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1113480/tm4c1294nczad-force-100Base-t-problem/4148885#4148885"]注意:使用一个命令行实例、以太网管理器以太网运行速度高达26Mbps、以太网运行速度高达26Mbps ~。 之后(添加第三个、第四个)、速度不会改变。[/quot]

    我再次运行了测试、添加第三个或第四个实例并不会提高速度。

    我正在使用具有10M/100M/1000M 端口的受管交换机。 PC 与交换机之间有1000M 的连接。 开关按预期显示 TM4C129上的端口为"100M、全双工"。

    要测量连接 TM4C129的端口的交换机报告的带宽利用率、请查看带宽利用率。

    在 Windows 10或 Linux (AlmaLinux 8.6或 Ubuntu 18.04)下运行 tcpSendReceive 时、稳定状态带宽利用率为100m 链路的35% RX 和 TX、因此每个方向的带宽为35Mbps:

    但是、如果让测试保持运行、则有时可以采样70%(70Mbps)甚至100%(100Mbps)的利用率:

    目前不确定如何提高稳态利用率。

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

    切斯特、您好!

     感谢您进行测量。 我的交换机的固件不提供利用率。 我想知道您是否要使用 Windows 任务管理器来测量以太网带宽、与交换机实用程序相比、您是否会看到一致的数据。  

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

    切斯特、您好!

    感谢您对此进行深入研究。 我的团队主要关注确保电路板的以太网速度不受其硬件的限制。 由于我们已使电路板的速度达到~26Mbps、并且似乎在 TI LaunchPad 上也重复了类似的限制、因此我可以说电路板的硬件并不是限制以太网速度的因素。

    如果您发现另一种测试方法显示了更高的带宽利用率百分比、请告诉我。 否则、我认为这就是我需要的所有信息。

    谢谢。