N.B. Необходимо сразу сделать важное замечание: WDT функционирует независимо от центрального процессора. Поэтому WDT продолжает работать даже при зависании CPU !
Алгоритм работы:
- В счетчик программым образом может быть записано некоторое число.
- Сразу же содержимое счетчика начинает уменьшаться.
- В момент, когда оно станет равным нулю, управляющее устройство производит некоторые действия, например, ресетит компьютер.
Таким образом, чтобы предотвратить перезагрузку, программа должна переодически обновлять содержимое счетчика. Если она этого не сможет сделать (например, если компьютер завис), то по истечении некоторого времени, когда содержимое счетчика достигнет нуля, WDT перезагрузит систему.
Конкретные реализация WDT может немного отличаться от описанной выше.
Например, сам счетчик может быть недоступен программе для непосредственного изменения. Вместо этого она заносит значение в дополнительный регистр, содержимое которого устройство управления сразу же переносит в счетчик, и счетчик начинает обратный отсчет.
В случае использования доп. регистра возможно использование счетчика, ведущего прямой отсчет. В этом случае его содержимое постоянно сравнивается устройством управления с содержимым доп.регистра. Если значения совпадают, то УУ производит соответствующие действия (ресет).
У устройства управления может быть гораздо больше функций, чем просто перезагрузка системы по достижению счетчиком нуля. Оно может, например, сигнализировать об истечении заданного интервала времени генерированием прерывания (SMI) или изменением состояния битов определенных регистров.
В общем, конкретная реализация WDT зависит от фантазии разработчика и задач, которые предполагается решать.
Настало время перейти к практике.
Рассмотрим работу WDT, являющегося неотъемлемой частью микросхемы
IT8712F (Super I/O от фирмы
ITE). Эта микросхема встречается на огромном количестве материнских плат таких фирм, как Gigabyte, EliteGroup и др. В то же время она отсутствует практически на всех материнских платах фирмы EPoX.
N.B. Напомню, что уточнить, какая микросхема установлена на той или иной материнской плате, можно на официальном сайте MBM.
Узнать, какая микросхема стоит в вашей материнской плате, можно еще проще. Запустите SpeedFan (он умеет определять этот чип) и в окне отчета увидите нечто похожее:
Linked ISA BUS at $0290
Scanning ISA BUS at $0290...
IT8712F/IT8705F found on ISA at $290
SuperIO Chip=IT8712F
В данном случае строение WDT несколько отличается от рассмотренного выше в сторону расширения возможностей за счет некоторого усложнения. Его основные составные части: