OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 16592|回复: 35

请教一个有趣的问题:在UCOSII中,还需要使用看门狗吗?如果要用,可怎么去喂这条狗?

[复制链接]

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
发表于 2014-3-20 11:18:56 | 显示全部楼层 |阅读模式
 大家知道,UCOSII中的各项执行任务都是个死循环,各项任务的切换都是靠自身的优先级来进行;

 而看门狗是在正常执行程序中,去喂它,使它不会溢出,而产生复位动作。但如果程序跑飞了,进入死循环,没有在一定的时间去喂它,

就会产生复位动作,使程序重新启动初始化,恢复正常工作。可在UCOSII中,各个任务本身就是个死循环,它们自己就有个专用震荡器,这还用

使用看门狗吗?如果要用,这条狗怎么去喂它,是在各项任务里,添一条喂狗指令?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2013-9-3
在线时间
0 小时
发表于 2014-5-8 11:48:35 | 显示全部楼层
有个想法不知道对不对,在系统初始化的时候初始化看门狗,如果在uc/os下的系统节拍中断中喂狗呢?不知道有没有作用啊?
程序跑飞的时候,系统时钟节拍,也就是之前的滴答定时器,还会执行吗?还是程序跑飞了,时钟节拍照样运行啊?
回复 支持 1 反对 0

使用道具 举报

39

主题

2026

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2020
金钱
2020
注册时间
2013-5-1
在线时间
87 小时
发表于 2014-3-20 13:17:06 | 显示全部楼层
默认是不开看门狗的,你确实需要检测程序正常运行的话,可以新建一个程序状态检测的进程
博观而约取,厚积而薄发。
回复 支持 反对

使用道具 举报

80

主题

931

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3348
金钱
3348
注册时间
2013-5-28
在线时间
468 小时
发表于 2014-3-20 15:30:09 | 显示全部楼层
回复【2楼】745021926:

默认是不开看门狗的,你确实需要检测程序正常运行的话,可以新建一个程序状态检测的进程

---------------------------------
回复【2楼】745021926:
---------------------------------
任务都飞了,进程有用?给喂狗专门开一个最高优先级任务才对
回复 支持 反对

使用道具 举报

80

主题

931

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3348
金钱
3348
注册时间
2013-5-28
在线时间
468 小时
发表于 2014-3-20 15:35:39 | 显示全部楼层
回复【2楼】745021926:
---------------------------------
理解错,我们应该是一样意思,不好意思
回复 支持 反对

使用道具 举报

21

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2013-4-5
在线时间
19 小时
发表于 2014-3-20 15:48:44 | 显示全部楼层
多任务下喂狗 没那么简单,哪怕是你最高优先级任务下 喂狗 也是有问题的。最高优先级的任务如果是在运行的, 狗就没用了,其他任务如果有任务跑飞了呢?
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2014-3-20 17:02:57 | 显示全部楼层
以上各位大师都说出个人观点,很有意思,看来在UCOSII里这条狗还是不还好伺候的,,在最高优先级下喂狗

最高优先级的任务如果是在运行的, 狗也是没用了...........

    那么在UDOSII的情况下,干脆不用这条狗?程序会跑飞吗?欢迎各位朋友继续讨论,越辩越明,对大家编程序都有好处。

    也希望原子老师谈谈你的观点,在UCOSII的程序里,是否需要设看门狗,不用它是否可行?
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2014-3-20 18:24:10 | 显示全部楼层
顶起来,都能看到。
回复 支持 反对

使用道具 举报

头像被屏蔽

38

主题

382

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2012-12-5
在线时间
19 小时
发表于 2014-3-20 23:31:36 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2014-3-21 07:00:30 | 显示全部楼层
回复【8楼】toddchen:

以前一直搞不懂窗口看门狗有啥用,不是已经有独立看门狗了,搞一个上下限的窗口是为了啥?
今天看了楼主的帖子,突然想,是不是窗口看门狗就是为了RTOS准备的呢?
但是我的看法是,跑窗口看门狗的任务优先级应该是,介于空闲、统计任务,和工作任务之间的。
让其它工作任务的优先级都高于它,那么在实际运行时,还能保证被在窗口中及时喂狗,则说明其它
优先级高于它的任务都被及时调用了。
以上是个人呆傻的看法而已。


==========================================================
 有一定的道理,我回去也好好想想,养窗口看门狗?
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2014-3-21 15:47:11 | 显示全部楼层
沉的这么快!
回复 支持 反对

使用道具 举报

头像被屏蔽

38

主题

382

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2012-12-5
在线时间
19 小时
发表于 2014-3-21 16:46:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2014-3-21 23:36:52 | 显示全部楼层
回复【11楼】toddchen:

现在的MCU越来越先进,窗口看门狗绝对不是为了跑裸机准备的。
系统越来越复杂,任务越来越多,对资源的争夺难以调和,所以UCOSIII也引进了时间片---保障单任务的执行。
那么所有任务的最小时间总和,和最大时间总和之间,就是窗口,不在这个范围的代表系统异常,需强制复位。

=========================================================================
 谢谢!又学到关于窗口看门狗的知识,

  也希望其他朋友都参入本题的讨论。
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2014-3-22 22:22:39 | 显示全部楼层
今天怎么没人参加讨论?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-22 23:06:32 | 显示全部楼层
ucosii的while死循环,和看门狗没什么交集...
看门狗该喂的时候还得喂,你可以专门设置一个最高优先级的任务,来喂狗,也可以用定时器中断,来喂狗,或是其他办法,都可以。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

头像被屏蔽

38

主题

382

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2012-12-5
在线时间
19 小时
发表于 2014-3-23 09:11:29 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-23 10:18:00 | 显示全部楼层
回复【15楼】toddchen:
---------------------------------
看门狗的中心思想是:CPU如果正常运行,必定会按顺序执行代码,那么喂狗就是个有规律的动作。只要CPU不乱跑,就肯定会定时去执行喂狗动作(当然得程序员设计好清狗的代码),一旦CPU跑飞了,那么喂狗就不能执行了,MCU接下来就应该复位了,从而保证程序跑飞时,不会出现误处理。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2014-3-23 16:19:00 | 显示全部楼层
回复【16楼】正点原子:

回复【15楼】toddchen:

看门狗的中心思想是:CPU如果正常运行,必定会按顺序执行代码,那么喂狗就是个有规律的动作。只要CPU不乱跑,就肯定会定时去执行喂狗动作(当然得程序员设计好清狗的代码),一旦CPU跑飞了,那么喂狗就不能执行了,MCU接下来就应该复位了,从而保证程序跑飞时,不会出现误处理。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------
   又学到关于看门狗的知识,谢谢!

  其他朋友继续参入讨论啊,【 14楼】toddchen 朋友 说的:   "个人认为原子所说的,还是独立看门狗,只是起到MCU还在跑的作用,和RTOS无关。"问题, 到底怎么去理解?
回复 支持 反对

使用道具 举报

头像被屏蔽

38

主题

382

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2012-12-5
在线时间
19 小时
发表于 2014-3-23 23:13:15 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2014-3-24 08:12:36 | 显示全部楼层
回复【18楼】toddchen:

窗口看门狗的窗口(最小最大超时表)分为四档:
最小:  113us,  最大:  7.28ms
最小:  227us,  最大:  14.56ms
最小:  455us,  最大:  29.12ms
最小:  910us,  最大:  58.25ms
根据极值条件,如果按却换频率3到5ms,支持十几个任务是没问题的,
具体窗口的上下限大小,需要实际测量每个任务的时间来调整。

-----------------------------------------------------------------------------------------------------------

 谢谢施教!

  其他朋友继续参入讨论啊。
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2014-3-26 08:11:52 | 显示全部楼层
没人再来讨论?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-8 13:44:43 | 显示全部楼层
回复【21楼】sjEE:
---------------------------------
有作用
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

206

帖子

1

精华

高级会员

Rank: 4

积分
613
金钱
613
注册时间
2014-10-26
在线时间
32 小时
发表于 2015-10-28 11:44:16 | 显示全部楼层
回复【22楼】正点原子:
---------------------------------
我看完上面的帖子还是没明白看门狗在UCOS中该怎么用,
在实际的项目中,稳定性是最重要的(要不卖出去天天叫你修),所以看门狗就必不可少了,
说到这,我不得不提问一下关于LWIP的 数据传输中,中断是不能开启(打断数据传输会导致传输失败),假设传输时间超过看门狗设定最大值了,
那岂不是只要有传输就不断复位了?

希望原子哥能详细讲解下看门狗在UCOS,LWIP及一些实际项目中的用法。
学习!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-11-1 23:56:17 | 显示全部楼层
回复【23楼】q27488:
---------------------------------
我也不太熟.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

206

帖子

1

精华

高级会员

Rank: 4

积分
613
金钱
613
注册时间
2014-10-26
在线时间
32 小时
发表于 2015-11-2 17:11:34 | 显示全部楼层
回复【24楼】正点原子:
---------------------------------
醉了
学习!
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2015-11-13
在线时间
0 小时
发表于 2015-11-13 17:00:48 | 显示全部楼层
假如有3个任务,可以创建一个任务为看门狗的任务(次任务优先级高于其他3个),初始化一个事件, 设置看门狗3秒复位。
3个任务会发送事件。
如果有一个任务没有发送事件,那么复位。
        status = rt_event_recv(&event_watchdog, SET_WD1 |SET_WD2 | SET_WD3 , RT_EVENT_FLAG_AND | RT_EVENT_FLAG_CLEAR, 300, &event);
if(status == -RT_ETIMEOUT)
{
rt_kprintf("watchdog timeout!\n");

}
        else
        {
              //rt_kprintf("receve wdog event is:%x \n",event);
              watchdog_clear();//喂狗
        }

这样做不可以吗?
ARM嵌入式~
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2015-11-13
在线时间
0 小时
发表于 2015-11-13 17:49:58 | 显示全部楼层
顶一下         up++
ARM嵌入式~
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2015-11-13
在线时间
0 小时
发表于 2015-11-13 17:50:50 | 显示全部楼层
回复【23楼】q27488:
---------------------------------
看下我的那个方法呢,,,觉得可用性怎样?
ARM嵌入式~
回复 支持 反对

使用道具 举报

20

主题

143

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-8-28
在线时间
108 小时
发表于 2015-11-26 17:54:24 | 显示全部楼层
回复【28楼】那盏灯火:
---------------------------------
不错的想法,
实质上,是不是在计算所有任务执行一遍的时间?
所有任务都正确执行一遍了,就喂狗?
回复 支持 反对

使用道具 举报

20

主题

143

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-8-28
在线时间
108 小时
发表于 2016-3-24 15:18:32 | 显示全部楼层
正点原子 发表于 2014-3-22 23:06
ucosii的while死循环,和看门狗没什么交集...
看门狗该喂的时候还得喂,你可以专门设置一个最高优先级的任 ...

定时器中断还可以用来喂狗的吗?如果有一个死循环了,CPU的定时器中断还是会进入的,那喂狗不是没起到作用吗?
请教一下原子:裸机程序中有很多ms级延时函数,正常情况下运行一遍的时间几百us,但是检测到系统异常时,报警中的延时有几百ms的延时,那么该怎么喂狗呢?
回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2016-7-28
在线时间
25 小时
发表于 2016-7-31 09:21:00 | 显示全部楼层
正点原子 发表于 2014-3-22 23:06
ucosii的while死循环,和看门狗没什么交集...
看门狗该喂的时候还得喂,你可以专门设置一个最高优先级的任 ...

//将这些优先级分配给了UCOSIII的5个系统内部任务
//优先级0:中断服务服务管理任务 OS_IntQTask()
//优先级1:时钟节拍任务 OS_TickTask()
//优先级2:定时任务 OS_TmrTask()
//优先级OS_CFG_PRIO_MAX-2:统计任务 OS_StatTask()
//优先级OS_CFG_PRIO_MAX-1:空闲任务 OS_IdleTask()

那么看门狗的优先级设定为3吗?还是设定为0?
回复 支持 反对

使用道具 举报

751764994 该用户已被删除
发表于 2017-1-21 13:26:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

56

主题

289

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2012-11-16
在线时间
65 小时
发表于 2017-3-1 21:35:34 | 显示全部楼层
关注这个问题
回复 支持 反对

使用道具 举报

18

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2013-6-27
在线时间
82 小时
发表于 2017-7-24 14:16:13 | 显示全部楼层
关注这个问题!!!
回复 支持 反对

使用道具 举报

7

主题

105

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1028
金钱
1028
注册时间
2016-1-28
在线时间
135 小时
发表于 2019-1-23 14:58:38 | 显示全部楼层
我试过了,普通的任务级就可以了。
回复 支持 反对

使用道具 举报

3

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2019-5-8
在线时间
27 小时
发表于 2019-6-1 10:14:18 | 显示全部楼层
问一下  如果ucos ii  带独立看门狗   进入停止STOP模式,进入STOP,模式后,狗要怎么处理?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 11:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表