原创 软件“看门狗”对程序“跑飞”的处理

2008-8-19 11:42 4511 3 3 分类: 软件与OS

当跑飞的程序进入非程序区〔如EPROM未使用区)或表格区时,采用指令冗余技术已经无法将程序纳入正轨。这时可以设定软件陷阱,拦截跑飞程序,将其迅速引向抗干扰中心,那里有一段专门对程序运行出错进行处理的程序。如果把其入口标号称为ERROR,
则软件陷阱可以由以下几条指令组成:
              NOP
              NOP
              LJMP ERROR


软件陷阱常常用在未使用的中断向量区、未使用的ROM区中以及表格区的后面。因为程序跑飞有可能在中断程序中发生,这时中断逻辑己经置位,这样就不再响应同级或低级的中断,所以一定要释放中断逻辑,即清除中断标志位,抗干扰中心的可由以下程序段实现:


ERROR:
              CLR EA
              MOV DPTR,#ERR1
              PUSH DPL
              PUSH DPH
              RETI


ERR1:
              CLR A
              PUSH ACC
              PUSH ACC
              RETI
              END
      只要在未使用的ROM区域中每隔一定单元就设置一个软件陷阱,就能够将“跑飞,到未使用ROM区的PC引导到抗千扰中心进行处理,但是当程序“跑飞”到一个临时构成的死循环中时,指令冗余和软件陷阱都会失去作用,这时就要用“硬件看门狗”技术来使程序恢复正常了。

文章评论0条评论)

登录后参与讨论
相关推荐阅读
xnwxq_987443221 2009-08-17 17:57
Zigbee星型网络组网程序段
最近一直在做Zigbee的星型网络的组网试验,由于时间的原因,现在只是在最高的应用层上来编写程序。即协议栈的程序是2430的开发商(无限龙)编写的,我只是调用相应的函数来完成组网的,星型网络组网部分的...
xnwxq_987443221 2009-08-17 17:14
VB6的标题栏使用上真彩色图标
模块 ModIcon.Bas 代码: Option Explicit Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long...
xnwxq_987443221 2009-08-17 16:58
AppendToLog一个API方式存取日志文件的模块
'**************************************' 模块名称: AppendToLog' 功能描述:一个很不错的日志文件写入模块,不同于'     open/print/...
xnwxq_987443221 2009-08-17 16:57
(VB自定义函数)去除字符串中的空格
'去除字符串中的空格(方法一)Public Function DelBlank(SearchString As String)   DelBlank = Replace(SearchString, C...
xnwxq_987443221 2009-08-17 16:56
(VB自定义函数)对任意输入的汉字,可以得到它的拼音的第一个字母
调用方法:Command1.Caption = getHzPy("你")'//函数入口为汉字串,返回值为该汉字的第一个字母Public Function getHzPy(hzStr As String...
xnwxq_987443221 2009-08-17 16:54
VB_代码执行速度测试
'**************************************'Windows API/Global Declarations for :[ '     A Simple] code ...
广告
我要评论
0
3
1
2
3
4
5
6
7
8
9
0
广告
关闭 热点推荐上一条 /5 下一条