使用硬连线 TCP/IP 增强您的 W5100S-EVB-PICO!

介绍一种在您使用的 micropython 中加速以太网的方法。

项目介绍

使用硬连线 TCP!/IP 增强您的 W5100S-EVB-PICO

介绍一种在您使用的 micropython 中加速以太网的方法。

首先,只有配备 WIZnet 芯片的 pico 才能实现这样的速度增强。 您是否知道 WIZnet 以太网芯片(W5100S 或 W5500)有两种模式?

它们是硬连线和 LWIP。

通过在HardWired模式下运行,网络物理层任务在以太网芯片上而不是MCU上执行,从而提高了网络速度和MCU效率。

提高速度的方法还有很多,还可以进一步增强,

但现在,我们只检查一下硬连线模式设置。

看看结果!

默认固件(747 Kbits/秒)=> 自定义固件(1.34 Mbits/秒)

提高约 74%!

这里介绍一下创建FW并使用iperf3进行测试的方法。


固件构建

下载代码的地方是来自官方的micropython GitHub存储库。

GitHub - micropython/micropython: MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems 

 

下载代码后,将其配置为 HardWired 模式。

我们唯一要修改的部分是 make 文件中的一行。

micropython/ports/rp2/boards/W5500_EVB_PICO/mpconfigboard.cmake 

在第 4 行,禁用 LWIP 设置。

#set(MICROPY_PY_LWIP 1)
set(MICROPY_PY_LWIP 0)

现在,让我们继续构建。

README.md 中详细解释了构建方法。

https://github.com/micropython/micropython/blob/master/ports/rp2/README.md 

虽然示例使用 Pico W,但由于我们使用的是 W5100S-EVB-PICO 或 W5500-EVB-PICO,因此我们需要对其中提到的命令进行轻微修改。

#W5100S-EVB-PICO
$ make BOARD= W5100S_EVB_PICO submodules
$ make BOARD= W5100S_EVB_PICO clean
$ make BOARD= W5100S_EVB_PICO
# W5500-EVB-PICO
$ make BOARD= W5500-EVB-PICO submodules
$ make BOARD= W5500_EVB_PICO clean
$ make BOARD= W5500_EVB_PICO

 


速度测试

我们应该验证一下改进是否真实,对吗? 我通常使用 iperf3。

首先,添加 iperf3 库并导入。 您可以在这里下载该库:

https://github.com/micropython/micropython-lib/blob/master/python-ecosys/iperf3/iperf3.py

使用以下示例。

您可以从以下 git 存储库下载它。

https://github.com/wiznetmaker/Hard_wired_WIZNET5K-Micropython/tree/main/examples/iperf3_test

修改定义的网络信息和服务器IP。 服务器 IP 是测试 PC 的 IP。

import machine
import network
import uiperf3

SERVER_IP= "192.168.11.100" #Test PC IP
DEVICE_IP = "192.168.11.101"
GATEWAY = "192.168.11.1"
NETMASK = "255.255.255.0"
DNS = "8.8.8.8"
def wiznet_init():
    spi = machine.SPI(0, baudrate=2000000, mosi=machine.Pin(19), miso=machine.Pin(16), sck=machine.Pin(18))
    nic = network.WIZNET5K(spi, machine.Pin(17), machine.Pin(20))
    nic.active(True)
    nic.ifconfig((DEVICE_IP, NETMASK, GATEWAY, DNS))
    
    print('IP address :', nic.ifconfig())
    
def main():
    wiznet_init()
    uiperf3.client(SERVER_IP)

 

此外,请在您的 PC 上设置 iperf3。

从这里下载 iperf3。 (我用的是3.1.3版本。)

 iPerf - Download iPerf3 and original iPerf pre-compiled binaries 

安装完成后,从安装目录打开命令提示符,输入Server操作命令:

iperf3.exe -s 

如果不起作用,请检查您的防火墙。

 

为了验证 LWIP 是否准确启用/禁用,我添加了日志。 在 /extmod/network_wiznet5k.c 文件中,有一个用于初始化 WIZnet 芯片的函数。

(仅供参考,如果想修改WIZNET5K相关功能,可以修改这段代码。)

 

分支根据 WIZNET5K_WITH_LWIP_STACK 的定义值发生。

如果启用LWIP_STACK,则将运行左侧的代码(第173行),如果禁用,则将执行右侧的代码(第351行)。

我计划向官方 MicroPython 存储库提交一个 Pull 请求。

我希望它能被接受,这样每个人都可以从更快的网络中受益。

 

此外,如果您需要基本的 MicroPython 示例,请尝试使用 WIZnet 官方 git 存储库上提供的示例。

文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值