lwIP를 초기화하는 과정에서 memp_init()을 벗어나지 못한 적이 있습니다. 처음에는 초기화 코드 자체의 문제라고 생각했지만, 메모리 풀의 시작 주소 정렬이 원인이었습니다.
확인한 부분
MEMP_SEPARATE_POOLS를 사용하는 경우에는 풀의 시작 주소를 정렬한 뒤 접근해야 했습니다.
#if MEMP_SEPARATE_POOLS
memp = (struct memp*)LWIP_MEM_ALIGN(memp_bases[i]);
#endif이 변경 뒤 초기화 루프는 멈췄습니다. 이런 문제는 라이브러리 코드를 바로 의심하기보다, 컴파일 옵션과 메모리 배치, 정렬 조건을 먼저 확인하는 편이 빠릅니다.
댓글을 불러오고 있습니다.