一直有个问题,多核情况下,看门狗如何处理?
比如一个核心死了(如死循环了),其它的核心没死,如何处理呢?
求大神科普。
离线
一般都是主程序喂狗,主程序死掉没法喂狗系统就复位,你说的一个核心死循环可能会出现这个核的cpu占用率很高。
离线
一般都是主程序喂狗,主程序死掉没法喂狗系统就复位,你说的一个核心死循环可能会出现这个核的cpu占用率很高。
首先系统本身就是多任务的,某个核心CPU占用100%,但可能另一个核心还能正常喂狗。
如果有两个程序,都是主程序,他们运行在两个不同的核心上,A死了没法喂狗,但B还能喂呢?
还是说系统的主程序,无论多少他,他都运行在第0号核上?
离线
四核A33的主线Linux不就是有看门狗么 echo 1 > /dev/watchdog 就开启看门狗, 几秒钟不喂狗就挂了自己重启。
离线
四核A33的主线Linux不就是有看门狗么 echo 1 > /dev/watchdog 就开启看门狗, 几秒钟不喂狗就挂了自己重启。
哪多核心下,如果有一个核心一直在喂狗,不是这个喂狗就没用了?
单核好理解,像多核的电脑,一个核消耗100%,其它核还能运行也是可以的。
最近编辑记录 staunchheart (2020-05-13 14:39:48)
离线
感觉Linux的处理应该是只能第一个核心喂狗, 大家都喂就乱套了。
离线
这个问题就和你问多任务系统一样,如果只有一个任务喂狗,其他的任务不喂狗,如果其他的任务挂了,但是喂狗任务一起喂狗,那也不能复位,多核也是这个德行,不管是单核还是多核,说到底,跑的都是程序,就是多任务的工作,
离线
程序间可以相互检测有没死掉,用狗是为了解决所有程序都死掉的问题。
离线
四核A33的主线Linux不就是有看门狗么 echo 1 > /dev/watchdog 就开启看门狗, 几秒钟不喂狗就挂了自己重启。
原来是这么开看门狗的噢
离线
四核A33的主线Linux不就是有看门狗么 echo 1 > /dev/watchdog 就开启看门狗, 几秒钟不喂狗就挂了自己重启。
不修改内核的情况下,怎么设置watchdog 的时间呢?
离线
一个小小的STM32F都有两个看门狗,多核的更不用说了,也有多个
STM32F4有IWDG和WWDG 两个
离线