筆記 hi3518e liteOS 看門狗

2021-10-22 07:01:52 字數 1933 閱讀 3881

watchdog 的執行基於 1 個 32bit 減法計數器,計數初值由暫存器 wdg_load 載入。 在 watchdog 時鐘使能情況下,計數值在每個計數時鐘的上公升沿減 1。當計數值遞減到 0,watchdog 將產生乙個中斷。然後在下乙個計數時鐘上公升沿,計數器又從暫存器 wdg_load 中重新載入計數初值,開始遞減計數。

如果計數器的計數值第二次計數遞減到 0 時,cpu 還沒有清除 watchdog 中斷,則 watchdog 將發出復位訊號 wdg_rstn,計數器停止計數。

所以 watchdog 的計數時間最大值為 1431s。

#ifndef __bbt_watchdog_h

#define __bbt_watchdog_h

#include

#include

#include

void

hi_watchdog_init

(void);

void

hi_feed_dog

(void);

inthi_dog_set_heartbeat

(int t)

;#endif

#define dog_unlock_data		0x1acce551

#define dog_base 0x20040000

#define wdg_load (dog_base + 0x0000)

#define wdg_value (dog_base + 0x0004)

#define wdg_control (dog_base + 0x0008)

#define wdg_intclr (dog_base + 0x000c)

#define wdg_ris (dog_base + 0x0010)

#define wdg_mis (dog_base + 0x0014)

#define wdg_lock (dog_base + 0x0c00)

#define sc_ctrl (0x20050000 + 0x0)

#define dog_clk (3*1000*1000)

//watchdog 計數時鐘為 3mhz

static

inline

void

hi_dog_set_timeout

(uint32_t nr)

;static

inline

void

hi_dog_feed

(void);

inthi_dog_set_heartbeat

(int t)

else

if( t>cnt )

cur_margin = t;

hi_dog_set_timeout

(t);

hi_dog_feed()

;return ret;

}static

void

hi_dog_start

(void

)static

inline

void

hi_dog_stop

(void

)#if 0

static

void

watchdog_deamon

(void

)//守護執行緒

}static

void

hi_watchdog_run

(void

)#endif

void

hi_watchdog_init

(void

)void

hi_feed_dog

(void

)

HI3518linux 搭建開發環境

hi3518linux的開發環境搭建在海思的官方文件裡說的也比較詳細,就是各個部分的說明比較分散。由此在這裡做乙個記錄 筆記。一 編譯u boot kernel rootfs 1.1 搭建編譯環境 安裝交叉編譯工具鏈 1.1.1 解壓海思demo壓縮檔案 在linux環境下 tar zxf hi35...

hi3518e開發環境搭建

4.3.更新mtd utils 5.編譯 5.2.清除 sudo apt update sudo apt upgrade y sudo apt install y bzip2 lib32z1 dev lib32stdc 6 lrzsz make u boot tools wget uuid dev ...

關於hi3518啟動後做了什麼

有一段時間沒有碰開發板,忘記了之前自己設定啟動的地方。一開機就要延時個5秒,然後掛載到虛擬機器上。現在要重新修改一下掛載的位址,但是忘記了在 找了 有印象修改的目錄都在 etc init.d 裡面 進去目錄底下只有這幾個檔案s00devss01udevs80networks90hibernaterc...