PlatformUpdated 2025-04-01

FreeRTOS Task Design

멀티태스크 아키텍처, 큐/세마포어 패턴 및 태스크 우선순위 설계.

FreeRTOSESP32-S3RTOSQueueSemaphore

개요

CtrlFarm IoT 노드는 FreeRTOS 기반 멀티태스크 구조로 동작합니다. 센서 수집, MQTT 전송, OTA 업데이트, BLE 프로비저닝이 독립 태스크로 분리되어 서로 간섭 없이 실시간 동작합니다.

태스크 구조 전체도

태스크 명세

태스크우선순위스택역할
WatchdogTask4 (최고)2KB시스템 헬스 감시 및 리셋
SensorTask34KB센서 데이터 수집 및 큐 전송
MQTTTask28KB큐 수신 후 MQTT Publish
OTATask18KB펌웨어 업데이트 확인 및 적용
BLETask14KBWiFi 프로비저닝 처리

app_main 구현

C++

SensorTask

C++

MQTTTask

C++

OTATask

C++

WatchdogTask

C++

메모리 설계

태스크 간 통신 패턴

설계 원칙

원칙적용 내용
단일 책임태스크마다 하나의 역할만 담당
우선순위 역전 방지Mutex 사용 시 우선순위 상속 활성화
스택 오버플로 감지configCHECK_FOR_STACK_OVERFLOW 2 설정
큐 풀 방어xQueueSend 실패 시 로그 후 드롭
Watchdog5초 주기 리셋으로 무한루프 감지