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

控制/MCU

1877人已加入

描述

 

什么是“看门狗”?

看门狗定时器(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指示灯的状态来判断系统是否重启:

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分