Tag: RTOS
All the articles with the tag "RTOS".
-
lwIP에서 UDP broadcast가 안 나간다: SO_BROADCAST와 netif flags를 같이 보자
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 TCP 재시도 루프에서 RTOS delay가 필요한 이유: busy loop를 막고 CPU를 양보하기
lwIP 같은 RTOS 기반 TCP/IP stack에서 송신 재시도 루프를 아무 대기 없이 반복하면 busy loop가 되어 오히려 네트워크 thread와 다른 task의 실행을 방해할 수 있다. 짧은 RTOS delay와 timeout을 함께 두면 CPU 양보와 무한 대기 방지를 동시에 챙길 수 있다.
-
lwIP에서 tcpip_thread 안에서 다시 기다리면 멈춘다: callback 안의 netconn/sockets 호출이 self-deadlock이 되는 이유
lwIP에서 tcpip_callback, netif callback, 내부 이벤트 훅 안에서 netconn 또는 sockets API를 다시 호출하면 부하가 낮을 때는 지나가도 어느 순간 전체 네트워크가 멈출 수 있다. 같은 tcpip_thread가 자기 자신에게 일을 보내고 완료를 기다리는 self-deadlock 패턴이라, 호출 컨텍스트를 분리해 두는 편이 안전하다.
-
-
lwIP에서 ISR에서 바로 보내면 가끔 터진다: tcpip_thread로 넘기는 패턴 정리
이더넷 IRQ에서 패킷 받자마자 lwIP API를 호출하면, 어떤 보드에서는 잘 돌아가고 어떤 보드에서는 랜덤하게 죽는다. 원인은 대부분 컨텍스트/락 문제다. ISR에서 할 일과 tcpip_thread로 넘길 일을 분리하는 패턴을 짧게 정리한다.