RTOS 노트
할 일이 많아지면 무한 루프 하나로는 감당이 안 됩니다. 실시간 운영체제가 그 답입니다.
RTOS
슈퍼루프의 한계: 언제 RTOS가 필요한가
while(1) 하나로 모든 일을 돌리면 가장 느린 작업이 전체 반응 속도를 정합니다. RTOS로 넘어갈 신호들.
RTOS태스크와 스케줄러
작업을 각자의 무한 루프를 가진 태스크로 나누고, 스케줄러가 CPU 시간을 나눠 줍니다. 태스크 상태와 틱의 개념.
RTOS우선순위와 선점: 급한 일이 먼저
선점형 스케줄러는 더 높은 우선순위 태스크가 준비되는 즉시 CPU를 넘깁니다. 우선순위를 정하는 기준.
RTOS세마포어와 뮤텍스: 공유 자원 지키기
두 태스크가 같은 UART나 변수를 동시에 건드리면 데이터가 섞입니다. 뮤텍스로 잠그고, 세마포어로 신호를 줍니다.
RTOS큐와 이벤트 그룹: 태스크끼리 대화하기
전역 변수 대신 큐로 데이터를 넘기고, 이벤트 그룹으로 여러 조건을 한꺼번에 기다립니다.
RTOS우선순위 역전: 낮은 태스크가 높은 태스크를 막을 때
낮은 태스크가 잡은 뮤텍스 때문에 높은 태스크가 멈추고, 그 사이 중간 태스크가 CPU를 차지합니다. 화성 탐사선도 겪은 문제.
RTOS메모리와 스택 관리
태스크마다 스택 크기를 정해야 하고, 넘치면 다른 태스크의 메모리를 망가뜨립니다. 스택 크기를 재고 넘침을 잡는 방법.
RTOSFreeRTOS 실습: 센서, 통신, 제어를 태스크로 나누기
STM32에서 FreeRTOS로 IMU 읽기, 제어, UART 로그를 태스크로 분리하는 구조 예. 처음 구성할 때 지킬 순서.