소프트웨어가 스스로를 구할 수 없을 때 하드웨어가 개입한다.
정상 주기적으로 리프레시 → 카운터가 리셋됨 → 아무 일 없음
이상 무한 루프·데드락으로 리프레시 실패 → 타임아웃 → 리셋
어디서 리프레시하느냐가 설계다
/* 나쁜 예 — 타이머 인터럽트에서 무조건 */
void SysTick_Handler(void) { IWDG->KR = 0xAAAA; } /* 태스크가 다 죽어도 통과한다 */
/* 좋은 예 — 모든 감시 대상이 살아 있을 때만 */
if (alive_mask == ALL_TASKS) { IWDG->KR = 0xAAAA; alive_mask = 0; }
인터럽트만 살아 있어도 만족하는 구조면 감시 대상이 사라진 것과 같다.
종류
독립 워치독 자체 클럭으로 돈다. 메인 클럭이 죽어도 동작한다
윈도우 워치독 너무 일찍 리프레시해도 리셋 — 주기가 무너진 것까지 잡는다
외부 감시 칩 MCU 전체가 이상해지는 경우까지 대비
리셋 원인을 남긴다
리셋 원인 레지스터를 부팅 때 읽어 워치독 리셋이었는지 기록해야 현장에서 원인을 안다.