lwIP 학습 로드맵: 보드 연결부터 TCP 문제 해결까지 2026-11-01 / lwIP 글이 어렵게 느껴질 때 필요한 순서를 안내합니다. 실행 문맥, netif와 Ethernet, pbuf 소유권, UDP, TCP 흐름 제어를 단계별로 읽고 증상에 맞는 글을 찾을 수 있습니다.
lwIP에서 UDP broadcast가 안 나간다: SO_BROADCAST와 netif flags를 같이 보자 2026-07-01 / lwIP에서 UDP broadcast 송신이 timeout처럼 보이거나 패킷이 캡처되지 않으면 payload보다 SO_BROADCAST 또는 SOF_BROADCAST, NETIF_FLAG_BROADCAST, netif up/link, source IP, route를 먼저 확인해야 한다. RAW API, netconn/socket API, multi-netif 환경의 확인 순서를 정리한다.
lwIP에서 송신이 가끔 멈춘다: linkoutput에서 TX descriptor와 pbuf 수명을 같이 보자 2026-06-26 / lwIP 포팅에서 수신은 되는데 송신이 부하 중 멈추거나 linkoutput이 실패하면 TX descriptor 회수, pbuf chain 처리, zero-copy pbuf lifetime을 같이 봐야 한다. 복사 기반 송신과 DMA zero-copy 송신에서 ownership 기준이 어떻게 달라지는지 정리한다.
lwIP에서 RX pbuf를 넘긴 뒤 가끔 깨진다: tcpip_input ownership을 먼저 정리하자 2026-06-25 / lwIP 포팅에서 RX 패킷을 tcpip_input()으로 넘긴 뒤 간헐적인 payload 깨짐, double free, PBUF_POOL 고갈이 보이면 pbuf ownership 규칙을 먼저 확인해야 한다. ERR_OK와 실패 반환값, DMA 버퍼 재사용, ISR 컨텍스트, 예외 경로별 pbuf_free 기준을 정리한다.
lwIP에서 UDP send가 ERR_RTE로 실패한다: payload보다 netif 상태와 route를 먼저 보자 2026-06-24 / lwIP에서 udp_sendto() 또는 socket sendto()가 ERR_RTE로 실패하면 UDP payload나 ARP보다 먼저 보낼 netif를 찾았는지 확인해야 한다. DHCP 완료 전 송신, default netif 누락, netif up/link 상태 불일치, IP 주소 미설정 같은 route 판단 지점을 bring-up 관점에서 정리한다.
lwIP에서 RX는 되는데 payload가 가끔 깨진다: DMA 버퍼와 D-Cache 순서를 같이 봐야 한다 2026-06-16 / lwIP 포팅에서 링크는 정상이고 인터럽트도 도는데 UDP payload나 ARP 내용이 가끔 깨져 보이면, pbuf보다 먼저 DMA 버퍼와 CPU D-Cache 일관성을 확인해야 한다. RX 전 invalidate, TX 후 clean 순서가 어긋나면 랜덤 패킷 손상처럼 보이는 증상이 반복된다.
lwIP에서 링크 복구 후 UDP가 한동안 죽어 보인다: ARP 캐시와 netif 상태를 같이 보자 2026-06-10 / lwIP에서 케이블 재삽입이나 스위치 복구 뒤 링크는 살아 있는데 UDP 송신이 한동안 안 나가거나 첫 패킷만 사라지는 경우가 있다. DHCP보다 아래층인 ARP 캐시와 netif 상태 전환이 어긋나면 생기는 전형적인 증상이라, link up/down 로그와 ARP 해상도 흐름을 같이 보는 편이 빠르다.
lwIP RAW TCP가 '가끔 멈춘다': tcp_recved() 안 치면 윈도우가 안 열린다 2026-06-02 / lwIP RAW TCP에서 전송이 몇 KB/몇 초 뒤에 멈추고 상대는 재전송만 하는데, 링크는 살아있는 경우가 있다. 대부분은 수신 콜백에서 tcp_recved()를 호출하지 않아 TCP receive window가 열리지 않는 문제다. 증상과 수정 포인트를 실무 관점으로 정리한다.
lwIP 타이머가 안 돈다: NO_SYS에서 sys_check_timeouts() 빠지면 생기는 증상 2026-05-28 / lwIP를 bare-metal(NO_SYS)로 붙였는데 DHCP/ARP/TCP가 '가끔' 이상해지는 경우가 있다. 원인은 타이머 처리 루프를 안 돌린 경우가 많다. sys_check_timeouts()를 어디서/얼마나 자주 돌려야 하는지, 그리고 빠졌을 때 나타나는 전형적인 증상을 현장 관점에서 정리한다.