打印

关于单片机程序自诊断和自恢复

[复制链接]
1775|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hf2562|  楼主 | 2008-3-13 15:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
zzw111| | 2008-3-13 20:09 | 只看该作者

用看门狗吧

其它的方法就不知道了,继续关注。

使用特权

评论回复
板凳
hf2562|  楼主 | 2008-3-14 08:44 | 只看该作者

不能用狗吧

用狗数据会丢失吧?

使用特权

评论回复
地板
农民讲习所| | 2008-3-14 09:23 | 只看该作者

制定一个完善的通信协议

使用特权

评论回复
5
hf2562|  楼主 | 2008-3-14 10:10 | 只看该作者

恩 现在就是在制定协议呢

  协议的制定最终是要解决问题,假如通过协议知道问题是通讯服务程序不被执行,但其他功能模块是好的,下面的解决思路是不复位单片机,而使通讯服务程序重新运行。该如何处理?是不是重新配置串口中断,并调用服务程序?

使用特权

评论回复
6
wxj1952| | 2008-3-14 11:22 | 只看该作者

看操作系统教程

世界上这类问题研究了20多年了,怎样使一个程序可靠运行?OS那么大程序也会乱,它乱了之后是怎样处理/恢复的?肯定不是靠自动重新启动。
   
有一种基本策略是软件按功能分层设计,并且
1、各层之间模块不允许互相调用;(DOS时代的设计)
2、只允许自上向下单向(申请)调用;

问:为什么2、比1、设计策略可靠?

3、下层对上层只留有服务接口,它对上层来说基本是封闭的。上层程序崩溃对下层没有影响,也就是你说的“其他模块是好的”(它们没有被调用,所以是好的。)如果分层设计,那么这一层都是好的。
4、......

这样,通信程序所在的那一层,工作不正常了怎么办?基本不用程序员操心。系统(内核)工作还正常,系统心跳还在!每次系统脉搏都会使系统进入中断,中断程序是系统刷新函数,任何崩溃的当前子层在中断返回之后都将恢复正常。除非你驱动程序不完善/硬件出了问题。
5、要中断程序返回到用户程序的希望位置,是很简单的手段。这虽然是违规了——用户直接干预系统工作,可能会造成其他不稳定因素,但是凭你对系统工作的了解清晰度应该有这个把握。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

56

帖子

0

粉丝