DUJINLABS.COM

전자회로 실무 / 펌웨어

워치독(watchdog)은 작업을 실제로 멈춰 리셋(reset)과 재초기화까지 검증합니다

워치독(watchdog)은 프로그램(program)이 멈췄을 때 장치를 다시 시작시켜 복구하기 위한 감시 기능입니다. 설정을 켜 두는 것만으로는 실제 작업 정지를 감지하거나 주변장치까지 복구한다고 보장할 수 없습니다. 감시할 작업을 일부러 멈춰 리셋(reset) 발생과 재초기화 결과를 확인하는 방법을 살펴보겠습니다.

먼저 알아둘 용어

워치독(watchdog)·갱신 — 워치독은 정해진 시간 안에 정상 진행을 알리는 갱신이 없으면 리셋 등 복구 동작을 일으키는 감시 기능입니다. 갱신 위치가 잘못되면 중요한 작업이 멈춰도 계속 살아 있다고 판단할 수 있습니다.

LSI(Low-Speed Internal)·분주·리로드(reload) — LSI는 일부 MCU(Microcontroller Unit)의 독립 저속 내부 발진기입니다. 분주는 입력 클록(clock)을 나누는 비율이고 리로드는 카운터에 다시 넣는 값입니다. 실제 제한 시간은 이 클록과 카운터 정의에 따라 달라집니다.

리셋(reset) 원인 플래그(flag)·윈도 워치독(window watchdog) — 리셋 원인 플래그는 재시작 이유를 기록하는 상태 비트(bit)입니다. 윈도 워치독은 너무 늦은 갱신뿐 아니라 너무 이른 갱신도 오류로 볼 수 있어 허용 갱신 구간을 지켜야 합니다.

정상 갱신이 끊긴 뒤 타임아웃에 도달하는 시간 순서를 보여 줍니다. 재생 속도와 움직임의 크기는 설명을 위한 것입니다.
정지 그림 확대
정상 갱신이 끊긴 뒤 타임아웃에 도달하는 시간 순서를 보여 줍니다. 재생 속도와 움직임의 크기는 설명을 위한 것입니다. · 그림을 클릭하면 확대됩니다.

무엇의 진행을 감시할지 정합니다

메인 작업은 멈췄는데 타이머 인터럽트(interrupt)만 계속 실행되는 고장을 생각해 보겠습니다. 인터럽트에서 워치독을 무조건 갱신하면 실제 제어 작업의 정지를 숨길 수 있습니다. 갱신은 필요한 작업의 완료 또는 진행을 반영하도록 설계하고, 시험에서는 메인 작업만 멈춘 조건도 만듭니다.

정상 최악 시간과 허용 복구 시간을 함께 정합니다

제어 입력을 읽고 출력 상태를 갱신하는 일, 통신의 필요한 처리를 마치는 일 등 “정상 진행”의 구체적인 기준을 정합니다. 타이머 인터럽트가 발생했다는 사실만으로 모든 필수 작업이 살아 있다고 보지 않습니다. 필요한 작업이 일정 시간 안에 진행되었을 때 갱신하도록 구성합니다.

정상 운전에서 가장 늦을 수 있는 처리 시간을 조사하고, 허용 복구 시간과 함께 타임아웃(timeout)을 정합니다. 최악의 정상 처리보다 짧으면 오동작이 되고, 허용할 수 있는 고장 지속 시간보다 길면 보호 목적을 충족하지 못합니다. 부트로더(bootloader)·초기화·펌웨어(firmware) 갱신과 저전력 모드에서의 워치독 상태도 해당 MCU 문서를 따릅니다.

시험용 펌웨어에서 정상 초기화가 끝난 뒤 메인 작업이 진행되지 않도록 만듭니다. 기계 구동 출력이 남는 장치라면 시험 전에 의도한 정지 상태를 확보합니다. 타이머 인터럽트는 계속 실행되는데 메인 작업만 멈춘 조건도 유용합니다. 이 조건에서 갱신이 계속된다면 감시 위치가 잘못되었을 수 있습니다.

재시작 후 가능한 이른 시점에 리셋 원인 플래그를 읽고 저장합니다. 읽기·지우기 규칙은 MCU별 문서를 따릅니다. 그 다음 센서(sensor), 통신, 외부 드라이버(driver)가 필요한 상태로 초기화되는지 확인합니다. MCU만 리셋되어도 외부 주변장치의 전원이나 내부 상태가 그대로 남을 수 있습니다. 부팅 문구가 다시 나온 것만으로 전체 시스템이 정상 동작으로 복구됐다고 판단하지 않습니다.

명목 시간도 직접 계산해 확인합니다

설명용으로 분주가 64이고 카운트 수가 약 1250, LSI가 32 kHz이면 시간 규모는 64×1250/32000=2.5초입니다. 약 1초라고 가정해 설계하면 복구 시간 요구를 어길 수 있습니다. 리로드 값에 1을 더하는지 등의 정확한 카운터 정의와 실제 LSI 주파수 범위를 적용해 최소·최대 시간을 구합니다.

내부 RC(Resistor-Capacitor) 발진기는 표시 주파수에 오차가 있으므로 정밀한 시간 기준으로 취급하지 않습니다. 온도·전압 등에 따른 허용 오차를 포함하고, 저전력 모드·디버거 연결·부트로더에서 카운터가 어떻게 동작하는지 확인합니다. 윈도 워치독이라면 갱신 가능한 최소·최대 시간 구간을 함께 만족해야 합니다.

시험을 통과했다고 말할 수 있는 범위

시험확인할 결과
정상 최악 부하불필요한 리셋 없이 필요한 작업이 완료됨
메인 작업 정지갱신이 멈추고 허용 시간 안에 리셋됨
인터럽트만 계속 실행메인 작업 정지를 숨기지 않음
리셋 직후원인 기록과 외부 장치 초기화가 확인됨
반복 고장부팅 반복을 감지하고 원인 기록이 남음

전원 강하로 인한 리셋은 워치독 타임아웃과 구분합니다. 같은 사건의 전원 파형과 리셋 원인 기록을 대조하고, 손상된 전원·접속은 별도로 수정합니다. 필요한 작업이 멈추었을 때 감시가 실제 복구로 이어지고 외부 장치까지 의도한 상태로 돌아오는지가 완료 기준입니다.

작업 순서를 다시 확인합니다

워치독은 작업을 실제로 멈춰 리셋과 재초기화까지 검증합니다 — 설명용 도해
워치독은 작업을 실제로 멈춰 리셋과 재초기화까지 검증합니다 — 설명용 도해 · 클릭하면 확대됩니다.