SRAM 사용처 분석: FreeRTOS-C와 Embassy-Rust 기반 IoT 펌웨어의 정적 메모리 할당 연구 (64 KB RISC-V
요약
본 연구는 메모리 제한적인 마이크로컨트롤러의 SRAM 사용 현황을 개선하기 위해, 전체 바이너리 크기 대신 정적 RAM을 스케줄러 힙, 네트워크 버퍼 등 아키텍처별 범주로 분해하는 심볼별 할당 방식을 제안합니다. 이 방법론은 FreeRTOS-C와 Embassy-Rust를 사용하여 RISC-V 마이크로컨트롤러에 적용되었으며, 특히 네트워킹 스택(lwIP vs smoltcp)의 메모리 효율성 차이를 분석했습니다.
핵심 포인트
- SRAM 사용을 아키텍처별 범주로 분해하는 심볼 할당 방식 제안
- FreeRTOS-C와 Embassy-Rust를 RISC-V 환경에서 비교 검증
- 네트워킹 스택의 메모리 효율성(lwIP vs smoltcp) 차이 분석 결과 제시
- 정적 메모리 할당을 통해 펌웨어 최적화 및 리소스 관점 개선 가능
메모리가 제한적인 마이크로컨트롤러를 위한 펌웨어 스택을 선택할 때는 보통 전체 바이너리 크기를 기준으로 삼습니다. 이는 빌드가 얼마나 많은 SRAM을 소비하는지 보고하지만, 그 메모리가 어디에 사용되는지 또는 왜 그렇게 되는지에 대한 정보는 제공하지 못합니다. 본 연구에서는 이러한 격차를 해소하기 위해, 정적 RAM을 아키텍처별 범주(스케줄러 힙, 네트워크 버퍼 및 풀, 태스크 스택, 링커 예약 영역)로 분해하는 심볼별 할당 방식을 제안합니다. 이 방식은 크기 기반 ELF 심볼들을 .data, .bss, 그리고 .stack 섹션 범위에 바인딩하여 작동합니다. 본 방법론의 유효성은 모든 16가지 빌드에 대해 각 범주의 합계를 크기 기반 총합과 정확히 일치시키는 과정을 통해 검증되었습니다. 우리는 이 방법을 여덟 가지 누적된 펌웨어 마일스톤, 즉 기본 태스크 스캐폴드부터 완전한 MQTT-over-Ethernet 클라이언트까지 적용했습니다. 이 구현은 FreeRTOS-C와 Embassy-Rust 두 가지 방식으로 CH32V203RBT6(SRAM 64 KB 및 온칩 Ethernet MAC 및 PHY를 갖춘 RISC-V 마이크로컨트롤러)에서 수행되었으며, 모든 마일스톤마다 하드웨어에서 기능적 동등성이 검증되었습니다. 이 분해 분석 결과, 두 스택 모두 네트워킹에 거의 동일한 비율(각각 63.8% 대 63.9%)의 RAM을 사용하지만, 절대적인 비용은 큰 차이를 보였습니다. lwIP가 40,719 바이트를 필요로 한 반면, smoltcp는 9,316 바이트만을 필요로 했습니다. FreeRTOS 태스크 스택은 태스크당 약 1 KB씩 선형적으로 증가하는 반면, Embassy의 비동기 상태(async state)는 상태 머신 복잡도에 따라 증가합니다. 또한, 본 연구에서는 lwIP가 이 플랫폼에서 모든 것이 정적(all-static discipline)인 방식으로 통합될 수 없음을 보고했으며, 이는 smoltcp가 필요로 하지 않는 20 KB의 영역을 요구했습니다. 측정 하니스(measurement harness), 할당 도구(attribution tool), 그리고 16가지 펌웨어 구현체는 아티팩트로 공개됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv cs.AR의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기