位置:51电子网 » 技术资料 » 单 片 机

两种“软件陷阱技术”的比较

发布时间:2008/8/20 0:00:00 访问次数:405

  引 言

  单片机应用系统的抗干扰具体可分为软件和硬件两方面,其中,软件抗干扰以其设计灵活、节省硬件资源、降低成本等优势越来越得到广泛采用。软件抗干扰技术主要有“指令冗余技术”、“软件陷阱技术”、“软件看门狗技术”、“数字滤波技术”等。本文就软件陷阱技术对单片机应用系统抗干扰的原理与具体实现方法进行探讨和研究,给出实现软件陷阱技术的两种形式,并将该技术成功地使用在多个实际的单片机应用系统中,保证系统的可靠运行。

  1 程序跑飞和软件陷阱技术概述

  程序正常运行时,程序计数器pc始终指向正在执行的这条指令的下一条指令的第一个字节的程序存储器单元地址,这样就保证了单片机能够正确地读取每一条指令的各个字节,即cpu先读取操作码,再读取操作数(如果有操作数字节的话)。在mcs-51系列单片机中,程序计数器pc的寻址范围是0000h~ffffh,共64 kb。用户应用程序中,根据系统要求,规定了程序运行的惟一路径。这体现在系统上电后,程序计数器pc有唯一的变化历程,保证了程序正常、有序地运行。程序跑飞是指系统受到某种干扰后,程序计数器pc的值偏离了给定的唯一变化历程,导致程序运行偏离正常的运行路径。程序跑飞因素及后果往往是不可预计的。

  在很多情况下,程序跑飞后系统会进入死循环而导致死机。这时,应采取有效措施引导跑飞的程序尽快退出死循环并迅速复位。实践证明,软件陷阱技术能有效引导跑飞的程序尽快退出死循环并迅速复位。

  2 两种软件陷阱技术的比较分析

  当单片机应用系统的cpu受到干扰时,不良影响的主要形式有:①非正常修改程序计数器pc指针;②改写可编程输出端口的状态;③非正常修改重要数据区的数据。以上三个方面的不良影响会使单片机应用系统程序失控,控制状态失灵,其后果是非常严重的,它甚至会使系统崩溃,造成严重的工业事故。以上几个方面的不良影响可以使用软件陷阱技术加以解决。现将这一技术的实现方法归纳总结为两种。

  2.1 软件陷阱技术实现形式之一

  单片机应用系统的用户应用程序一般由循环结构的主程序和中断服务子程序组成.将下面的软件陷阱程序段插入到用户应用程序中(如何插入的问题将在下面的第3点中详细讨论),即在用户应用程序存储器不用区域写入代码.

  当单片机应用系统工作正常时,单片机的cpu不会执行软件陷阱程序段;但是,当单片机应用系统受到干扰而程序跑飞后,由于程序计数器pc值错误,破坏了正常的指令格式,导致执行非正常指令,从而执行软件陷阱程序段,落入软件陷阱,将跑飞的程序引导到复位入口地址0000h。软件陷阱程序段中的连续2条nop指令是为了增强“ljmp 0000h”被捕获的能力,即“ijmp0000h”不会被冲散,当程序跑飞后会得到完整地执行,从而使跑飞的程序纳入正常轨道。

  2.2 软件陷阱技术实现形式之二

  虽然上述的软件陷阱技术能实现可靠回复功能,但是有两个方面的严重隐患。第一,隐患主要是在对中断的处理上:首先,程序跑飞很可能是发生在中断服务子程序中,其次,一些未使用的中断很可能因为程序跑飞而被错误地激活,而这时只是简单地让跑飞的程序从头开始运行,就不能关闭已激活的中断,这样,单片机的中断系统会认为程序仍在处理中断,就不会再响应同级中断。第二,大部分单片机应用系统在上电复位初始化后,不希望在程序跑飞而用软件陷阱回复后又重新初始化。

  为了解决第一个隐患,当程序跑飞时,一定要想办法关闭可能发生的中断,然后再执行用户应用程序。大家知道,当cpu进入中断后,就只能用reti指令关闭中断.解决第一个隐患的具体方法是,改变软件陷阱程序段:当程序跑飞后,将跑飞的程序引到0202h处,然后在0202h处完成关闭中断的工作,即在用户应用程序存储器不用区域写入代码“0000020202h”。需要注意的是,程序存储器不用区域的最后两个存储单元,一定要分别写入代码“00h”。

  nop
  nop
  ljmp 0202h ;前面的连续2条nop指令是为了;增强“ljmp 0202h”被捕获的能力
  而在0202h开始的程序存储器单元进行如下的编程:
  org 0202h
  movdptr,#errl
  push dpl
  push dph
  reti ;关闭第1级中断,并跳转到errl处
  errl: clr a
  push acc
  push acc
  reti ;关闭第2级中断,软件回复到0000h处

  这样,就保证了无论在什么情况下,都可以关闭2级中断。当然,如果没有中断被激活时运行了这段程序,也不会有什么不良影响。

  为了解决第二个隐患,可以在系统主程序入口处加一个软件开关来判别是上电复位直接进入0000h的,还是经过软件陷阱回复而进入0000h的,根据不同的判别结果执行不同的程序。

  单片机应用系统上电时,上电复位电路会

  引 言

  单片机应用系统的抗干扰具体可分为软件和硬件两方面,其中,软件抗干扰以其设计灵活、节省硬件资源、降低成本等优势越来越得到广泛采用。软件抗干扰技术主要有“指令冗余技术”、“软件陷阱技术”、“软件看门狗技术”、“数字滤波技术”等。本文就软件陷阱技术对单片机应用系统抗干扰的原理与具体实现方法进行探讨和研究,给出实现软件陷阱技术的两种形式,并将该技术成功地使用在多个实际的单片机应用系统中,保证系统的可靠运行。

  1 程序跑飞和软件陷阱技术概述

  程序正常运行时,程序计数器pc始终指向正在执行的这条指令的下一条指令的第一个字节的程序存储器单元地址,这样就保证了单片机能够正确地读取每一条指令的各个字节,即cpu先读取操作码,再读取操作数(如果有操作数字节的话)。在mcs-51系列单片机中,程序计数器pc的寻址范围是0000h~ffffh,共64 kb。用户应用程序中,根据系统要求,规定了程序运行的惟一路径。这体现在系统上电后,程序计数器pc有唯一的变化历程,保证了程序正常、有序地运行。程序跑飞是指系统受到某种干扰后,程序计数器pc的值偏离了给定的唯一变化历程,导致程序运行偏离正常的运行路径。程序跑飞因素及后果往往是不可预计的。

  在很多情况下,程序跑飞后系统会进入死循环而导致死机。这时,应采取有效措施引导跑飞的程序尽快退出死循环并迅速复位。实践证明,软件陷阱技术能有效引导跑飞的程序尽快退出死循环并迅速复位。

  2 两种软件陷阱技术的比较分析

  当单片机应用系统的cpu受到干扰时,不良影响的主要形式有:①非正常修改程序计数器pc指针;②改写可编程输出端口的状态;③非正常修改重要数据区的数据。以上三个方面的不良影响会使单片机应用系统程序失控,控制状态失灵,其后果是非常严重的,它甚至会使系统崩溃,造成严重的工业事故。以上几个方面的不良影响可以使用软件陷阱技术加以解决。现将这一技术的实现方法归纳总结为两种。

  2.1 软件陷阱技术实现形式之一

  单片机应用系统的用户应用程序一般由循环结构的主程序和中断服务子程序组成.将下面的软件陷阱程序段插入到用户应用程序中(如何插入的问题将在下面的第3点中详细讨论),即在用户应用程序存储器不用区域写入代码.

  当单片机应用系统工作正常时,单片机的cpu不会执行软件陷阱程序段;但是,当单片机应用系统受到干扰而程序跑飞后,由于程序计数器pc值错误,破坏了正常的指令格式,导致执行非正常指令,从而执行软件陷阱程序段,落入软件陷阱,将跑飞的程序引导到复位入口地址0000h。软件陷阱程序段中的连续2条nop指令是为了增强“ljmp 0000h”被捕获的能力,即“ijmp0000h”不会被冲散,当程序跑飞后会得到完整地执行,从而使跑飞的程序纳入正常轨道。

  2.2 软件陷阱技术实现形式之二

  虽然上述的软件陷阱技术能实现可靠回复功能,但是有两个方面的严重隐患。第一,隐患主要是在对中断的处理上:首先,程序跑飞很可能是发生在中断服务子程序中,其次,一些未使用的中断很可能因为程序跑飞而被错误地激活,而这时只是简单地让跑飞的程序从头开始运行,就不能关闭已激活的中断,这样,单片机的中断系统会认为程序仍在处理中断,就不会再响应同级中断。第二,大部分单片机应用系统在上电复位初始化后,不希望在程序跑飞而用软件陷阱回复后又重新初始化。

  为了解决第一个隐患,当程序跑飞时,一定要想办法关闭可能发生的中断,然后再执行用户应用程序。大家知道,当cpu进入中断后,就只能用reti指令关闭中断.解决第一个隐患的具体方法是,改变软件陷阱程序段:当程序跑飞后,将跑飞的程序引到0202h处,然后在0202h处完成关闭中断的工作,即在用户应用程序存储器不用区域写入代码“0000020202h”。需要注意的是,程序存储器不用区域的最后两个存储单元,一定要分别写入代码“00h”。

  nop
  nop
  ljmp 0202h ;前面的连续2条nop指令是为了;增强“ljmp 0202h”被捕获的能力
  而在0202h开始的程序存储器单元进行如下的编程:
  org 0202h
  movdptr,#errl
  push dpl
  push dph
  reti ;关闭第1级中断,并跳转到errl处
  errl: clr a
  push acc
  push acc
  reti ;关闭第2级中断,软件回复到0000h处

  这样,就保证了无论在什么情况下,都可以关闭2级中断。当然,如果没有中断被激活时运行了这段程序,也不会有什么不良影响。

  为了解决第二个隐患,可以在系统主程序入口处加一个软件开关来判别是上电复位直接进入0000h的,还是经过软件陷阱回复而进入0000h的,根据不同的判别结果执行不同的程序。

  单片机应用系统上电时,上电复位电路会

相关IC型号

热门点击

 

推荐技术资料

硬盘式MP3播放器终级改
    一次偶然的机会我结识了NE0 2511,那是一个远方的... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!