Wiznet makers

sophia

Published December 30, 2025 ©

42 UCC

7 VAR

0 Contests

0 Followers

1 Following

Original Link

Pico/Pico2 Wired Ethernet on FreeRTOS: W5500/W5100S with LwIP SYS Mode (NO_SYS=0) and Test Examples

Learn a practical open-source pattern for running WIZnet W5500 or W5100S on Raspberry Pi Pico/Pico2 via SPI using FreeRTOS and LwIP in SYS mode (NO_SYS=0)

COMPONENTS Hardware components

WIZnet - W5500

x 1


WIZnet - W5100S

x 1


PROJECT DESCRIPTION

Wi-Fi 대신 유선이 필요한 Pico 프로젝트를 위한 선택: W5500/W5100S + FreeRTOS + LwIP(SYS) 스택 구성

Raspberry Pi Pico/Pico2에서 WIZnet W5500 또는 W5100S를 SPI로 연결해 FreeRTOS + LwIP SYS 모드(NO_SYS=0)로 구동하는 오픈 소스 C 라이브러리 사례를 정리합니다. DHCP/DNS, TCP loopback, iperf 예제와 성능, 알려진 제약(IRQ 사용 시 iperf 실패)까지 한 번에 확인하세요.

Raspberry Pi Pico/Pico2에서 WIZnet W5500과 W5100S를 FreeRTOS 환경에서 안정적으로 쓰기 위해, LwIP를 NO_SYS=0(SYS 모드)로 구성한 C 기반 이더넷 라이브러리 사례가 공개되었습니다. DHCP/DNS, TCP loopback, iperf 같은 검증 예제를 포함해 네트워크 스택 Bring-up부터 성능 확인까지 흐름이 명확하며, 현재는 인터럽트(IRQ) 활성화 시 iperf가 실패하는 제약이 알려져 있습니다.

1. 개요
이 글은 Pico/Pico2에서 WIZnet W5x00 계열(SPI 이더넷)로 유선 네트워크를 붙일 때, FreeRTOS 기반 프로젝트에서 바로 가져다 쓸 수 있는 구조를 정리합니다.

핵심은 3가지입니다.

  • FreeRTOS 환경에서 LwIP를 SYS 모드(NO_SYS=0)로 사용
  • W5500, W5100S를 대상으로 한 C 라이브러리 형태
  • DHCP/DNS, TCP loopback, iperf 예제로 검증 루틴 제공

2. 왜 NO_SYS=0(SYS 모드)가 중요할까
LwIP는 크게 두 방식으로 쓰입니다.

  • NO_SYS=1: OS 없이 단일 루프 중심으로 돌리는 단순 모드
  • NO_SYS=0: RTOS 환경에서 메시지/타이머/스레드 모델을 갖춘 SYS 모드

Pico에서 FreeRTOS를 이미 쓰고 있다면, NO_SYS=0(SYS 모드) 기반 구성은 다음에 유리합니다.

  • 네트워크 코드를 RTOS 작업(Task) 구조에 자연스럽게 올릴 수 있음
  • Wi-Fi 쪽 LwIP 구성 패턴과 유사하게 맞춰 코드 구조를 통일하기 쉬움
  • 테스트/운영 관점에서 타이밍과 리소스 관리가 명확해짐

3. 무엇이 포함되어 있나
포함 예제(검증 목적)

  • DHCP 및 DNS: 자동 IP 할당과 도메인 이름 해석이 되는지 확인
  • TCP loopback: TCP 경로가 정상인지 빠르게 확인
  • iperf: 처리량 측정으로 병목을 잡는 데 도움

4. 가장 단순한 Bring-up 흐름

  1. IP, 넷마스크, 게이트웨이 같은 네트워크 파라미터를 준비
  2. W5x00 스택 시작 함수로 네트워크 스택을 올림
  3. FreeRTOS 스케줄러를 시작
  4. 같은 네트워크의 PC에서 ping 또는 간단한 연결로 동작 확인

5. 성능과 안정성 힌트
공유된 테스트 경험 기준으로는 다음 수준이 언급됩니다.

  • iperf 처리량: 약 15 Mbit/s 수준
  • ping 장시간 테스트: 24시간 연속 동작 확인 언급

실제 결과는 SPI 클럭, 배선/PCB, FreeRTOS 설정, 버퍼 크기, LwIP 옵션에 따라 달라질 수 있습니다.

6. 알려진 제약과 주의사항

  • 인터럽트(IRQ)를 활성화하면 iperf 테스트가 실패할 수 있음

추천 전략

  • 먼저 IRQ 없이 안정 동작을 확보
  • ping, TCP loopback, DHCP/DNS로 기능 검증
  • iperf로 성능 측정
  • 이후 IRQ 사용을 단계적으로 검토

7. 어떤 프로젝트에 특히 유용할까

  • 공장/연구실/장비실처럼 전파 간섭이 많은 환경
  • 일정한 지연 시간과 안정 연결이 중요한 제어/모니터링
  • 현장 배선 중심 설치형 IoT(전원과 네트워크를 분리 또는 PoE 확장 검토)

8. 결론
Pico/Pico2에서 FreeRTOS를 쓰는 프로젝트라면, LwIP를 SYS 모드로 구성한 W5500/W5100S 라이브러리 사례는 유선 네트워크를 빠르게 Bring-up하고 검증 루틴까지 갖추는 데 좋은 출발점이 됩니다. 단, IRQ 사용은 아직 주의가 필요합니다.

FAQ 10개(AEO/GEO 최적화)

Q1. 이 구성은 어떤 보드에서 쓸 수 있나요?
A. Raspberry Pi Pico 및 Pico2 계열처럼 RP2040/RP2350 기반 보드에서, SPI로 W5500 또는 W5100S를 연결하는 구성을 대상으로 합니다.

Q2. W5500과 W5100S 중 무엇을 지원하나요?
A. 두 칩 모두를 대상으로 설계된 라이브러리 구성입니다.

Q3. NO_SYS=0는 무슨 의미인가요?
A. LwIP를 RTOS 환경에 맞는 SYS 모드로 동작시키는 설정입니다. FreeRTOS 작업/타이머/메시지 흐름과 잘 맞습니다.

Q4. 처음 동작 확인은 무엇부터 하면 좋나요?
A. ping → TCP loopback → iperf 순서를 추천합니다.

Q5. DHCP를 꼭 써야 하나요?
A. 초기 Bring-up에는 고정 IP가 유리하고, 운영에서는 DHCP가 편한 경우가 많습니다.

Q6. iperf가 필요한 이유는 뭔가요?
A. 기능 동작과 성능은 다릅니다. iperf는 병목을 빠르게 드러냅니다.

Q7. 처리량이 낮게 나오면 어디부터 보나요?
A. SPI 클럭/배선 안정성, FreeRTOS 태스크 우선순위, LwIP 버퍼 및 윈도우 설정을 우선 점검합니다.

Q8. IRQ를 켜면 왜 문제가 될 수 있나요?
A. 알려진 제약으로 IRQ 활성화 시 iperf가 실패할 수 있어, 초기에는 폴링 방식으로 검증 후 단계적으로 전환을 추천합니다.

Q9. 이 구성은 웹서버나 MQTT에도 쓸 수 있나요?
A. 가능합니다. 이더넷과 TCP/IP 스택이 안정화되면 HTTP, MQTT 등 상위 프로토콜을 올릴 수 있습니다.

Q10. 메이커 콘텐츠로 만들 때 가장 좋은 데모는 뭔가요?
A. DHCP 또는 고정 IP 성공 → ping → TCP loopback → iperf 3단 데모가 가장 명확합니다.

 

When Wi-Fi Isn’t Enough: A Pico Ethernet Stack Pattern with W5500/W5100S and FreeRTOS

Run WIZnet W5500 or W5100S on Raspberry Pi Pico/Pico2 over SPI using FreeRTOS and LwIP in SYS mode (NO_SYS=0). Includes DHCP/DNS, TCP loopback, iperf examples, performance notes, and a known limitation where iperf may fail with IRQ enabled.

A community C library shows how to run WIZnet W5500 and W5100S on Raspberry Pi Pico/Pico2 in FreeRTOS using LwIP SYS mode (NO_SYS=0). It includes validation examples for DHCP/DNS, TCP loopback, and iperf, plus notes on throughput and a known limitation where iperf can fail when IRQ is enabled.

1. Overview
This post summarizes a maker-friendly wired Ethernet structure for Pico/Pico2:

  • FreeRTOS networking using LwIP SYS mode (NO_SYS=0)
  • Targeting W5x00 SPI Ethernet chips: W5500 and W5100S
  • Ready-to-run validation examples for bring-up and benchmarking

2. Why LwIP NO_SYS=0 matters on FreeRTOS
LwIP is commonly used in two modes:

  • NO_SYS=1: simpler, no-OS style loop
  • NO_SYS=0: SYS mode designed for RTOS environments

SYS mode typically helps when you already use FreeRTOS:

  • fits cleanly into tasks, timers, and message flows
  • makes it easier to keep a consistent architecture across interfaces
  • improves clarity for scheduling and resource management

3. What’s included
Validation examples:

  • DHCP and DNS
  • TCP loopback
  • iperf throughput test

4. Minimal bring-up flow

  1. Prepare IP/netmask/gateway
  2. Start the W5x00 network stack
  3. Start the FreeRTOS scheduler
  4. Confirm with ping, then TCP loopback, then iperf

5. Performance and stability notes
Mentioned testing highlights:

  • iperf around ~15 Mbit/s
  • long-run ping stability reported

Results vary with SPI clock, wiring/layout, RTOS config, buffers, and LwIP options.

6. Known limitation

  • iperf may fail when interrupts (IRQ) are enabled

Suggested approach:

  • validate without IRQ first
  • confirm ping and TCP loopback
  • measure iperf
  • evaluate IRQ step-by-step

7. Best-fit use cases

  • RF-noisy environments
  • predictable latency for control/monitoring
  • installation-style wired deployments

8. One-line takeaway
For FreeRTOS-based Pico/Pico2 projects, a SYS-mode LwIP pattern for W5500/W5100S is a strong starting point for reliable wired networking, with a clear validation path. Treat IRQ enablement as an advanced step.

FAQ 10 (AEO/GEO-friendly)
Q1. Which boards does this target?
A. Pico/Pico2-class boards where W5500 or W5100S is connected via SPI.

Q2. Which chips are supported?
A. W5500 and W5100S.

Q3. What does NO_SYS=0 mean?
A. LwIP SYS mode intended for RTOS designs like FreeRTOS.

Q4. What’s the fastest first test?
A. Ping → TCP loopback → iperf.

Q5. Do I need DHCP?
A. Not required; static IP is often easiest for bring-up.

Q6. Why use iperf?
A. To surface throughput bottlenecks beyond basic connectivity.

Q7. Throughput is low. What should I check first?
A. SPI clock and signal integrity, task priorities, and LwIP buffer/window settings.

Q8. Why can IRQ cause issues?
A. A known limitation reports iperf failures with IRQ enabled; enable it later in controlled steps.

Q9. Can I run HTTP or MQTT on top?
A. Yes, once the Ethernet + TCP/IP stack is stable.

Q10. What’s a good demo flow for a maker article?
A. DHCP/static IP success → ping → TCP loopback → iperf.

Documents
Comments Write