Tag: Embedded Network
All the articles with the tag "Embedded Network".
-
lwIP에서 UDP 길이가 가끔 잘못 읽힌다: pbuf 체인에서는 len 말고 tot_len을 봐야 한다
lwIP에서 UDP 수신 데이터가 가끔 중간에서 잘리거나 길이가 들쭉날쭉해 보이면 드라이버보다 먼저 pbuf 체인 처리 코드를 확인해야 한다. 첫 pbuf의 len만 보고 전체 길이로 오해하면 큰 프레임, 정렬 차이, pool 분할 상황에서 재현이 애매한 버그가 생긴다.
-
lwIP에서 링크 복구 후 UDP가 한동안 죽어 보인다: ARP 캐시와 netif 상태를 같이 보자
lwIP에서 케이블 재삽입이나 스위치 복구 뒤 링크는 살아 있는데 UDP 송신이 한동안 안 나가거나 첫 패킷만 사라지는 경우가 있다. DHCP보다 아래층인 ARP 캐시와 netif 상태 전환이 어긋나면 생기는 전형적인 증상이라, link up/down 로그와 ARP 해상도 흐름을 같이 보는 편이 빠르다.
-
lwIP에서 링크는 붙었는데 DHCP가 안 돈다: netif_set_up() / netif_set_link_up() 순서를 같이 보자
PHY 링크는 올라왔고 RX/TX 카운터도 움직이는데 lwIP DHCP가 시작되지 않거나 재연결 뒤에 IP를 다시 못 받는 경우가 있다. 대부분은 netif_set_up(), netif_set_link_up(), dhcp_start() 호출 순서와 상태 전환 타이밍 문제다. bring-up 관점에서 자주 틀리는 포인트를 정리한다.
- lwIP
- DHCP
- netif
- Link Status
- +2
-
-
CRC-32 구현 검증하기: 123456789 테스트 벡터와 Ethernet 파라미터
CRC-32 구현을 검증할 때 쓰는 123456789 테스트 벡터, Ethernet CRC 파라미터, FCS byte order, C 코드 예제를 정리한다.
-
lwIP 메모리 옵션 구조 정리: PBUF_POOL, MEM_SIZE, MEMP_NUM_*를 한 번에 보기
lwIP 메모리는 PBUF_POOL, MEM_SIZE, MEMP_NUM_*, OS 큐가 각각 다른 역할을 맡는다. FreeRTOS 포팅과 정적 풀 구성을 기준으로 각 옵션이 어디에 쓰이고 어떤 병목으로 이어지는지 구조적으로 정리한다.
-
lwIP 타이머가 안 돈다: NO_SYS에서 sys_check_timeouts() 빠지면 생기는 증상
lwIP를 bare-metal(NO_SYS)로 붙였는데 DHCP/ARP/TCP가 '가끔' 이상해지는 경우가 있다. 원인은 타이머 처리 루프를 안 돌린 경우가 많다. sys_check_timeouts()를 어디서/얼마나 자주 돌려야 하는지, 그리고 빠졌을 때 나타나는 전형적인 증상을 현장 관점에서 정리한다.
-
lwIP pbuf가 가끔 터진다: PBUF_REF/POOL/RAM 수명주기와 zero-copy 함정
lwIP에서 네트워크가 '가끔만' 죽는 이슈는 pbuf 수명주기 문제인 경우가 많다. 특히 PBUF_REF/zero-copy를 섞으면 버퍼 재사용 타이밍이 한 번만 어긋나도 랜덤 크래시가 난다. pbuf 타입별 수명주기와 실무에서 자주 터지는 함정을 짧게 정리한다.