一種在不改變源碼的情況下測試看門狗復位的方法

2023-05-31 10:28:09 來源:小飛哥玩嵌入式

什么是“看門狗”?

看門狗定時器(WDT,Watch Dog Timer)是單片機的一個組成部分,它實際上是一個計數器,一般給看門狗一個數字,程序開始運行后看門狗開始倒計數。如果程序運行正常,過一段時間CPU應發出指令讓看門狗復位,重新開始倒計數。如果看門狗減到0就認為程序沒有正常工作,強制整個系統復位。


(資料圖)

可以說有了“看門狗”的存在,你可以睡得更香了,代碼受到干擾或者“bug制造者”寫了一個錯誤的代碼,異常跑飛了,“看門狗”能夠使系統復位,畢竟重啟能解各種疑雜癥

看門狗如何測試?

對于“看門狗”測試,首先我們要搞清除看門狗的工作流程,本章節不介紹如何代碼實現。

只需要,看門狗初始化->定時喂狗,如果超時沒有喂狗,那么狗就要干活了,也就是把你的系統重新復位運行。

研發測試方法:

對于研發比較簡單,一般初始化完不喂狗,或者除了main while(1)之外的地方,我們再人為制造一個while(1)死循環,這樣就可以測試看門狗復位.

測試工程師測試方法

對于測試工程師來說,總不能拿著你研發自測的代碼去測試吧,雖然說單項測試沒問題,但是指不定正式固件會出什么幺蛾子~

所以測試工程師必要的話,必須是基于正式固件去測試

那么問題來了,看門狗是在異常情況下才會起作用,我們一般很難人為的去制造看門狗的異常,除非代碼確實有bug

好在“天無絕人之路”,jlink給了我們一種方法,一般我們用jlink多是調試仿真、下固件

安裝jlink的時候,其實還有很多工具可以用的

比如我們可以用jlink實現串口print功能

今天要介紹的是通過jlink命令工具來對MCU發送一些命令,這個工具叫J-Link Commander

先來連接到我們的目標芯片

接下來我們就可以對MCU發送一些命令:

Mem讀內存mem8讀8字節內存mem16讀16字節內存mem32讀32字節內存w1寫8字節內存w2寫16字節內存w4寫32字節內存h停止cpu運行的程序setbp設置斷點g跳到代碼段地址執行s單步執行(調試用)r復位q退出

接下里主要介紹系統停止命令,來測試看門狗是否有效,也就是使用h命令,使MCU停止運行,MCU停止運行之后,按照看門狗設計,沒法喂狗,應該是能夠復位重啟的

我們通過觀察LED指示燈的狀態來判斷系統是否重啟:

審核編輯:湯梓紅

標簽:

上一篇:當前焦點!單片機學習筆記:電壓監控型和看門狗型復位電路
下一篇:最后一頁