피드로 돌아가기
Anomaly detection on ESP32 with 24 bytes of RAM — no cloud, no malloc
Dev.toDev.to
Infrastructure

24바이트 RAM으로 구현한 Zero-malloc 임베디드 이상 탐지 시스템

Anomaly detection on ESP32 with 24 bytes of RAM — no cloud, no malloc

Antoine Porte2026년 5월 4일7advanced

Context

ESP32와 같은 MCU 환경의 극심한 메모리 제약으로 인해 기존의 데이터 전체 저장 및 2-pass 계산 방식의 표준 편차 산출 불가. Floating point 오차 누적으로 인한 Variance 음수 값 발생 및 런타임 불안정성 해결 필요.

Technical Solution

  • Welford's Online Algorithm 도입을 통한 Single-pass 평균 및 분산 계산 구조 설계
  • 24바이트 고정 크기 Struct 사용으로 Heap 할당을 완전히 제거한 Zero-malloc 아키텍처 구현
  • 급격한 스파이크 감지를 위한 Z-Score 기반의 3σ 임계치 필터링 적용
  • 서서히 발생하는 신호 드리프트 감지를 위해 서로 다른 α 값을 가진 Dual EWMA(Exponential Moving Average) 병렬 배치
  • 하드웨어 의존성을 제거한 HAL(Hardware Abstraction Layer) 인터페이스 설계를 통한 PC 기반 유닛 테스트 환경 구축
  • C99 표준 준수 및 정적 메모리 할당을 통한 결정론적(Deterministic) 시스템 동작 보장

1. 임베디드 환경에서 malloc 사용을 배제하고 Static/Stack 메모리 할당 구조인지 검토

2. 수치 계산 시 Naive Formula 대신 Floating point 오차를 최소화하는 Numerically Stable 알고리즘 적용 여부 확인

3. 하드웨어 타겟팅 전 GCC 등 표준 컴파일러로 구동 가능한 독립적 테스트 스위트 구축

4. 단일 지표(Z-Score)의 한계를 보완하기 위해 서로 다른 시계열 특성을 가진 복수 검출기 병렬 배치 고려

원문 읽기