ARM+Linux下看門狗應(yīng)用
現(xiàn)象、問題描述
本文引用地址:http://www.biyoush.com/article/235592.htmlinux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
筆者在設(shè)計(jì)ARM+Linux的產(chǎn)品中,使用了看門狗ADM706。這款I(lǐng)C的定時(shí)間隔為1.6s。由于使用ARM9的內(nèi)核,操作系統(tǒng)為Linux。整個(gè)系統(tǒng)完全啟動(dòng)時(shí)間較長(zhǎng),超出了看門狗的喂狗時(shí)間門限。因此在CPU能完全啟動(dòng)開始喂狗前,看門狗又給出了復(fù)位信號(hào),導(dǎo)致CPU重啟。由于成本的原因,此款看門狗IC的定時(shí)復(fù)位間隔時(shí)間已經(jīng)定死,不能由CPU設(shè)置。我們無法通過更改看門狗的喂狗間隔時(shí)間來滿足CPU的啟動(dòng)要求。
關(guān)鍵過程及根本原因分析
使用的看門狗電路如圖1所示。RESET信號(hào)為看門狗輸出的復(fù)位信號(hào),WDI為CPU輸出的喂狗信號(hào)。在1.6s的時(shí)間內(nèi),WDI信號(hào)有從高到低或者從低到高的變化,則看門狗內(nèi)部的定時(shí)器清零,重新計(jì)數(shù),無復(fù)位信號(hào)輸出。
由于采用Linux內(nèi)核的操作系統(tǒng),Bootloader采用U-Boot。在從U-Boot跳轉(zhuǎn)到Linux內(nèi)核的過程中,必須關(guān)閉定時(shí)器中斷。CPU不能定時(shí)喂狗,且跳轉(zhuǎn)執(zhí)行的間隔時(shí)間都大于1.6s。因此需要關(guān)閉看門狗的復(fù)位輸出信號(hào),以使CPU能完全啟動(dòng)。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)linux相關(guān)文章:linux教程
評(píng)論