一种在不改变源码的情况下测试看门狗复位的方法

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指示灯的状态来判断系统是否重启:

审核编辑:汤梓红

标签:

上一篇:当前焦点!单片机学习笔记:电压监控型和看门狗型复位电路
下一篇:最后一页