成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

從0學ARM Cortex-A9 看門狗入門

商務辦公
看門狗的簡稱是WDT(Watch Dog Timer),exynos4412scp中的看門狗定時器(WDT)是一種定時裝置。

 [[374628]]

本文轉載自微信公眾號「一口Linux」,可以通過以下二維碼關注。轉載本文請聯系一口Linux公眾號。

一、概念

看門狗的簡稱是WDT(Watch Dog Timer),exynos4412scp中的看門狗定時器(WDT)是一種定時裝置。

1. 工作原理

由(一般需要客戶編寫)軟件讀寫定時器相關的寄存器,打開看門狗,并設定計數時間(以秒或分鐘計算),定時器計數計滿,由軟件清零,以表明系統狀態正常,這時,定時器計數重新開始,反復,否則,看門狗認為系統異常或有其他特定事件發生,觸發系統復位信號,或提供中斷,系統正常后重復定時器計數。

這樣只要軟件正常運行,就不會出現復位或觸發中斷。當軟件死機或運行出錯時,由看門狗定時器對系統進行復位或觸發中斷,從而保證系統的正常運行。

看門狗的定時時間可以由用戶設定,這樣可以根據需要在指定的時間內復位系統。

2. 作用

看門狗的作用是微處理器收到干擾進入錯誤狀態后,使系統在一定時間間隔內復位。因此看門狗是保證系統長期、可靠和穩定運行的有效措施。目前大部分的嵌入式芯片內部都集成了看門狗定時器來提高系統運行的可靠性。

4412處理器的看門狗是當系統由于噪音和系統錯誤而出現故障后,用于處理器的復位操作,也可以作為一個通用的16位定時器來請求中斷操作。看門狗定時器產生128個PCLK周期的復位信號。主要特性有如下兩個。

1)通用的中斷方式的16位定時器。

2)當計數器減到0(發生溢出)時,產生128個PCLK周期的復位信號。

3. Watchdog Timer Block Diagram

Watchdog Timer Block Diagram

看門狗模塊包括一個預比例因子放大器,一個四分頻的分頻器,一個16位計數器。

看門狗的時鐘信號源來自PCLK,為了得到寬范圍的看門狗信號,PCLK先被預分頻,然后再進過分頻器分頻。預分頻比例因子和分頻器的分頻值,都可以由看門狗控制寄存器(WTCON)決定,預分頻比例因子的范圍是0~255,分頻器的分頻比可以是16、32、64或128。看門狗定時器時鐘周期的計算如下:

clock分頻公式

式中Prescaler value 為預分頻比例放大器的值;Divison_factor是四分頻的分頻比,可以是16、32、64或128。

4. 工作流程

一旦看門狗定時器被允許,看門狗定時器數據寄存器(WTDAT)的值就不能被自動地裝在到看門狗定時器(WTCNT)中。因此,看門狗啟動前要將一個初始值寫入看門狗計數器(WTCNT)中。

【注意】 當4412用嵌入式ICE調試時,看門狗定時器的復位功能就不被啟動,看門狗定時器能從CPU內核信號判斷出當前CPU是否處于調試狀態。如果看門狗定時器確定當前模式是調試模式,盡管看門狗產生溢出信號,但是仍然不會產生復位信號。

每個時鐘周期都會將看門狗定時計數器WTCNT里的值減1,當計數器WTCNT里的值變為0時開始執行超時操作。

首先,判斷看門狗控制寄存器里bit2 WTCON[2]設置情況, 如果為1則產生中斷信號,引起系統中斷, 如果為0不做任何操作,進入復位信號產生器,如果WTCON[0]位為1,則產生控制器復位信號,否則不做任何操作。每次超時操作之后,看門狗WTCON會自動加載看門狗數據寄存器WTDAT里的用戶設置值,繼續執行遞減操作。

二、寄存器設置

1)看門狗定時器控制寄存器(WTCON)

WTCON

WTCON寄存器的內容包括:

  1. WDT timer:[5] 用戶是否啟動看門狗定時器、
  2. Clock select:[4:3] 4個分頻比的選擇、
  3. Interrupt generation:[2] 是否允許中斷產生、
  4. Reset enable/disable: [0] 是否允許復位操作等。

1) 使用起看門狗功能 開啟看門狗復位功能、允許中斷、16分頻、開啟看門狗定時器、Prescaler value設置為249

  1. WDT.WTCON = (249 << 8) | (1 << 5) | (1 << 2)|(1 << 0); 

2)當普通定時器使用 如果用戶想把看門狗定時當做一般定時器使用,應該中斷使能,禁止看門狗定時器復位。

  1. WDT.WTCON = (249 << 8) | (1 << 5) | (1 << 2); 

2) 看門狗定時器數據寄存器(WTDAT)

WTDAT用于指定超時時間,在看門狗把復位功能禁止并打開中斷使能后,此時看門狗定時器就是一個普通的定時器,使用方法和普通定時器一樣。

當使用復位功能后,由于WTCNT的值減到0時,系統就會復位,所以WTDAT的值裝不進看門狗計數寄存器(WTCNT)中。復位后初始值為0x8000。

3) 看門狗計數寄存器(WTCNT) 喂狗用

WTCNT包含看門狗定時器工作的時候,計數器的當前計數值。WTCNT描述如下:

WTCNT

4) WTCLRINT

寫入任意值清中斷。

WTCLRINT

三、看門狗定時器的程序編寫

1、看門狗軟件程序設計流程

因為看門狗是對系統地復位或中斷的操作,所以不需要外圍的硬件電路。要實現看門狗的功能,只需要對看門狗的寄存器組進行操作,即對看門狗的控制寄存器(WTCON)、看門狗數據寄存器(WTDAT)、看門狗計數寄存器(WTCNT)的操作。

「其一般流程如下:」

設置看門狗中斷操作,包括全局中斷和看門狗中斷使能及看門狗中斷向量的定義,如果只是進行復位操作,這一步不用設置。

對看門狗控制寄存器(WTCON)的設置,包括設置預分頻比例因子、分頻器的分頻值,中斷使能和復位使能等。

對看門狗數據寄存器(WTDAT)和看門狗計數寄存器(WTCNT)的設置。

啟動看門狗定時器。

  1. void do_irq(void) 
  2.  static int a = 1; 
  3.  int irq_num; 
  4.  irq_num = CPU0.ICCIAR&0x3ff;  //獲取中斷號 
  5.  switch(irq_num) 
  6.  { case 75: 
  7.    printf("in the WDT interrupt!\n"); 
  8.             //WDT.WTCNT = 25000;//喂狗 
  9.    WDT.WTCLRINT = 0; 
  10.    ICDICPR.ICDICPR2 = ICDICPR.ICDICPR2 | (0x1 << 11); //清GIC中斷標志位 
  11.    break; 
  12.  } 
  13.  CPU0.ICCEOIR = CPU0.ICCEOIR&(~(0x3ff))|irq_num; //清cpu中斷標志位 
  14. void wdt_init(void) 
  15.  WDT.WTCON = (249 << 8) | (1 << 5) | (1 << 2)|(1 << 0);//復位使能 
  16.     //WDT.WTCON = (249 << 8) | (1 << 5) | (1 << 2);       //關閉復位使能 
  17.  WDT.WTDAT = 25000; 
  18.  ICDDCR = 1;  //使能分配器 
  19.  ICDISER.ICDISER2 = ICDISER.ICDISER2 | (0x1 << 11); //使能相應中斷到分配器 
  20.  ICDIPTR.ICDIPTR18 = ICDIPTR.ICDIPTR18 & (~(0xff << 24))|(0x1 << 24); //選擇CPU接口 
  21.  CPU0.ICCPMR = 255; //中斷屏蔽優先級 
  22.  CPU0.ICCICR = 1;   //使能中斷到CPU 
  23. int main (void) 
  24.  wdt_init(); 
  25.  printf("hello reset!\n"); 
  26.  while(1) 
  27.  { 
  28.   WDT.WTCNT = 25000;//喂狗,如果一旦停止喂狗,系統就reset 
  29.   mydelay_ms(100); 
  30.  } 
  31.    return 0; 

上述是正確運行的代碼,將WDT.WTCNT = 25000; 注釋掉,就會停止喂狗,超時后系統就會reset。

 本文轉載自微信公眾號「一口Linux」,可以通過以下二維碼關注。轉載本文請聯系一口Linux公眾號。

 

責任編輯:武曉燕 來源: 一口Linux
相關推薦

2021-01-16 11:40:28

ARM嵌入式開發ADC應用

2021-01-26 06:15:42

Cortex-A9 R嵌入式系統啟動代碼

2021-01-06 05:42:42

Cortex-A9 R嵌入式系統 RTC

2020-12-22 11:54:42

C語言Cortex-A9LED匯編

2021-01-19 19:32:01

Cortex-A9 R嵌入式系統i2c 外設

2020-12-30 15:17:25

Cortex-A9UARTprintf函數

2023-03-17 16:42:45

應用開發Ability

2021-06-28 10:51:55

Redisson分布式鎖Watchdog

2023-09-19 15:14:59

鴻蒙Watchdog

2020-10-23 13:02:02

勒索軟件看門狗網絡犯罪

2023-11-29 07:40:12

分布式

2019-05-05 08:54:47

黑客網絡攻擊5G

2021-01-13 11:51:25

ARM位置無關碼

2020-12-11 09:05:04

ARMMDKGNU

2020-12-10 08:13:15

ARM架構 嵌入式

2025-01-06 07:00:00

看門狗RedissonRedis

2021-05-25 11:50:32

ARMuboot網絡協議棧

2021-07-02 08:51:09

Redisson分布式鎖公平鎖

2022-10-31 07:33:05

Javafor循環

2022-10-30 10:14:43

Java循環語句
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品国产精品国产专区不卡 | 欧美精品综合在线 | 国产一区二区三区免费视频 | 精品永久 | 综合精品| 亚洲国产一区二区三区在线观看 | 日日日日日日bbbbb视频 | 成人免费视频播放 | 91久久精品国产91久久 | 国产精品久久777777 | 日韩网站在线 | 欧美一区二区视频 | 日韩av网址在线观看 | 成人做爰www免费看视频网站 | 丝袜 亚洲 欧美 日韩 综合 | 日韩精品在线观看免费 | 视频一区二区三区四区五区 | 国产精品久久久久无码av | 天天干com| 色天堂视频 | www.色53色.com| 免费不卡av| 精品96久久久久久中文字幕无 | 久久免费小视频 | 国产免费拔擦拔擦8x高清 | 九色 在线 | 国产欧美一区二区三区在线看蜜臀 | 国产91一区二区三区 | 国产精品久久久久久亚洲调教 | 午夜色播 | 免费永久av | 国产视频一区二区 | 国产精品一区二区欧美黑人喷潮水 | 美女久久| 欧美a在线| 欧美日韩一区不卡 | 狠狠操电影| 日本午夜免费福利视频 | 免费看一区二区三区 | 欧美一级视频免费看 | 亚洲精品一区二三区不卡 |