提高单片机应用系统可靠性的软件技术
扫描二维码
随时随地手机看文章
1 可靠性设计模型与概述
可靠性设计模型表达了单片机应用系统从激励到响应的唯一性过程。可靠性设计模型如图1所示,按照可靠性设计模型,软件设计的主要任务是保证在过程空间中,应用系统程序按照给定顺序有序地运行。软件设计的可靠性保障是软件设计中的本质可靠性与可靠性控制。它保障了最少的软件错误以及在软件出错后仍保证系统能正常运行或安全运行。
2 本质可靠性的软件设计
2.1 最大限度地减少错误及缺陷
在应用软件中,唯一的有序性(编程指定的)与无限的激励因素,导致了软件测试仿真的不完全性,其结果是软件的缺陷与软件并存。软件的缺陷与错误通常可分为显性与隐性两大类。显性缺陷与错误发生在程序正常运行中。这些缺陷和错误大部分都可通过仿真调试进行纠正;隐性缺陷与错误通常都在系统非正常运行中显露出来。容错能力弱的系统存在较多的隐性错误。
2.2 要有足够的时序余度
时序是程序设计中必须考虑的问题。在应用程序设计应考虑的时序有系统复位时序、状态时序、器件工作时序及总线运行时序。
(1)系统复位时序
①MCU复位时序要求。MCU有上电复位(冷启动复位,如开机)与信号复位(热启动,如按键复位)。上电复位有电源建立及时钟系统起振过程和电路状态复位。信号复位是在MCU工作状态下的复位,没有电源建立及时钟起振过程的时序要求。
②应用系统中多个复位端的时序要求。当一个系统中,除单片机外,还有其他可编程外围器件,如8155有复位要求时,系统中便出现了多个复位控制要求。解决系统中多个器件复位时序的原则是:保证MCU在系统中最后复位或MCU对外围可编程器件的初始化,必须确保在该器件复位后进行。
③程序设计中的复位处理原则。
·MCU上电后延迟片刻,确保外围器件复位完毕,再对外围器件初始化。
·在确保MCU对有复位控制端口的外围器件初始化是完全初始化操作时,可将外围器件的复位端接成非复位状态。
(2)器件工作时序
器件工作时序是器件应用程序设计的基础。程序设计中必须保证时序工作的正确性,而且要有足够的余度。在考虑器件运行时序时,MCU的操作必须保证时序信号的衔接控制和时序信号的时序余度。
(3)状态转换时序
在状态转换的程序设计中,应根据状态转换的时序特点,进行精心的时序控制设计。通常,MCU本身的状态转换,如复位、ID、PD方式的进入或退出,片内外围集成电路单元的关断与运行,都有自动监视、自动运行管理功能。程序设计只须按MCU数据手册及指令系统的操作要求进行即可。对于有较长过渡时间的外围状态转换过程,可采取足够的延时等待或设置提前转换状态的办法。
(4)总线时序
在单片机应用系统中,有并行总线与串行总线。串行总线中又有通信总线和扩展总线。这些总线在规范化操作时,其时序由数据通信协议保证。在非规范运行,例如在虚拟总线方式下,其虚拟总线运行的可靠性在于时序的准确模拟。在并行总线中要保证读、写操作指令运行下的读、写时序;同步串行总线要保证时钟线控制下的同步运行时序;串行异步时序则要考虑波特率对数据传送的影响。
2.3 足够的容错设计
(1)超时管理的容错设计
在系统程序中,除了专门设置的循环等待程序外,系统中的许多操作都是时间有界的。由于非正常激励的入侵,导致任务操作无法结束,形成超时现象。解决措施:在程序设计中采用超时管理办法,使程序从非正常激励造成的“死机”中退出。
(2)超界管理的容错设计
系统中实际运行的参数都是有界的。系统运行中要考虑的超界管理参数有:
①物理参数。这些参数主要是系统的输入参数,它包括激励参数、采集处理中的运行参数和处理结束的结果参数。合理设定这些边界,将超出边界的参数都视为非正常激励或非正常响应进行出错处理。
②资源参数。这些参数主要是系统中的电路、器件、功能单元的资源,如存储器容量、存储单元长度、堆栈深度。在程序设计中,对资源参数不允许超界使用。
③应用参数。这些应用参数常表现为一些器件、功能单元的应用条件。如E2PROM的擦写次数与数据存储时间等应用参数界限。
④过程参数。指系统运行中的有序变化的参数。
(3)有序化的容错设计
有序化是程序正常运行的重要标志,是程序设计人员赋予的。有序化的容错设计是要保证在众多的非正常激励和出现非正常响应时,要最大限度地保证原来程序设计时给定的有序的正常程序操作。
3 可靠性控制的软件设计
3.1 噪声失敏控制技术
(1)噪声失敏与噪声失敏率
噪声失敏是利用CPU停止运行或关闭MCU外围电路,使其对外界噪声干扰失去响应能力的可靠性控制技术。噪声失敏率NTOUT是在实际系统中,采取噪声控制后,系统或电路对噪声失敏的时间概率,
NTOUT可由下式估算:
TLOP为系统运行总时间,通常为系统开机时间;TOP为MCU中CPU的运行时间或电路系统的工作状态时间;
TLOP-TOP为单片机CPU停止运行或外围电路被关断的时间。
(2)噪声失敏控制的软件技术
①按噪声失敏设计最有效的程序结构。尽量减少应用程序中的循环等待;尽量集中安排任务和任务中的有效运行时间;及时关断不在有效运行的电路单元。
②MCU的休眠与掉电。通常,与CPU停止运行的低功耗方式主要有关断CPU时钟的休闲ID方式和关断系统时钟的掉电PD方式。
③外围电路关断。外围电路可通过电源供电的关断控制。具有关断功能的外围电路,可采取引脚控制关断或编程控制的办法,使之进入失敏状态。
3.2 程序失控的回复技术
(1)程序失控后的快速冻结与回复
①WDT(Watch Dog Timer)的失控回复。如图2所示。在程序失控后,程序跳逸出正常路径,无法对WDT清零,致使WDT溢出。溢出端输出信号使MCU复位。
②指令的失控恢复。如89C51中采用LJMP0000H的软件陷阱时,将输入陷阱的失控程序强行跳转到复位入口0000H处。
(2)失控回复后的处理
①回复状态检测。回复是指程序失控后又转回到正常路径的起点,即复位入口地址。程序失控回复后要进行回复状态检测,以判断是上电复位还是WDT复位或指令拉回。通常采用的检测方法是利用上电标志。有些单片机内没有上电标志,可利用上电复位时SRAM的随机态与信号复位或程序拉回时,SRAM中数据不变的特点来判别。系统上电后,在SRAM区写入特殊上电标志数据。待回复后先检查上电标志是否存在,若存在即为WDT复位或指令拉回。
②回复后的初始化处理。图3是上电复位与程序失控回复初始化处理框图。0000H是MCU的复位入口,程序启动后,首先判断是上电复位(冷启动),还是程序失控回复(热启动)。上电复位是开机操作,要建立上电标志,并进行系统的完全初始化。程序失控回复应进行相关资源的检查与修复,以防止运行出错。另外根据系统的特点,需要保留一些过程数据。
不得进行完全初始化时,只进行部分初始化。
3.3 安保、自检与修复技术
在高可靠性等级的单片机应用系统中,软件设计中应有安保、自检与自修复软件。
(1)安保程序设计。安保设计要求有非正常响应时,对象的完全性保障和系统的可持续运行。为了能在系统出现非正常响应时,立即获得安全保护,应设置关键部位的失控检测,如I/O口输出状态实时检测;机器人轨迹检测等。检测到非正常响应后,应快速进入安保状态设置,首先使系统进入安全态,然后保护系统的关键资源不受侵害,以保证系统具有后续运行的操作的能力。
(2)实际系统中的自检。在实际的单片机应用软件中,应充分利用其智能化特点,设置各种自检程序以提高其可靠性与安全性。通常,应用系统中的自检程序有自诊断,失控后的回复检查和程序关键处的查验。程序自诊断通常是开机后对系统的例行检查;失控回复后的检查重点是数据区,I/O状态,SFR状态,外围电路的状态等。程序关键处的查验有界限检查、冗余性检查与逻辑性检查。
3.4 系统的结构冗余
由于系统结构的简化,电路的集成趋势,器件成本的下降,逻辑控制能力的提高,在关键部位可采取冗余的备份结构来提高系统的可靠性。图4为实际应用中某监控系统的具有独立仲裁器的双机冗余系统。仲裁器的输入逻辑接收两个系统的输出数据与故障信息;输出逻辑接收比较器A、B的比较结果和故障处理信号发生器的切换信号。仲裁器的故障判断原理如下:对两个同步工作系统输出的数据进行比较,比较结果一致表明两个系统均无故障;比较结果不同表明,必有一个系统出现故障,然后强令两个系统进入自检程序,用预先设定的参数进行测试,并与预定结果比较,相符者为正常开机,不符者为故障机。若为暂时性故障,重新复位即可排除,若为永久性故障则输出故障信号并进入单机运行。
4 结束语
可靠性是一个综合性、经验性较强的问题,是单片机控制器能否成功应用的关键问题。上述提高单片机应用系统可靠性的软件技术与方法应用于多项应用工程,使多项工程在高可靠性硬件基础上,保障了最少的软件错误以及在软件出错后仍保证系统正常运行或安全运行。
参考文献:
[1]杨华舒,复涛.单片计算机系统抗干扰的软件途径[J].电子技术应用,2001,(3).
[2]何立民.单片机高级教程[M].北京:北京航空航天出版社,2001.