워치독 타이머 (WDT, Watchdog Timer)

I. 고신뢰성 시스템을 위한, 워치독 타이머

가. 워치독 타이머의 개념

  • 비정상, 무한루프 등에 빠진 경우 시스템 통제가 불가능한 상황에서 자동으로 시스템을 리셋하는 하드웨어 기능
  • 타임아웃이 되기 전 S/W 명령으로 그 값을 clear 시켜주지 않으면 MCU를 reset시켜 시스템을 정상적으로 동작하고 있는지 감시하고 지속적인 오동작을 방지 신뢰성 향상 기술

나. 워치독 타이머의 필요성

제어 실패 방지
매커니즘 필요
– 불필요한 반복 또는 제어 실패를 방지하는 매커니즘 필요
예상치 못한 실패
안전모드 필요
– 시스템 일부가 예상 못한 제어 실패 시 안전모드로 전환 필요

 

II. 워치독 타이머 개념도 및 구성요소

가. 워치독 타이머 구성도

  • Watchdog 타이머는 H/W를 주기적으로 감시하며, 디바이스로부터 일정 시간동안 입력값(Kick)을 받지 못 하는 경우 시스템의 오동작 상황으로 간주하고 초기화 수행

나. 워치독 타이머 구성요소

시그널내용
ClockHW 디바이스를 동작시키는 외부 Clock Source
Clear (Res-tart / Kick)HW 디바이스가 정상 동작함을 알려주는 주기적 Alive 신호
Timeout타이머가 종료되었음을 알려주는 Output 신호
ResetHW 디바이스를 초기화 할 수 있는 입력 시그널

 

III. 워치독 타이머 유형 및 사례

가. 워치독 타이머 유형

유형개념도설명
내부
워치독
타이머
–  대부분의 마이크로 컨트 롤러에 내부 WDT 내장
–  별도 비용 없음
–  상대적 신뢰도 낮음
(SW문제 동작 오류 가능)
외부
워치독
타이머
–  외부에 별도의 H/W 필요
–  별도 비용 필요
–  프로세서에 물리적 리셋 핀 포함
–  상대적 신뢰도 높음
  • 외부 워치독 타이머는 고가이므로 높은 신뢰성 요구하는 시스템에 주로 사용

나. 워치독 타이머 구현 방법

구분하드웨어 설계방법특징

단단계

워치독

–  마이크로컨트롤러 통합된 옵칩 형태
–  CPU에 인접한 부분에 추가 HW 단일칩 구성

다단계

워치독

–  둘 이상의 타이머가 단계식으로 구성
–  차례로 시정조치 작동, 마지막 단계에서 리셋

시정조치

로직

–  다단계 워치독 설계시 1단계 시정조치로 NMI 통한 시스템 재설정
–  실패 시 Hard-reset
  • 워치독 타이머는 고정 또는 프로그래밍 가능한 시간 간격 가능, 다단계 워치독의 각 타이머는 각 다른 시간 간격 가능

 

IV. 워치독 타이머 하드웨어 내부구조

구성요소설명
Watchdog Control
Register (WDCR)
– 워치독을 컨트롤 하는 레지스터
– 리셋 상태 설정, 사용 여부, 로직 체크
Watchdog Counter
Register (WDCNTR)
– 워치독 카운터의 상태 레지스터
– 현재까지 카운팅 된 값 확인 가능
Watchdog Reset Key Register (WDKEY)– 워치독 카운터를 Clear 하는 역할
System Control and
Status Register(SCSR)
– 워치독 카운터 출력 신호 결과를 리셋 / 인터럽트에 이용 여부 결정
  • 워치독 동작 컨트롤과 설정 및 상태 저장 레지스터로 구성

 

V. 워치독 타이머 소프트웨어

가. 워치독 타이머 소프트웨어 동작방식

상태설명
정상
동작
– 하드웨어 타이머를 시작하여 특정 숫자부터 카운트 다운하여 ‘0’ 도달 시 수행 작업 정의
– 응용 프로그램이 워치독 타이머 시작 후 타이머가 주기적으로 ‘0’이 되지 않도록 재설정
오류
발생
– 오류로 인해 응용 프로그램이 타이머를 재설정하지 못하면 하드웨어 카운터가 ‘0’에 도달
– 워치독 타이머가 만료되면 하드웨어가 복구 절차 수행
  • 워치독 소프트웨어는 타이머 만료 시 작업 정의 및 하드웨어 타이머 시작 후 주기적 타이머 초기화 수행

나. 워치독 타이머 소프트웨어 사례

소프트웨어 (소스코드)설명
[워치독 타이머]
– 타이머가 만료되면 시스템을 리셋하기 위한 신호 전송
 
[소프트웨어]
– 프로그램 루프 실행 동안 워치독 타이머 카운트 초기화
– 프로그램 동작이 정상이면 주기적 카운트 초기화
– 루프 명령 실행 실패 시 카운트 초기화 불가하므로, 타이머가 만료로 시스템 리셋

 

댓글을 남겨주시면 감사드려요~*^^*