#lwIP 수정: 2026-11-01

lwIP 학습 로드맵: 보드 연결부터 TCP 문제 해결까지

lwIP 글이 어렵게 느껴질 때 필요한 순서를 안내합니다. 실행 문맥, netif와 Ethernet, pbuf 소유권, UDP, TCP 흐름 제어를 단계별로 읽고 증상에 맞는 글을 찾을 수 있습니다.

lwIP 글을 처음부터 전부 읽을 필요는 없습니다. 사용하는 실행 모델과 지금 겪는 증상에 맞는 단계부터 보면 됩니다.

lwIP는 MCU와 임베디드 장치에서 쓰는 TCP/IP 프로토콜 스택입니다. netif는 네트워크 인터페이스, pbuf는 패킷 데이터를 담는 버퍼 구조를 뜻합니다.

이 로드맵은 개념을 익히는 순서와 문제를 찾는 바로가기를 겸합니다. NO_SYS와 RTOS, RAW API와 netconn/socket API는 동작 규칙이 다르므로 각 글에서 다루는 조건을 먼저 확인하세요. 처음부터 읽는다면 1단계부터 시작하고, 이미 증상이 있다면 해당 단계의 글만 골라 읽으면 됩니다.

1. 실행 모델과 호출 문맥

먼저 타이머가 어디서 실행되고, 네트워크 API를 어떤 문맥에서 호출해야 하는지 확인합니다.

2. 인터페이스와 Ethernet bring-up

링크 LED만으로 IP 통신 준비가 끝났다고 판단할 수 없습니다. 인터페이스 상태, DHCP, DMA 메모리와 checksum 책임을 나눠 봅니다.

3. pbuf와 driver 사이의 소유권

패킷을 넘긴 뒤 누가 메모리를 보유하고 언제 반환하는지 정리합니다. 복사 방식으로 안정성을 먼저 확인한 뒤 zero-copy 최적화를 검토합니다.

4. UDP 송수신과 링크 복구

UDP 송신 오류를 payload 문제로 단정하지 말고, route와 netif 상태부터 확인합니다.

5. TCP 흐름 제어와 자원

TCP 송신 큐가 차는 문제, 수신 window가 열리지 않는 문제, 연결 종료 시점의 메모리 오류를 서로 다른 원인으로 나눠 봅니다.

글을 읽을 때 확인할 것

예제의 설정값과 코드 조각은 그대로 복사하기보다 사용 중인 lwIP 버전, lwipopts.h, API 종류와 포트의 실행 문맥에 맞는지 확인하세요. 공식 API 설명과 실제 driver 동작이 다르면 프로젝트의 소스와 설정을 기준으로 판단합니다.

증상이 분명하면 위 단계를 건너뛰고 해당 문제 글부터 읽어도 됩니다. 원인을 좁힐 때는 재현 조건, interface 상태, pbuf/queue 통계와 패킷 캡처를 함께 남기세요. 다른 lwIP 글은 lwIP 카테고리에서 볼 수 있습니다.

참고로 Raspberry Pi Pico와 W5100S Azure IoT 프로젝트 회고는 W5100S의 hardwired TCP/IP stack을 사용하는 별도 구조이며 lwIP 예제가 아닙니다.

광고