如何运行 FreeRTOS、LWIP 和 Iperf 的终极指南
转发: Running IPerf with FreeRTOS and LWIP on WIZnet Pico board
项目介绍
介绍
该项目旨在指导如何使用 FreeRTOS 和 LWIP 在 WIZnet W5100S-EVB-Pico 板上运行 IPerf。
如何
步骤 0. 克隆存储库
克隆 pico-sdk、pico-examples 或克隆我的示例存储库。
步骤 1. 移植 FreeRTOS
由于 FreeRTOS 内核中已经有 RP2040 端口,因此我们使用它。 在您的环境中定义 FREERTOS_KERNEL_PATH,然后将以下行添加到 CMakeLists.txt
include(${FREERTOS_KERNEL_PATH}/portable/ThirdParty/GCC/RP2040/FreeRTOS_Kernel_import.cmake)
然后只需将 FreeRTOS-Kernel-Heap4 添加到 target_link_libraries 中即可。
步骤 2. 移植 LWIP 和 IPERF
由于LWIP已经移植到pico-sdk,使用时我们只需将以下库添加到CMakeLists.txt中的target_link_libraries中
pico_lwip_nosys
pico_lwip_iperf
步骤 3. 移植 WIZnet ioLibrary
将 ioLibrary 驱动程序克隆到您的项目中。 在我的项目中,有 w5x00_lwip.c 及其头文件,它们提供了将 WIZnet 与 LWIP 结合使用的多个函数。 有一些重要的代码调整需要完成。 由于W5100S将在MACRAW模式下使用,我们需要将内存分配给socket 0,如下所示。
void wizchip_initialize(void)
{
...
/* W5x00 initialize */
uint8_t temp;
#if (_WIZCHIP_ == W5100S)
uint8_t memsize[2][4] = {{8, 0, 0, 0}, {8, 0, 0, 0}}; // For LWIP
//uint8_t memsize[2][4] = {{2, 2, 2, 2}, {2, 2, 2, 2}};
....
端口文件夹可以在 Github 上的各种 WIZnet RP2040 SDK 中找到。 它基本上为 RP2040 和 WIZnet 芯片提供通信层。
步骤 4. 让我们编写代码
示例代码非常简单。 在 Main 中,我们创建一个 iperf_task 并启动 Scheduler。 在 iperf_task 中,我们初始化 WIZnet 芯片、LWIP 堆栈并启动 IPERF 服务器。
结果。
构建项目后,将生成的 uf2 文件复制到您的开发板上并运行。 通过串行终端,我们可以验证代码正在运行。
我们来看看实际的iperf性能
下一步计划
使用此设置(FreeRTOS 和 LWIP),我们可以使用 WIZnet W5100S-EVB-Pico 板实现各种工业协议。 请继续关注下一个项目!