最近想测试在默认参数下STM32CubeMX生成FreeRTOS+LWIP的网络应用的效率,于是选用STM32F429-Nucleo和STM32CubeMXv5.5作为测试平台,HAL库版本为V1.24.2,keil三级优化。在按板卡选择且外设一切都是默认情况下,勾选了FreeRTOS和LWIP,参数是默认值。生成代码,并移植一份测试程序。结果发现板卡长时间未获取IP。在文件中设置#define LWIP_DEBUG 1以及使能DHCP_DEBUG,发现未能获取的IP的原因是出现了超时。
选择官方程序,未有此现象,说明参数设置有误。于是重新设置一份程序。还是原来的配置,先关闭USB外设,勾选FreeRTOS+LWIP并只生成一个任务,这时DHCP功能起作用,板卡在数秒内获取IP;生成两个任务后板卡长时间未获取IP。说明FreeRTOS的Heap设置过小。将FreeRTOS的Heap设置如下图后DHCP功能正常。
DHCP功能正常后,使用jperf-2.0.0测速结果如下:
速度不稳且速度太低。
按如下修改参数:
修改后的速度如下:
速度平稳且有明显的提高。虽然离满速还有距离,但修改思路仍有借鉴意义。在此也感谢野火在教程中提供的关于LWIP参数优化的方法。
测试程序:
DHCP 未优化.zip
(2.19 MB)
DHCP 优化.zip
(2.2 MB)
测速软件:
Jperf.zip
(2.7 MB)
|