打印

程序运行失常的软件对策总结

[复制链接]
1585|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huangfeng33|  楼主 | 2012-4-2 14:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
系统受到干扰侵害,致使PC值改变,造成程序运行失常,导致:
(1)程序飞出。PC值指向操作数,将操作数作为指令码执行;PC值超出应用程序区,将非程序区中的随机数作为指令码运行,不管何种情况,都造成程序盲目运行,最后由偶然巧合进入死循环。
(2)数据区及工作寄存器中数据破坏。程序的盲目运行,将随机数作为指令运行的结果不可避免地会盲目地执行一些存储器读写命令而造成其内部数据的破坏。例如MCS-51单片机,当PC值超出芯片地址范围(当系统扩展小于64K),CPU获得上虚假数据FFH时,对应地执行“MOV R7,A”指令,造成工作寄存器R7内容变化。
对于程序运行失常的软件对策主要是发现失常状态后及时引导系统恢复原始状态。
1;设置监视跟踪定时器
使用定时中断来监视程序运行状态。定时器的定时时间稍大于主程序正常运行一个循环的时间,而在主程序运行过程中执行一个定时器时间常数刷新操作,这样,只要程序正常运行,定时器不会出现定时中断,而当程序失常,不能刷新定时器时间常数而致定时中断,利用定时中断服务将系统复位。
在8031应用系统中作为一个软件抗干扰的一个实例,做法如下
(1)使用8155的确定时器所产生的“溢出”信号作为8031的外部中断源,用555定时器作为8155定时器的外部时钟输入。
(2)8155定时器的定时值稍大于主程序的正常循环时间。
(3)在主程序中,每循环一次,骊8155定时器的定时常数进行刷新。
(4)在主控程序开始处,对硬件复位还是定时中断产生的自动恢复进行判断。
2;设置软件陷阱
I当PC失控,造成程序“乱飞”而不断进入非程序区,只要在非程序区设置拦截措施,使程序进入陷阱,然后强使程序进入初始状态。对于MCS-51系列单片机,可用“LJMP #0000H”和“JB bit,rei”指令,在非程序区反复利用020000002000000…H填满。这样不念论PC失控后指向那一字节,最后都能导致程序回到复位状态。也可用020202…填满并在0202地址上加一条指令LJMP#addi6,这样拦截的程序将转至#add16入口地址。

相关帖子

沙发
kekeke| | 2012-4-2 21:32 | 只看该作者
过来看下 楼主总结还不错的吗

使用特权

评论回复
板凳
kekeke| | 2012-4-2 21:32 | 只看该作者
:handshake

使用特权

评论回复
地板
liwsx| | 2012-4-2 21:58 | 只看该作者
嗯      ,看了
楼主是有心人啊    ,
学习了

使用特权

评论回复
5
拿起书本| | 2012-4-4 15:43 | 只看该作者
总结的很详细,现在软件抗干扰的问题越来越收起人们的重视了。

使用特权

评论回复
6
tianli1980| | 2012-4-7 21:43 | 只看该作者
感谢这种经验分享。
学习了,
收下,
谢!

使用特权

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

本版积分规则

506

主题

2446

帖子

8

粉丝