什么是“看门狗”?
看门狗定时器(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指示灯的状态来判断系统是否重启:
审核编辑:汤梓红
标签: