这一篇测评文章注焦ESP32P4的以太网吞吐性能,在linux世界里iperf比较常用,幸运的是esp-idf中已有iperf工具,基于cli支持了iperf命令。
原理图阅读
esp32p4集成了mac功能,phy需要板载,所以需要知道板载phy芯片是什么,phy地址是多少,以及mdio/mdc引脚,phy reset的gpio是谁。这些信息只有阅读原理图才能获取。经阅读原理图得知(原理图这里就不贴了,相关信息在原理图第5页),phy芯片是ip101,phy地址是1,mdio是52,mdc是31,phy reset gpio是51,这些信息需要记录下面配置esp-idf时用得着。
iperf编译
cd esp-idf/examples/ethernet/iperf
cp sdkconfig.ci.default_ip101_esp32p4v1 sdkconfig
idf.py set-target esp32p4
idf.py menuconfig //可以自己改些配置,比如历史命令要不要保存等等,其实不改什么配置也可以用
idf.py build
注意1:esp-idf中已有很多现成的默认配置,主要对应不同phy芯片命名,比如sdkconfig.ci.default_rtl8201, sdkconfig.ci.default_lan8720, sdkconfig.ci.default_ip101等等,由上述阅读原理图步骤可知phy芯片是ip101,所以笔者拷贝ip101对应的sdkconfig
注意2:由前面笔者评测文章可知,笔者这块板子的芯片是esp32v1,所以笔者最终拷贝的是sdkconfig.ci.default_ip101_esp32p4v1
注意3:巧合的是,sdkconfig.ci.default_ip101_esp32p4v1中引脚信息和phy地址信息和上述原理图阅读步骤获取的信息完全一致,所以我们什么都不用改。这说明启明在设计这块开发板的时候和esp对接过,这样的好处就是板子用户可以傻瓜式操作。但是不是每家设计板子时都和esp-idf中一致,所以阅读原理图并在menuconfig中配置phy相关信息有时候是不可少的。
烧录
esptool --chip esp32p4 -b 460800 --before default-reset --after hard-reset write-flash --flash-mode dio --flash-size 16MB --flash-freq 80m 0x10000 build/ethernet_iperf.bin
接上网线运行
可以看到以太网已经link up并从dhcp获得了ip地址192.168.71.205。iperf测试程序截图,可以看到这是个简单的cli命令行,其中集成了iperf命令,参数和linux下的iperf命令参数几乎一致
iperf tx性能
要运行iperf测试需要一个实体作为对端,对端可以是PC机,也可以是任何linux开发板,笔者恰好手里有一块arm SBC开发板,以太网是千兆的,比较适合测试。在arm sbc开发板上运行如下命令
iperf -s
在WT99P4C5-S1开发板的iperf cli上输入命令:
iperf -c 192.168.71.206
测试结果
iperf tx性能差不多有86.8Mbit/s,一般对于MCU类系统百兆网在这个主控频率下差不多就这个数据。我们接着测试rx性能
iperf rx性能
在WT99P4C5-S1开发板的iperf cli上输入命令:
iperf -s -t 30
在arm sbc开发板上输入命令:
iperf -t 30 -c 192.168.71.205
结果如图:
由图可知iperf rx性能大概在61Mbits/s
本帖最后由 xhackerustc 于 2026-3-22 09:27 编辑引用: 秦天qintian0303 发表于 2026-3-24 08:45 86.8Mbit这个相当于就是实际吞吐还是以及换算得宽带?
个人以往经验iperf测得的数据基本就是实际吞吐量