임베디드 용어 사전
최적화·저전력

WFI

인터럽트가 올 때까지 CPU를 세우는 명령. 저전력 모드로 들어가는 가장 기본적인 방법이다.

Wait For Interrupt. 할 일이 없으면 자는 것이 저전력의 시작이다.

for (;;) {
    handle_pending_work();
    __WFI();          /* 인터럽트가 올 때까지 CPU 정지 */
}

무엇이 멈추나

기본(슬립) 모드에서는 CPU 클럭만 멈춘다. 주변장치와 인터럽트는 계속 살아 있어서 UART 수신이나 타이머로 즉시 깨어난다. 더 깊은 모드로 갈수록 더 많은 것이 꺼진다.

슬립      CPU 정지 · 즉시 복귀
스톱      대부분의 클럭 정지 · 복귀에 시간이 든다 · RAM 유지
스탠바이   거의 전부 꺼짐 · 리셋처럼 깨어난다 · RAM 대부분 소실

놓치기 쉬운 함정

경쟁 조건   플래그를 확인한 직후 WFI 를 실행하기 전에 인터럽트가 오면
           그 이벤트를 놓치고 잠들 수 있다 → 인터럽트를 막고 확인 후 WFI 하는 관용구를 쓴다
디버거      연결돼 있으면 저전력 모드 동작이 달라지고 전류도 다르게 측정된다
틱 인터럽트  1ms 마다 깨우면 깊은 잠을 못 잔다 → 틱리스 모드

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — 저전력 설계 — 배터리로 몇 년을 버티기