임베디드 용어 사전
구조·RTOS

슈퍼루프

main의 무한 루프에서 모든 일을 순서대로 처리하는 구조. 가장 단순하지만 한 작업이 길어지면 전체가 밀린다.

임베디드의 가장 기본 골격이다.

int main(void) {
    init();
    for (;;) {
        read_sensor();
        update_control();
        send_status();
    }
}

언제 무너지나

한 작업이 오래 걸린다        나머지 전부가 그만큼 밀린다
블로킹 대기가 들어간다        delay·통신 대기 동안 아무것도 못 한다
주기가 서로 다른 일이 섞인다   1ms 짜리와 1s 짜리를 같은 루프에 넣기 어렵다

살리는 방법

delay 를 없앤다            상태 기계로 바꿔 "기다리지 않고 나눈다"
주기별로 나눈다            1ms·10ms·100ms 슬롯을 만들어 시간 기반으로 분할
급한 것은 인터럽트로        루프는 느린 일만 담당한다

이 셋을 적용하면 상당한 규모까지 RTOS 없이 간다. RTOS 로 넘어갈 시점은 우선순위가 다른 블로킹 작업이 여러 개 생겨 손으로 관리하기 어려워질 때다.

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — 베어메탈 설계 — RTOS 없이 여러 일을 하기