0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

了解Zynq SoC的私有看門狗定時(shí)器

OpenFPGA ? 來(lái)源:OpenFPGA ? 作者:OpenFPGA ? 2022-04-29 10:19 ? 次閱讀

在上一篇博客中,我們查看了 Zynq All Programmable SoC 中每個(gè) CPU 提供的私有計(jì)時(shí)器。在本博客中,我們將了解 Zynq SoC 的私有看門狗定時(shí)器,以及如何使用它,我們將查看其使用示例。

參考:

?

UG585 CH8 Timer

每個(gè)A9處理器都有私有的32位定時(shí)器和32位看門狗定時(shí)器。兩個(gè)處理器共享一個(gè)64位定時(shí)器。這些定時(shí)器的時(shí)鐘始終是的CPU頻率的1/2(CPU_3x2x)。

69c16a1a-c754-11ec-bce3-dac502259ad0.png

然而,在我們研究如何配置和使用 Zynq 看門狗之前,我認(rèn)為最好先了解一下為什么需要看門狗定時(shí)器以及看門狗是如何工作的??撮T狗解決了無(wú)響應(yīng)軟件的必然性,并為這個(gè)問(wèn)題提供了可靠的解決方案。無(wú)論最終應(yīng)用是什么,所有工程師都希望提供可靠的解決方案,優(yōu)秀的系統(tǒng)設(shè)計(jì)人員知道他們必須針對(duì)所有可能性進(jìn)行設(shè)計(jì)。

系統(tǒng)工程團(tuán)隊(duì)必須采取許多步驟來(lái)確??煽康脑O(shè)計(jì)。第一步是建立定義系統(tǒng)及其軟件行為的需求基線。然后,工程團(tuán)隊(duì)按照軟件生命周期實(shí)施這些要求,其中包括:

  • 設(shè)計(jì)文檔的生成
  • 軟件設(shè)計(jì)和源代碼
  • 驗(yàn)證策略是否已達(dá)到要求

大多數(shù)設(shè)計(jì)將包括確保軟件能夠?qū)ο到y(tǒng)故障做出合理響應(yīng)的方法。這些故障可能會(huì)產(chǎn)生兩種影響之一——允許軟件繼續(xù)運(yùn)行,同時(shí)保持完整或減少的服務(wù),或者完全無(wú)法響應(yīng)。當(dāng)軟件無(wú)法響應(yīng)時(shí),看門狗定時(shí)器可以重新啟動(dòng)系統(tǒng)或確保系統(tǒng)安全的發(fā)生故障。(安全關(guān)鍵系統(tǒng)和軟件的問(wèn)題是一個(gè)復(fù)雜的問(wèn)題,需要的空間比我在這里詳細(xì)介紹的要多。)

從最簡(jiǎn)單的意義上說(shuō),看門狗是一個(gè)從預(yù)加載值開(kāi)始倒計(jì)時(shí)的計(jì)時(shí)器。當(dāng)軟件應(yīng)用程序執(zhí)行時(shí),它會(huì)定期重置看門狗。如果軟件未能重置看門狗,它的計(jì)數(shù)將達(dá)到零,然后看門狗電路復(fù)位處理器。當(dāng)軟件正常運(yùn)行時(shí),看門狗計(jì)數(shù)永遠(yuǎn)不會(huì)達(dá)到零。如果軟件由于某種原因出現(xiàn)故障,則看門狗不會(huì)復(fù)位,計(jì)數(shù)達(dá)到零,處理器復(fù)位,軟件重新啟動(dòng)。許多系統(tǒng)都有一個(gè)寄存器,它在看門狗觸發(fā)時(shí)設(shè)置了一個(gè)位。此功能允許系統(tǒng)從看門狗復(fù)位中恢復(fù)過(guò)來(lái),同時(shí)注意看門狗觸發(fā)了復(fù)位這一事實(shí)。

Zynq SoC 中的兩個(gè) ARM Cortex-A9 處理器中的每一個(gè)都有一個(gè)私有看門狗定時(shí)器。這些私有看門狗可以用作像私有計(jì)時(shí)器(在本系列的上一篇博客文章中討論過(guò))這樣的計(jì)時(shí)器,也可以用作看門狗。Zynq 看門狗定時(shí)器通過(guò)六個(gè)寄存器控制:

  • 看門狗加載寄存器(Watchdog Load Register):保存看門狗定時(shí)器倒計(jì)時(shí)的值。在自動(dòng)重載模式下,看門狗計(jì)數(shù)器重置為存儲(chǔ)在該寄存器中的值。寫入該寄存器將導(dǎo)致看門狗計(jì)數(shù)器寄存器重置為此值。
  • 看門狗計(jì)數(shù)器寄存器(Watchdog Counter Register):這是看門狗計(jì)數(shù)器本身。是遞減計(jì)數(shù)器。根據(jù)看門狗模式,寫入該寄存器會(huì)重新加載計(jì)數(shù)器。在看門狗模式下,該寄存器只能通過(guò)寫入看門狗加載寄存器來(lái)更新。
  • 看門狗控制寄存器(Watchdog Control Register):該寄存器控制看門狗(定時(shí)器或看門狗)的配置、預(yù)分頻器設(shè)置、中斷啟用、自動(dòng)重載模式以及看門狗在其當(dāng)前配置模式下的啟用。
  • 看門狗中斷狀態(tài)寄存器(Watchdog Interrupt Status Register):包含一個(gè)事件標(biāo)志,顯示計(jì)數(shù)器何時(shí)達(dá)到零。寫入該寄存器會(huì)重置它。
  • 看門狗復(fù)位狀態(tài)寄存器(Watchdog Reset Status Register):該寄存器僅包含一位,僅由上電復(fù)位(不是看門狗觸發(fā)的復(fù)位)清除。它也可以通過(guò)軟件應(yīng)用程序清除。復(fù)位狀態(tài)位允許軟件確定重啟的原因是否是由看門狗超時(shí)引起的。
  • 看門狗禁用寄存器(Watchdog Disable Register):當(dāng)看門狗設(shè)置為定時(shí)器模式時(shí),該寄存器需要寫入兩個(gè)特定模式以啟用看門狗控制寄存器中的看門狗模式位。

正如我們?cè)?Zynq SoC 的私有定時(shí)器中看到的那樣,Zynq 軟件開(kāi)發(fā)環(huán)境提供了許多可用于配置和驅(qū)動(dòng)看門狗的函數(shù)和宏。這些包含在#include "xscuwdt.h" 中。該文件使工具能夠:

  • 測(cè)試看門狗是否過(guò)期
  • 加載看門狗
  • 啟動(dòng)、停止和重新啟動(dòng)看門狗
  • 設(shè)置看門狗模式
  • 配置和初始化看門狗

以下示例將看門狗配置為不刷新的傳統(tǒng)看門狗,以便看門狗在超時(shí)時(shí)復(fù)位 Zynq SoC。然后,示例代碼檢查以確定在看門狗復(fù)位(例如上電復(fù)位或看門狗超時(shí))后復(fù)位的原因,并通過(guò) STDOUT 報(bào)告此情況。按下按鈕啟動(dòng)私人(專用)定時(shí)器,點(diǎn)亮 LED,并啟動(dòng)看門狗。為了做到這一切,我們按照標(biāo)準(zhǔn)方法配置看門狗,就像我們迄今為止使用來(lái)自 xparameters.h 的數(shù)據(jù)和配置例程對(duì)所有外設(shè)所做的那樣:

//defineprivatewatchdog
#defineWDT_DEVICE_IDXPAR_SCUWDT_0_DEVICE_ID
#defineINTC_DEVICE_IDXPAR_SCUGIC_SINGLE_DEVICE_ID
#defineWDT_IRPT_INTRXPAR_SCUWDT_INTR
#defineWDT_LOAD_VALUE0xFF

//看門狗配置

WCHConfigPtr=XScuWdt_LookupConfig(WDT_DEVICE_ID);
XScuWdt_CfgInitialize(&WdtInstance,WCHConfigPtr,WCHConfigPtr->BaseAddr);
XScuWdt_LoadWdt(&WdtInstance,WDT_LOAD_VALUE);
XScuWdt_Start(&WdtInstance);

在初始化和加載看門狗之后,接下來(lái)的步驟是啟用中斷(在中斷配置函數(shù)內(nèi))并將看門狗設(shè)置為看門狗功能,而不是使用 XScuWdt_SetWdMode() 函數(shù)的定時(shí)器功能:

//setupthewatchdog

XScuGic_Connect(GicInstancePtr,WdtIntrId,(Xil_ExceptionHandler)WdtIntrHandler,
(void*)WdtInstancePtr);


//設(shè)置看門狗

XScuWdt_SetWdMode(WdtInstancePtr);

如果我們希望在定時(shí)器模式下使用看門狗,我們可以調(diào)用函數(shù):XScuWdt_SetTimerMode()這就是為什么我設(shè)置中斷以觸發(fā)在定時(shí)器模式下運(yùn)行的看門狗并為看門狗聲明一個(gè)空的中斷服務(wù)程序,在這種情況下將被調(diào)用。

我們可以使用讀取看門狗復(fù)位狀態(tài)寄存器的函數(shù)來(lái)查看最后一次復(fù)位是否是由于看門狗事件:

XScuWdt_IsWdtExpired(InstancePtr)

下圖顯示了當(dāng)處理器從上電復(fù)位和按下按鈕以啟用看門狗定時(shí)器時(shí)發(fā)生的復(fù)位上電時(shí)通過(guò) STDOUT 輸出的結(jié)果:

69d874a8-c754-11ec-bce3-dac502259ad0.png

先前的復(fù)位狀態(tài)保持存儲(chǔ)在其中的看門狗事件的狀態(tài)通過(guò) XScuWdt_IsWdtExpired() 訪問(wèn)的看門狗復(fù)位狀態(tài)寄存器。

此示例的源代碼:

?

https://gitee.com/openfpga/zynq-chronicles/blob/master/main_part16.c

69f5cd8c-c754-11ec-bce3-dac502259ad0.jpg


審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 看門狗
    +關(guān)注

    關(guān)注

    10

    文章

    557

    瀏覽量

    70677
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5275

    瀏覽量

    119693
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3228

    瀏覽量

    114204

原文標(biāo)題:ZYNQ從放棄到入門(六)- 專用看門狗

文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    一文詳解看門狗定時(shí)器

    看門狗定時(shí)器由獨(dú)立的1 Mhz 片內(nèi)振蕩驅(qū)動(dòng)。這是VCC = 5V 時(shí)的典型值。請(qǐng)參見(jiàn)特性數(shù)據(jù)以了解其他VCC 電平下的典型值。通過(guò)設(shè)置看門狗
    發(fā)表于 09-02 16:40 ?3872次閱讀
    一文詳解<b class='flag-5'>看門狗</b><b class='flag-5'>定時(shí)器</b>

    STM32看門狗定時(shí)器的工作原理和作用 看門狗定時(shí)器的特性

    看門狗定時(shí)器(WDT,Watch Dog Timer)是單片機(jī)的一個(gè)組成部分,它實(shí)際上是一個(gè)計(jì)數(shù),一般來(lái)說(shuō)都是向下計(jì)數(shù)的,給看門狗一個(gè)數(shù)字,程序開(kāi)始運(yùn)行后
    的頭像 發(fā)表于 07-27 16:30 ?5696次閱讀
    STM32<b class='flag-5'>看門狗</b><b class='flag-5'>定時(shí)器</b>的工作原理和作用 <b class='flag-5'>看門狗</b><b class='flag-5'>定時(shí)器</b>的特性

    看門狗電路的作用

    看門狗電路的作用      看門狗電路其實(shí)是一個(gè)獨(dú)立的定時(shí)器,有一個(gè)定時(shí)器控制寄存,可以設(shè)
    發(fā)表于 01-12 12:00 ?8516次閱讀
    <b class='flag-5'>看門狗</b>電路的作用

    內(nèi)部與外部看門狗定時(shí)器的比較

    摘要:本文對(duì)內(nèi)部(集成在處理內(nèi)部)看門狗定時(shí)器(WTD)與外部(基于硬件) WDT的優(yōu)勢(shì)和劣勢(shì)進(jìn)行了對(duì)比。內(nèi)部看門狗便于設(shè)計(jì),但容易失效。MAXQ2000微控制
    發(fā)表于 05-02 10:34 ?4552次閱讀

    看門狗定時(shí)器的設(shè)計(jì)、工作原理及看門狗定時(shí)器的操作

    看門狗定時(shí)器(WDT,Watch Dog Timer)是單片機(jī)的一個(gè)組成部分,它實(shí)際上是一個(gè)計(jì)數(shù),一般給看門狗一個(gè)數(shù)字,程序開(kāi)始運(yùn)行后看門狗
    發(fā)表于 05-23 09:14 ?7579次閱讀
    <b class='flag-5'>看門狗</b><b class='flag-5'>定時(shí)器</b>的設(shè)計(jì)、工作原理及<b class='flag-5'>看門狗</b><b class='flag-5'>定時(shí)器</b>的操作

    看門狗定時(shí)器的作用

    看門狗定時(shí)器(WDT,Watch Dog Timer)是單片機(jī)的一個(gè)組成部分,它實(shí)際上是一個(gè)計(jì)數(shù),一般給看門狗一個(gè)數(shù)字,程序開(kāi)始運(yùn)行后看門狗
    發(fā)表于 10-20 14:41 ?6634次閱讀

    dsp看門狗定時(shí)器的作用解析

    看門狗在外圍監(jiān)控DSP中軟件的運(yùn)行以及硬件的操作,當(dāng)CPU出現(xiàn)故障時(shí),看門狗將執(zhí)行系統(tǒng)復(fù)位。如果軟件進(jìn)入了一個(gè)不正確的循環(huán)或者CPU出現(xiàn)暫時(shí)的混亂,看門狗定時(shí)器將出現(xiàn)溢出來(lái)使系統(tǒng)復(fù)位。
    發(fā)表于 11-21 16:52 ?1.4w次閱讀
    dsp<b class='flag-5'>看門狗</b><b class='flag-5'>定時(shí)器</b>的作用解析

    基于VxWorks的看門狗定高效定時(shí)機(jī)制設(shè)計(jì)實(shí)現(xiàn)

    VxWorks提供了一個(gè)看門狗定時(shí)器(watchDog timer),它由以下四個(gè)函數(shù)維護(hù): wdCreate( ) 創(chuàng)建并初始化一個(gè)看門狗定時(shí)器;wdDelete( ) 終止并
    發(fā)表于 03-06 09:22 ?4700次閱讀
    基于VxWorks的<b class='flag-5'>看門狗</b>定高效<b class='flag-5'>定時(shí)</b>機(jī)制設(shè)計(jì)實(shí)現(xiàn)

    TB3123 - PIC?單片機(jī)的窗口看門狗定時(shí)器

    窗口看門狗定時(shí)器(Windowed Watchdog Timer,WWDT)是PIC單片機(jī)的增強(qiáng)型看門狗定時(shí)器。該定時(shí)器是PIC單片機(jī)現(xiàn)有
    發(fā)表于 03-26 14:35 ?0次下載
    TB3123 - PIC?單片機(jī)的窗口<b class='flag-5'>看門狗</b><b class='flag-5'>定時(shí)器</b>

    什么是看門狗定時(shí)器?為何看門狗定時(shí)器如此重要?

    的MCU故障可能無(wú)意中使看門狗定時(shí)器喪失功用,因此整合看門狗可能不會(huì)總是按預(yù)期的方式運(yùn)作。同樣地,雖然軟件以內(nèi)部看門狗能夠偵測(cè)所有凍結(jié)或停機(jī)的方式編寫,但是,采取額外的步驟以冗余方式監(jiān)
    的頭像 發(fā)表于 08-29 08:13 ?2.3w次閱讀
    什么是<b class='flag-5'>看門狗</b><b class='flag-5'>定時(shí)器</b>?為何<b class='flag-5'>看門狗</b><b class='flag-5'>定時(shí)器</b>如此重要?

    看門狗定時(shí)器的相關(guān)問(wèn)題和實(shí)驗(yàn)說(shuō)明

    看門狗的作用: 看門狗定時(shí)器是一個(gè)計(jì)數(shù),基本功能是在發(fā)生軟件問(wèn)題和程序跑飛后使系統(tǒng)重新啟動(dòng)。看門狗計(jì)數(shù)
    的頭像 發(fā)表于 10-06 12:59 ?4422次閱讀
    <b class='flag-5'>看門狗</b><b class='flag-5'>定時(shí)器</b>的相關(guān)問(wèn)題和實(shí)驗(yàn)說(shuō)明

    一文詳解微控制中的看門狗定時(shí)器

    本文介紹看門狗定時(shí)器,通常縮寫為 WDT,也稱為計(jì)算機(jī)正常運(yùn)行定時(shí)器或 COP。有外部看門狗設(shè)備和內(nèi)部看門狗功能。本文僅介紹內(nèi)部
    的頭像 發(fā)表于 04-25 17:26 ?4891次閱讀
    一文詳解微控制<b class='flag-5'>器</b>中的<b class='flag-5'>看門狗</b><b class='flag-5'>定時(shí)器</b>

    使用高速微型看門狗定時(shí)器

    在惡劣環(huán)境中使用的高速微控制應(yīng)用的設(shè)計(jì)人員將使用看門狗定時(shí)器來(lái)防止軟件失控。DS80C320高速微控制集成了看門狗
    的頭像 發(fā)表于 02-09 11:54 ?816次閱讀

    內(nèi)部和外部看門狗定時(shí)器的比較

    本文比較了內(nèi)部(與微處理集成)和外部(基于硬件)看門狗定時(shí)器(WDT)的優(yōu)缺點(diǎn)。它解釋了內(nèi)部看門狗定時(shí)器易于實(shí)現(xiàn),但容易發(fā)生故障。MAXQ
    的頭像 發(fā)表于 04-03 11:15 ?2878次閱讀

    AXI時(shí)基看門狗定時(shí)器(WDT)概述

    XilinxLogiCORE IP AXI4-Lite時(shí)基看門狗定時(shí)器(WDT)是一個(gè)32位外設(shè),提供32位自由運(yùn)行時(shí)基和看門狗定時(shí)器。
    的頭像 發(fā)表于 10-16 11:10 ?1053次閱讀
    AXI時(shí)基<b class='flag-5'>看門狗</b><b class='flag-5'>定時(shí)器</b>(WDT)概述