본문 바로가기
AUTOSAR 심화

🚨 Watchdog의 실무적 이해 – 내부 동작, 안전 메커니즘, AUTOSAR WdgM까지 완전 정리

by 버그없는토마토 2025. 12. 13.

와치독이란?


안녕하세요, 버그없는토마토입니다 🍅
지난 글에서는 Watchdog의 기초 개념을 다뤘다면,

이번 글에서는 실무 개발자 관점에서 Watchdog이 어떻게 동작하고,

왜 안전 설계에서 핵심 역할을 하는지 심층적으로 다뤄보겠습니다.

 

 

내용이 조금 심화버전이므로 어려우신 분은 초급자 버전도 작성해 두었으니 아래를 참고해주세요

2025.12.13 - [분류 전체보기] - 🚗 Watchdog이란? 자동차 소프트웨어에서 왜 꼭 필요할까?

 

Watchdog은 단순한 타이머가 아니라, ECU의 생존성(liveness)을 보장하는 Safety Mechanism입니다.
특히 ISO 26262 기반 ECU 개발에서는 Watchdog의 구조와 설정이 안전성의 품질을 결정할 정도로 중요합니다.

와치독의 궁극적 목표는 Safety Mechanism입니다
안전을 위함이죠. 돌발적인 상황에 무한루프에 빠져 기능동작을 하지않는 위험사태에 대비하기위함이죠.

1️⃣ Watchdog의 핵심 목적 – 시스템의 ‘무조건적 복구’

Watchdog의 본질은 단 하나입니다.

“소프트웨어가 정상적으로 실행 중인지 보장하고, 비정상 상태에서는 즉시 복구한다.”

CPU가 다음과 같은 상태에 빠질 때 Watchdog이 동작합니다:

  • 무한루프(Hang)
  • 데드락(Deadlock)
  • 우선순위 역전으로 Task 미실행
  • 메모리 파손으로 인한 비정상 분기
  • 기능안전 메커니즘 실패

즉, CPU가 더 이상 자신의 오류를 스스로 복구할 수 없는 상태가 되면
Watchdog이 강제로 리셋을 수행하여 ECU를 정상 상태로 되돌립니다.


2️⃣ Internal WDT vs External WDT – 두 개의 Watchdog이 필요한 이유

자동차 ECU는 보통 아래 두 종류의 Watchdog을 사용합니다.


✔ ① 내부 Watchdog (MCU Inside WDT)

MCU에 내장되어 있으며 소프트웨어가 직접 활성화하고 주기를 설정합니다.

특징:

  • 빠른 응답성
  • Task 단위로 Kick 시점 제어 가능
  • 저비용·저전력

한계:

  • MCU 자체가 고장 나면 내부 WDT도 동작하지 않음
  • 내부 버스 오류, 클록 문제로 Fail-Silent될 수 있음

✔ ② 외부 Watchdog(IC) – ASIL-D 시스템의 필수 구성

내부 WDT가 감지할 수 없는 다음 상황에서 사용됩니다:

  • MCU 전체 전원이 비정상 상태
  • 내부 클록 멈춤
  • 내부 버스 Lock
  • WDT 레지스터 자체의 오염

즉, MCU가 완전히 죽어도 외부 Watchdog은 동작한다.

이중화 구조는 ISO 26262에서 매우 중요한데, 이는 안전 기능이 단일 고장으로 붕괴되지 않도록 하기 위함입니다.

3️⃣ Windowed Watchdog – 고급 ECU에서 사용하는 강화된 감시 방식

기본 WDT는 “기한 내 Kick” 여부만 검사하지만,
Windowed Watchdog은 다음 두 가지를 검증합니다.

 
1. 너무 늦게 Kick하면 Fail
2. 너무 빨리 Kick해도 Fail
 

왜 이렇게 하느냐?

ECU가 무한루프나 잘못된 Task 흐름에 빠지면
Kick을 아예 못 하기도 하지만,
반대로 너무 자주(비정상 빈도) Kick하는 상황도 발생할 수 있기 때문입니다.

Window WDT는 이러한 상황까지 감지하여
-> 정상적인 실행 타이밍 자체를 감시합니다.


4️⃣ AUTOSAR WdgM(Watchdog Manager) – 실무에서 진짜 중요한 감시 로직

AUTOSAR에서 Watchdog Kick은 단순한 "주기적 신호"가 아니라,
다중 Task 기반의 실행 모니터링 체계로 구성되어 있습니다.

WdgM은 다음 두 가지 감시 기능을 제공합니다:


✔ ① Alive Supervision (살아있는지 확인)

특정 Runnable/Task가 정해진 횟수만큼 실행되는지 확인하는 메커니즘입니다.

예:
10ms Task가 100ms 동안 최소 10번 실행되어야 한다면 → 실행 횟수 검사

이 값이 모자라거나 지나치게 많으면
Task 흐름 이상 → ECU는 비정상 상태 → Watchdog Trigger


✔ ② Deadline Monitoring (마감 시간 준수 검사)

"얼마나 빨리 실행되는가"를 감시합니다.

예:
Runnable이 3ms 안에 끝나야 한다면
4ms 걸릴 경우 Deadline Miss → 감시 실패

이 기능은 특히 모터 제어, 안전 제어 알고리즘에서 중요합니다.
즉,

WdgM은 타이밍 기반 실시간성 문제를 조기에 탐지합니다.


5️⃣ ISO 26262에서 Watchdog은 어떻게 다뤄질까?

Watchdog은 대표적인 Safety Mechanism입니다.
특히 ASIL-B ~ ASIL-D 기능에서 자주 사용됩니다.

ASIL에서는 필수라고 보는게 더 정답입니다.

Watchdog이 탐지 가능한 오류 유형:

  • Hang detection
  • Timing violation
  • Program sequence violation
  • Deadlock detection
  • Task starvation

Safety Goal 예시:

“시스템은 소프트웨어 실행 중 발생하는 불일치를 감지하고 안전 상태로 전이해야 한다.”

이 Safety Goal을 담당하는 대표 모듈이 바로 Watchdog + WdgM 조합입니다.


6️⃣ 실무자가 Watchdog 설계할 때 고려하는 요소

Watchdog 설정은 단순히 “주기”만 결정하는 것이 아닙니다.
다음 요소를 종합적으로 고려해야 합니다:


✔ WDT Timeout 값

  • ECU Task 주기와 Worst-Case Execution Time 기준으로 계산
  • 너무 짧으면 정상 동작도 Fail
  • 너무 길면 Fail 검출 지연 → 안전성 저하

✔ Kick Trigger 시점

  • Main Function 단위?
  • Runnable 단위?
  • Multi-Task 합산 Kick?

✔ Window Watchdog 사용 여부

  • 고안전도(ASIL-D) 기능에서는 Window 모드 필수

✔ Reset 이후 Safe State 정의

Reset 후 어떤 초기화 상태로 들어갈 것인가?
예:

  • 조향 ECU → Motor Off
  • 파워시트 ECU → 모터 구동 금지
여기서 초기화 상태는 무엇일까요?
리셋 후 초기화 상태가 갑자기 이루어졌을 때 운전자가 위험한 상황에 처하지 않을 단계를 내포하고 있습니다.
모든 기능안전의 기본 목적이기도 하죠.

✔ 외부 Watchdog IC 연동 방식

  • SPI냐 GPIO냐
  • Secondary Kick 주기 설정

🏁 마무리

Watchdog은 단순한 감시 타이머처럼 보이지만,
실제로는 ECU의 생존성을 보장하고 기능안전을 충족시키기 위해 설계된 매우 정교한 안전 시스템입니다.

'그냥 무한루프 빠지면 리셋시키는거 아니야?' 라고 생각할 수 있지만 내부는 정교하고 또 세분화 되어있습니다.

  • 내부 WDT는 기본 안전 장치
  • 외부 WDT는 강화된 ASIL-D 보호막
  • Window 모드는 실행 타이밍까지 감시
  • AUTOSAR WdgM은 Task-level 감시 책임
  • Alive/Deadline Monitoring은 실시간 시스템 안정성을 확보

자동차 ECU에서 Watchdog은 선택이 아닌 필수이며,
설계의 품질이 곧 ECU의 안전성을 결정합니다.

오늘도 버그없는토마토였습니다 🍅