基于RT-Thread的系统看守组件—syswatch 上线啦!

发布于 2020-01-19 11:59:26
基于RT-Thread的系统看守组件—syswatch 上线啦!
简介
系统看守 是一个用于保障系统长期正常运行的组件,基于RT-Thread实时操作系统打造,软件包详细说明见
    syswatch
为何使用
看门狗是保障程序正常运行的设备,裸奔程序在大循环中喂狗,这无异议:但当看门狗遇到实时操作系统时,在哪儿喂狗?变成了一个比较尴尬的问题。在最低优先级线程中喂狗,存在事务繁忙时,喂狗不及时,会有复位的风险。在高优先级线程喂狗,存在低优先级线程发生异常死掉无法发现和恢复的问题。如何管理看门狗?如何保障整个系统正常运行?成为了令人头疼的问题。系统看守正是基于解决此类问题而设计的功能组件。RT-Thread studio 下快速安装使用 syswatch 组件:
进入 软件包中心 ,点 系统
1.jpg
系统软件包页面 的下面,点击 syswatch, 完成组件添加:2.jpg
RT-Thread settings 页,双击新加入的组件 syswatch :3.jpg3.jpg
属性 页,配置组件参数:4.jpg4.jpg
保存工程, 完成组件安装!


查看更多

关注者
0
被浏览
571
1 个回答
armink
armink 2020-01-20
看着不错,以后一定试试
jerry2cool
jerry2cool 2020-06-23
好东西,感谢分享。。。。
jerry2cool
jerry2cool 2020-06-24
大佬,请教一下,SYSWATCH判断异常阻塞是根据什么判断的呀?长时间等待信号量的进程没问题吧?
Jone
Jone 2020-06-24
os喂狗的问题确实如此,大佬科普下这个软件包的原理呗
JQRR_7669
JQRR_7669 认证专家 2020-06-25
大佬,请教一下,SYSWATCH判断异常阻塞是根据什么判断的呀?长时间等待信号量的进程没问题吧?

异常阻塞是指不主动释放CPU的死循环,最常见的就是断言失败。异常阻塞的特征就是长期占死CPU。在多任务操作系统中异常阻塞会导致低优先级任务得不到执行。等待信号量会主动释放CPU,所以不会有问题。像rt_thread_delay/rt_mutex_take/tr_sem_take等函数都会主动释放CPU。
JQRR_7669
JQRR_7669 认证专家 2020-06-25
os喂狗的问题确实如此,大佬科普下这个软件包的原理呗

系统看守判断系统是否正常运行的依据是“空闲线程”能否得到执行。

系统看守组件的设计关键点有2点:

  1. 确保组件正常运行。
  2. 检查系统是否正常。

确保组件运行正常采用的方法有2点:

  1. 管理看门狗,确保组件不运行时系统可恢复。
  2. 组件线程优先级最高,确保组件运行不受其它线程影响。

判断系统正常运行采用的方法:

  1. 使用线程调度钩子,监视可得到执行的最低优先级线程。
  2. 如果最低优先级线程是空闲线程,那么系统正常,系统异常计时清零。
  3. 如果系统异常计时超时了,那么系统发生异常了,发生异常的线程就是可调度到的最低优先线程,采取措施排除异常。
pjdu
pjdu 2020-06-25
好东西,下次试试

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友