PlatformUpdated 2025-04-01
FreeRTOS Task Design
멀티태스크 아키텍처, 큐/세마포어 패턴 및 태스크 우선순위 설계.
FreeRTOSESP32-S3RTOSQueueSemaphore
개요
CtrlFarm IoT 노드는 FreeRTOS 기반 멀티태스크 구조로 동작합니다. 센서 수집, MQTT 전송, OTA 업데이트, BLE 프로비저닝이 독립 태스크로 분리되어 서로 간섭 없이 실시간 동작합니다.
태스크 구조 전체도
태스크 명세
| 태스크 | 우선순위 | 스택 | 역할 |
|---|---|---|---|
| WatchdogTask | 4 (최고) | 2KB | 시스템 헬스 감시 및 리셋 |
| SensorTask | 3 | 4KB | 센서 데이터 수집 및 큐 전송 |
| MQTTTask | 2 | 8KB | 큐 수신 후 MQTT Publish |
| OTATask | 1 | 8KB | 펌웨어 업데이트 확인 및 적용 |
| BLETask | 1 | 4KB | WiFi 프로비저닝 처리 |
app_main 구현
C++
SensorTask
C++
MQTTTask
C++
OTATask
C++
WatchdogTask
C++
메모리 설계
태스크 간 통신 패턴
설계 원칙
| 원칙 | 적용 내용 |
|---|---|
| 단일 책임 | 태스크마다 하나의 역할만 담당 |
| 우선순위 역전 방지 | Mutex 사용 시 우선순위 상속 활성화 |
| 스택 오버플로 감지 | configCHECK_FOR_STACK_OVERFLOW 2 설정 |
| 큐 풀 방어 | xQueueSend 실패 시 로그 후 드롭 |
| Watchdog | 5초 주기 리셋으로 무한루프 감지 |