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.

[参考译文] RM57L843:具有各种堆栈的 TCP/IP 性能

Guru**** 2557590 points
Other Parts Discussed in Thread: RM57L843

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/805879/rm57l843-tcp-ip-performance-with-various-stacks

器件型号:RM57L843

您好!

客户正在使用10/100以太网接口和3P TCP/IP 堆栈、并使用 iperf 测量 RM57L843的性能。 在8-9Mbps 时性能较低。  

您能否告诉我您在 RM57L843中看到了哪些具有 iperf 类性能基准以及哪些堆栈?

我需要一个能够实现的东西的球场。  

谢谢、

-Gunter

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

    我们以前没有使用 iperf 测量性能? 我在60Mbps/70Mbps ostinato 上测试了 LWIP 示例代码、它可以正常工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 QJ、

    谢谢! 您能否说明您所做的确切测试?
    您似乎已经使用了带 https://ostinato.org/ 工具的 LWIP 1.4.1堆栈示例代码。

    您能准确描述一下该设置吗?您使用了哪一个示例?

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

    您说的性能为8~9 Mbps。 如果速度大于10Mbps,该怎么办?

    我在 RM57L8x HDK 上使用了 LWIP 1.4.1堆栈示例代码。 我的测试不是为了测量性能。 测试速度大于50Mbps 时代码是否卡住。

    我的硬件设置:
    1.通过以太网交换机使用网络电缆连接 HDK 和 PC。
    2.用示波器监控一个 GPIO 引脚。 在 EMAC RX 中断 ISR 中调用 GPIO 切换函数
    3. PC 以50Mbps/60mbps /70Mbps 的速率向 HDK 发送数据包,且数据包长度为64字节

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

    您好 QJ、

    客户已完成更多工作

    1. Micrium 的 TCP 堆栈利用其 UC OSii 的 Mem_Copy()函数。 它们用 它提供的通用 ARM 汇编器版本替换了 Mem_Copy()的基本 C 实现。 新速度:12Mbps

    Micrium 的 TCP 堆栈还提供通用 ARM 汇编器校验和计算器。 将其落实到位后、速度最高可达17 Mbps。

    3.它们打开了 TCP 堆栈和 MCU 端 Iperf 库的编译器优化(-O3用于 gcc)。  新速度为32 Mbps

    他们注意对齐、对所有涉及的存储器缓冲区进行8字节对齐。 新速度为40 Mbps

    5.回归----如果使用 SDRAM 分配大量 TCP 缓冲区而不是使用本地 RAM,会发生什么情况,他们将 TCP Tx 和 Rx 缓冲区放置在 SDRAM 中,而不是内部 SRAM 中。 速度回归至17Mbps。 没这么做...

    6.禁用 IP 和 TCP 层的校验和检查。 速度增加至45Mbps。 他们可能不希望禁用校验和检查、但这可能表明需要使用硬件 CRC 计算器。

    这与您的测试相比如何? 您的测试似乎是在以太网级别测试、但不是在 IP 级别测试、这是正确的吗?

    您是否看到其他改进空间?

    谢谢、

    -Gunter

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

    您好 Gunter、

    我只进行了以太网级别测试。 我将请我们的以太网专家提供 意见。

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

    您好 Gunter、

    SRAM 的 MPU 设置是什么? 是否启用了高速缓存?

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

    您好 QJ、

    Gunter 已向我发送了此讨论的 URL、以便我可以直接评论。  我看了 MPU 设置、实际上、缓存已为 SRAM 启用、但不为闪存启用! 我为闪存启用了缓存、并且我的 iperf 性能立即跳至80 Mbps!

    下面是旧的 MPU 设置:

    静态常量 MpuEntryTable_t mpuTable ={
    {0x00000000、MPU_4_GB、(0xFF << MPU_subregular_shift)、MPU_PRIV_NA_USER_NA_NOexec、MPU_NORMAL OINC_NONSHARED}、 /*背景区域*/
    {0x00000000、MPU_4_MB、0x00、MPU_PRIV_RO_USER_RO_EXEC、MPU_NORY_OINC_NONSHARED}、 /*闪存*/
    {0x080000、MPU_64_KB、0、MPU_PRIV_RW_USER_RW_EXEC、MPU_NORMAL OINC_NONSHARED}、//内部 RAM 的 DMA 区域*
    {0x08000000、MPU_512_KB、MPU_subregive_disable (0)、MPU_PRIV_RW_USER_RW_EXEC、MPU_NORMAL _OIWBWA_NONSHARED}、 /*剩余内部 RAM */
    {0x08400000、MPU_512_KB、0x00、MPU_PRIV_RW_USER_RW_EXEC、MPU_NORMAL OINC_NONSHARED}、
    {0x30000000、MPU_64_MB、0x00、MPU_PRIV_RW_USER_RW_NOexec、MPU_NORMAL OINC_NONSHARED}、 /* R5F 高速缓存0 */
    {0x34000000、MPU_64_MB、0x00、MPU_PRIV_NA_USER_NA_NOexec、MPU_NORMAL OINC_NONSHARED}、 /* R5F 高速缓存1 */
    {0x60000000、MPU_256_MB、MPU_subregion_disable (6)|MPU_subregion_disable (7)、MPU_PRIV_RW_USER_RW_EXEC、MPU_STRONGLYORDERED_sharedable}、
    {0x80000000、MPU_128_MB、0x00、MPU_PRIV_RW_USER_RW_EXEC、MPU_STRONGLYORDERED_sharedable}、
    {0xF0000000、MPU_8_MB、0x00、MPU_PRIV_RW_USER_RO_NOexec、MPU_NORY_OINC_NONSHARED}、
    {0xFB000000、MPU_16_MB、0x00、MPU_PRIV_RW_USER_RW_NOexec、MPU_DEVICE_NONSHAREABLE}、 /* CRC 2 (SPNU562图 2-3)*/
    {0xFC000000、MPU_16_MB、0x00、MPU_PRIV_RW_USER_RW_NOexec、MPU_DEVICE_NONSHAREABLE}、 /*外设帧2 (SPNU562图 2-3)*/
    {0xFE000000、MPU_16_MB、0x00、MPU_PRIV_RW_USER_RW_NOexec、MPU_DEVICE_NONSHAREABLE}、 /* CRC 1 (SPNU562图 2-3)*/
    {0xFF000000、MPU_16_MB、0x00、MPU_PRIV_RW_USER_RW_NOexec、MPU_DEVICE_NONSHAREABLE}、 /*系统外围设备,帧1,3 (SPNU562图 2-3)*/
    {0x080000、0、0、0}、//未使用*/
    { 0x08000000、0、0、0 }////未使用*/
    }; 

    我将闪存的 MPU_NORMAL OINC_NONSHARED 更改为 MPU_NORMAL OINC_NONSHARED、以匹配 SRAM、从而显著提高了速度。

    我想我们之所以禁用它、是因为它在调试过程中或类似过程中引起了问题。 我将询问团队、并尝试了解 MPU 设置的历史记录。

    最棒的

     —Alex

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

    尊敬的 Alex:

    感谢您的更新。 这是一项重大改进。

    我想 您将闪存 MPU 类型更改为 MPU_normal_OIWBWA_Nonshared、而不是 MPU_normal_OINC_Nonshared。

    mpu_normal_OINC_nonshared -->不使用高速缓存