<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM+Linux下看門狗應(yīng)用

          ARM+Linux下看門狗應(yīng)用

          作者:馮瑞明 時(shí)間:2013-02-07 來源:電子產(chǎn)品世界 收藏

            摘要:本文介紹了在+的條件下,傳統(tǒng)的看門狗應(yīng)用存在的問題及解決方案。此方案可以做為+條件下的一種標(biāo)準(zhǔn)解決方法。

          本文引用地址:http://www.ex-cimer.com/article/141891.htm

            現(xiàn)象、問題描述

            筆者在設(shè)計(jì)+的產(chǎn)品中,使用了看門狗ADM706。這款I(lǐng)C的定時(shí)間隔為1.6s。由于使用ARM9的內(nèi)核,操作系統(tǒng)為L(zhǎng)inux。整個(gè)系統(tǒng)完全啟動(dòng)時(shí)間較長(zhǎng),超出了看門狗的喂狗時(shí)間門限。因此在能完全啟動(dòng)開始喂狗前,看門狗又給出了復(fù)位信號(hào),導(dǎo)致重啟。由于成本的原因,此款看門狗IC的定時(shí)復(fù)位間隔時(shí)間已經(jīng)定死,不能由設(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)。

            改進(jìn)電路

            仔細(xì)閱讀此看門狗IC的Datasheet??撮T狗IC的框圖如圖2。此看門狗IC內(nèi)部包括三部分功能:

            (1)看門狗的定時(shí)器,當(dāng)MR為低電平或WDI有電平變化時(shí)清零。當(dāng)定時(shí)器溢出,WDO輸出低電平。一旦定時(shí)器清零,WDO輸出高電平。

            (2)當(dāng)VCC失敗或MR上有低電平,一旦上述條件消失,RESET輸出一個(gè)200ms寬度的低電平信號(hào)。因此,當(dāng)WDO直接連到MR管腳上后,RESET輸出一個(gè)周期為1.6s,低電平寬度為200ms的復(fù)位信號(hào)。

            (3)PFI的輸入電平低于1.25V時(shí),PFO輸出一個(gè)低電平。

            電路圖更新為如圖3所示。  

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          linux相關(guān)文章:linux教程




          關(guān)鍵詞: ARM Linux CPU 201301

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();