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...