MTK 驅動開發(48) ARM 看門狗機制

2021-08-20 03:08:33 字數 1530 閱讀 4061

arm 看門狗機制 [包括mtk] sys_last_kmsg裡的hw_status和fiq step的含義

閱讀數:559

[description]

sys_last_kmsg這支檔案是記錄上次重啟前最後的kernel console log,不過除了kernel console log還有hw_status和fiq step兩個值。

hw_status:

這個值的意義是:

表示重啟的原因。

是在preloader階段從看門狗狀態暫存器轉換賦值給hw_status,然後傳到lk,再傳到kernel的。

值定義所在檔案:

值定義如下(注意不同平台可能有不同的定義,以**為準!):

/* reboot reason */

#define 

re_boot_reason_unknow (0x00)   

//正常開機是這個值,因為不是重啟,所以看門狗狀態為0

#define

re_boot_by_wdt_hw (0x01)              

//硬體reboot

#define 

re_boot_by_wdt_sw (0x02)               

//軟體復位,比如adb reboot或選單選擇重啟

#define 

re_boot_with_intterupt (0x04)

#define 

re_boot_by_spm_thermal (0x08) 

//thermal復位,比如溫度過高

#define

re_boot_by_spm (0x10)                 

//spm復位,spm即軟體管理系統

#define 

re_boot_by_thermal_direct (0x20)

#define 

re_boot_by_debug (0x40)

#define

re_boot_by_security (0x80)

以上的巨集可以相或,比如hw_status = 5 = re_boot_with_intterupt|re_boot_by_wdt_hw

常見的定義

fiq step:

這個值的意義是:表示是否有跑到panic異常相關的函式,已經大致在哪些panic異常函式。設計fiq step目的是當系統發生異常時,不能保證panic相關的函式也能正常執行,所以每執行一些函式後,就更新fiq step,表示已跑到這裡了。

具體請在**裡搜尋aee_rr_rec_fiq_step()函式被呼叫的位置就清楚了。

值定義所在檔案:

值定義如下(注意不同平台可能有不同的定義,以**為準!):

typedef enum aee_fiq_step_num;

這樣就可以通過該值大致知道是否有跑到哪個panic相關函式裡了。

除了在sys_last_kmsg可以找到這2個值外,還有以下檔案可以找到:

sys_version_info

zaee_log

開發學習記錄之看門狗驅動

在linux中學看門狗驅動,說實話就是坑爹的,因為一般上看門狗只有乙個,只能留給最需要的哪乙個,很少有裝置用到,不過既然提到了,那就剛好看看,在作業系統中時怎麼用寫看門狗的,有點坑爹的。就註冊乙個中斷,不想寫了,坑爹.想了想還是寫一點,可以複習一下 include include include i...

十一 看門狗驅動設計

1 產生復位訊號 當系統由於受到雜訊或干擾而出現了宕機,看門狗可以讓系統復位,重新開始工作。2 普通定時器 產生週期性的中斷,16bits的定時器 思考 1 如果看門狗的復位時間設定10s,第一分頻值 第二次分頻值 計數值應該如何設定?1 第一次分頻值 255 1 256 781250 2 第二次分...

RKPX30看門狗驅動除錯

目錄 rkpx30看門狗驅動除錯 1 裝置樹修改 2 配置檔案修改 3 驅動 修改 4 測試 裝置樹檔案px30 evb ddr3 lvds v10.dts中使能watchdog,預設為disabled。wdt 修改預設配置檔案arch arm64 configs rockchip defconfi...