ARM看門狗的那些事

CPU ARM 向日葵 技術 祥說嵌入式開發 祥說嵌入式開發 2017-10-09

在嵌入式系統中,為了使系統在異常情況下能自動復位,一般都需要引入看門狗。 看門狗其實就是一個可以在一定時間內被複位的計數器。當看門狗啟動後,計數器開始自動計數,經過一定時間,如果沒有被複位,計數器溢出就會對CPU產生一個復位信號使系統重啟。系統正常運行時,需要在看門狗允許的時間間隔內對看門狗計數器清零(俗稱“喂狗”),不讓復位信號產生。

ARM看門狗的那些事

在現在的嵌入式系統中主要可以分為兩種類型的看門狗:

1、CPU內部自帶的看門狗:此類看門狗一般是將一個芯片中的定時器來作為看門狗,通過程序的初始化,寫入初值,設定溢出時間,並啟動定時器。程序按時對定時器賦初值(或復位),以免被咬。這種看門狗是可以被禁用的(只要停止這個定時器即可),好比對那隻要咬你的狗來個“葵花點穴手”。大部分CPU都內置看門狗,硬件原理可參考各芯片數據手冊。

優點:可以通過程序改變溢出時間;可以隨時禁用。

缺點:需要初始化;如果程序在初始化、啟動完成前跑飛或在禁用後跑飛,看門狗就無法復位系統,這樣看門狗的作用就沒有了,系統恢復能力降低。

2、獨立的看門狗芯片:這種看門狗主要有一個用於喂狗的引腳(一般與CPU的GPIO相連)和一個復位引腳(與系統的RESET引腳相連),如果沒有在一定時間內改變喂狗腳的電平,復位引腳就會改變狀態復位CPU。此類看門狗一上電就開始工作,無法禁用。現在常用的芯片有:CAT705/CAT706、IMP706等等,溢出時間在1.6秒左右。

優點:無須配置,上電即用。無法禁用,系統必須按時喂狗,系統恢復能力高。

缺點:無法靈活配置溢出時間,無法禁用,靈活性降低。

STM32F4 的獨立看門狗由內部專門的 32Khz 低速時鐘(LSI)驅動,即使主時鐘發生故障,它也仍然有效。這裡需要注意獨立看門狗的時鐘是一個內部RC時鐘,所以並不是準確的32Khz,而是在 15~47Khz 之間的一個可變化的時鐘,只是我們在估算的時候,以 32Khz 的頻率來計算,看門狗對時間的要求不是很精確,所以,時鐘有些偏差,都是可以接受的。

相關推薦

推薦中...