日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > > ZYNQ

看門(mén)狗定時(shí)器復(fù)位

看門(mén)狗定時(shí)器復(fù)位在啟用時(shí)由看門(mén)狗定時(shí)器內(nèi)部產(chǎn)生并且計(jì)時(shí)器到期。

PS 中有三種不同的看門(mén)狗定時(shí)器:

一個(gè)系統(tǒng)級(jí)定時(shí)器(SWDT)和兩個(gè)ARM內(nèi)核(AWDT0和AWDT1)中的每個(gè)內(nèi)核中的一個(gè)專用計(jì)時(shí)器。

系統(tǒng)級(jí)計(jì)時(shí)器重置信號(hào)始終重置整個(gè)系統(tǒng),而專用看門(mén)狗計(jì)時(shí)器可以重置只是它所在的ARM內(nèi)核,或者整個(gè)系統(tǒng)。

安全違規(guī)鎖定

當(dāng)檢測(cè)到安全沖突時(shí),將重置并鎖定整個(gè)PS。

安全鎖后發(fā)生向下,PS僅通過(guò)斷言和取消斷言PS_POR_B復(fù)位而再次變?yōu)榛顒?dòng)狀態(tài)。

Zynq-7000 SoC設(shè)備提供以下安全啟動(dòng)功能:

  • 先進(jìn)的加密標(biāo)準(zhǔn)

    • 帶有256位密鑰的AES-CBC(FIPS197)

    • 加密密鑰存儲(chǔ)在芯片上,存儲(chǔ)在eFuse或電池供電的RAM(BBRAM)中

  • 帶密鑰的消息驗(yàn)證碼(HMAC,F(xiàn)IPS198-1)

    • SHA-256驗(yàn)證引擎(FIPS180-4)

  • RSA公鑰認(rèn)證(FIPS186-3)

    • 2048位公鑰

私有看門(mén)狗與系統(tǒng)看門(mén)狗

每個(gè)Cortex-A9處理器都有自己私有的32位定時(shí)器和32位看門(mén)狗定時(shí)器,這兩個(gè)處理器共享一個(gè)全局64位計(jì)數(shù)器,它們的頻率都為CPU頻率的1/2。

而在系統(tǒng)級(jí),有一個(gè)24位看門(mén)狗計(jì)時(shí)器和兩個(gè)16位三重計(jì)時(shí)器/計(jì)數(shù)器,系統(tǒng)級(jí)看門(mén)狗定時(shí)器的頻率為CPU頻率的1/4或1/6,下圖為系統(tǒng)內(nèi)部?jī)蓚€(gè)看門(mén)狗所處位置以及關(guān)系圖。

配置WDT程序

由于私有看門(mén)狗屬于PS端,所以在vivado環(huán)境中不需要對(duì)block塊進(jìn)行設(shè)置。在vivado下配置如下:

看門(mén)狗配置

int watchdogConfig(XScuWdt * WdtInstancePtr, u16 DeviceId,float number) { int Status;
 XScuWdt_Config *ConfigPtr;
 u32 result; //用來(lái)配置WDT的設(shè)備ID號(hào),ID號(hào)在#include "xparameters.h"中可以找到。 xil_printf("start the watchdog time``r successful! \r\n");
 ConfigPtr = XScuWdt_LookupConfig(DeviceId); //初始化WDT計(jì)數(shù)器 Status = XScuWdt_CfgInitialize(WdtInstancePtr, ConfigPtr,
 ConfigPtr->BaseAddr); if (Status != XST_SUCCESS) { return XST_FAILURE;
 } //通過(guò)設(shè)置看門(mén)狗控制寄存器的WD模式位,將看門(mén)狗定時(shí)器置于看門(mén)狗模式 XScuWdt_SetWdMode(WdtInstancePtr); //給WDT計(jì)數(shù)器裝初值,這里我對(duì)此函數(shù)進(jìn)行了封裝。已知CPU的時(shí)鐘頻率為666.6666Mhz, //即WDT的時(shí)鐘頻率為333.33Mhz,可得倒計(jì)時(shí)1s計(jì)數(shù)器需要配置的初值為333_333_333, //對(duì)計(jì)數(shù)器賦的初值可以直接寫(xiě)在number變量中(本文賦值為10s)。 result = (unsigned long)(333333333*number);
 XScuWdt_LoadWdt(WdtInstancePtr,result); //開(kāi)啟看門(mén)狗計(jì)數(shù)器。 XScuWdt_Start(WdtInstancePtr); return XST_SUCCESS;
}

開(kāi)始測(cè)試

給計(jì)數(shù)器賦初值為10s,在循環(huán)中啟動(dòng)喂狗程序,程序會(huì)在5S后跳出循環(huán),之后在10s后由于沒(méi)有喂狗功能,系統(tǒng)復(fù)位,代碼如下:

#include "xparameters.h" #include "xscuwdt.h" #include "xil_printf.h" #include  #include "stdio.h" #define WDT_DEVICE_ID    XPAR_SCUWDT_0_DEVICE_ID XScuWdt Watchdog; /* Cortex SCU Private WatchDog Timer Instance */ int main(void) { int Status; int Count = 0;
 Status = watchdogConfig(&Watchdog, WDT_DEVICE_ID,10); if (Status != XST_SUCCESS) {
 xil_printf("start the watchdog timer fail!\r\n"); return XST_FAILURE;
 } while (Count < 5) {
 sleep(1);
 Count++;
 XScuWdt_RestartWdt(Watchdog); printf("the second is %d \n",Count);
 }
 xil_printf("the watchdog timer will restart the system \r\n"); return XST_SUCCESS;
}

同樣給計(jì)數(shù)器賦初始值為10s,禁用喂狗程序,程序會(huì)直接在10s后進(jìn)行系統(tǒng)復(fù)位。

#include "xparameters.h" #include "xscuwdt.h" #include "xil_printf.h" #include  #include "stdio.h" #define WDT_DEVICE_ID    XPAR_SCUWDT_0_DEVICE_ID XScuWdt Watchdog; /* Cortex SCU Private WatchDog Timer Instance */ int main(void) { int Status; int Count = 0;
 Status = watchdogConfig(&Watchdog, WDT_DEVICE_ID,10); if (Status != XST_SUCCESS) {
 xil_printf("start the watchdog timer fail!\r\n"); return XST_FAILURE;
 } while (Count < 5) {
 sleep(1);
 Count++; printf("the second is %d \n",Count);
 }
 xil_printf("the watchdog timer will restart the system \r\n"); return XST_SUCCESS;
}

總結(jié)

在嵌入式系統(tǒng)中,為了使系統(tǒng)在工作異常情況下能自動(dòng)重啟,一般都需要引入看門(mén)狗程序,用來(lái)監(jiān)測(cè)程序以免“跑飛”。

看門(mén)狗其實(shí)就是一個(gè)可以在一定時(shí)間內(nèi)被復(fù)位的計(jì)數(shù)器,當(dāng)看門(mén)狗啟動(dòng)后,計(jì)數(shù)器開(kāi)始自動(dòng)計(jì)數(shù);

經(jīng)過(guò)一定時(shí)間,如果沒(méi)有被復(fù)位,計(jì)數(shù)器清零就會(huì)對(duì)CPU產(chǎn)生一個(gè)復(fù)位信號(hào)使系統(tǒng)重啟(俗稱“被狗咬”),這個(gè)是我們經(jīng)常需要用到的。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉