안녕하세요. 취업한 공대누나입니다.
오늘은 워치독 타이머에 대한 이야기를 해보려고 합니다.
일반적으로 임베디드 시스템에서 와치독이라고 하는 타이머 하드웨어가 존재하게 됩니다.
1. WDT, 와치독이란?
Watchdog Timer의 약자로 영어 뜻은 말 그대로 감시견입니다.
MCU가 고장나서 중단되거나 소프트웨어 오류로 무한 루프에 빠지는 상태를 감시합니다.
그리고 정상동작을 하지 않는다고 판단되면 일정한 시간이 지나면 시스템을 리셋하게 됩니다.
프로그램이 정상적인 경우에는 주기적으로 타이머에 일정한 신호를 가하여 타이머가 리셋신호를 발생시키지 않도록 합니다. 하지만 프로그램에서 주기적으로 신호를 발생시키지 않으면 오류로 판단하여 리셋을 하는 것입니다.
즉, 일정 시간 동안 시스템을 감시하다가 시스템을 리셋하는 기능을 말하는 것입니다.
2. 사용하는 이유
임베디드 시스템의 경우 혼자 오류를 복구해야 하는 능력이 필요한 경우가 있다.
시스템의 정상동작을 감시하다가 문제가 생기면 다시 시스템을 재부팅하여 정상동작 하도록 하는 것이다.
임베디드 시스템의 경우 사람이 재부팅하는 것에만 의존할 수 없기 때문에 스스로 할 수 있어야 합니다.
대표적인 예로 우주 탐사기와 같은 예를 많이 드는데요.
이러한 원격 임베디드 시스템은 사람이 물리적으로 접근할 수 없기 때문에 자동으로 오류를 복구해야 합니다.
이러한 경우에 사용하게 됩니다.
3. Datasheet
SAM4S16C Datasheet |
우선 현재 보는 MCU의 watchdog은 12bit down counter입니다. 그래서 maximum value가 FFF인 것을 볼 수 있습니다.
WDV는 프로그래머에 의해서 정해질 수 있는 값입니다.
이 MCU에서는 최대 16초마다 한 번씩 리셋 신호를 발생시킬 수 있습니다.
워치독 에러가 발생하면 WDRSTEN이 어떤 값으로 설정되어 있느 냐에 따라서 값이 WDV로 되느냐 FFF로 되느냐가 달라지게 되는 것을 볼 수 있습니다.
정상 상태에서, underflow가 발생하기 전에 유저는 레지스터를 세팅함으로써 규칙적으로 reload를 하게 됩니다.
저는 와치독 카운터를 잘못 사용한 적이 있어서 계속 리셋이 되었던 적이 있었는데요.
그 때는 와치독이 ON 되어 있는 줄 모르고 계속 리셋 신호가 발생하길래 왜 그럴까 하루동안 고민했었는데
단순히 와치독 카운터를 OFF시키니까 해결되서 허무했던 적이 있습니다.
'전자 공학 > 기타' 카테고리의 다른 글
펌웨어란(Firmware)? (2) | 2021.01.09 |
---|---|
ADC - 펌웨어 (0) | 2021.01.08 |
PWM 이란? (0) | 2021.01.01 |
메모리 반도체와 비메모리 반도체 (0) | 2020.12.29 |
SPI 통신이란? (0) | 2020.12.25 |