最近想测试看门狗的效果,想问问,怎么样子可以让程序跑飞?

2019-03-23 18:33发布

最近想测试看门狗的效果,想问问,怎么样子可以让程序跑飞? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
lr2131
1楼-- · 2019-03-24 04:38
/
原帖由 jensenhero 于 2013-1-23 11:20 发表
最近想测试看门狗的效果,想问问,怎么样子可以让程序跑飞?
先要注意,喂狗动作一定不能在中断或异常服务程序中进行,最好在是main主线程中一处(无操作系统),或一个低优先级的任务中(带操作系统)。
否者看门狗效果基本无效。

方法如下:
1.代码模拟方式:在某个函数内部执行while(1);不喂狗,可以认为程序跑飞,看是否一会就硬复位了。
2.野指针方式:初始化指针变量,给一个不能访问的地址,如存储器空间中没有实际外设或存储器的地址,需要查找手册,比较容易找到。然后读写这个地址。一般会出现数据总线错误而进入异常,程序
跑飞。
3.指针越界方式:野指针的变化版,但更容易理解和出现。在编写代码时,采用数组。读写数组数据时,有意让数组越界,也会导致同样的错误。这个很多童鞋都遇到过的,强力推荐

另外,不保证法2和法3的实际效果和理论效果一致。就看导致相应的异常服务程序是否会导致复位,一般不随便改写异常服务代码,它们都是默认做死循环的。跑到这里,程序就可以说是跑飞了。

程序跑飞,还有很多其他的原因和现象,无法全部列举和测试。但导致的结果都是一样的,所以解决的方法也基本都一样。
Li_Lei
2楼-- · 2019-03-24 09:47
降低电源电压
ltbytyn
3楼-- · 2019-03-24 14:02
 精彩回答 2  元偷偷看……
jishuaihu
4楼-- · 2019-03-24 19:01
不一定非得跑飞吧?不喂狗就可以试了吧
jamesthe
5楼-- · 2019-03-24 21:45
用外部中断,中断处理函数是个while(1);
iverson456789
6楼-- · 2019-03-25 02:50
 精彩回答 2  元偷偷看……

一周热门 更多>