您好!
客户正在使用10/100以太网接口和3P TCP/IP 堆栈、并使用 iperf 测量 RM57L843的性能。 在8-9Mbps 时性能较低。
您能否告诉我您在 RM57L843中看到了哪些具有 iperf 类性能基准以及哪些堆栈?
我需要一个能够实现的东西的球场。
谢谢、
-Gunter
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.
您好 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
您好 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