第4章 单片机软件可靠性设计
4.1 软件可靠性设计
软件是一种逻辑性系统元素,具有抽象性、严密性、智力性、持久性、易出错、须维护、难以度量等特征,软件编制过程与人密切相关,错误在所难免,并具有传染性。问题是如何使软件错误减少到最少,出错以后又具有一定的诊错容错能力。这是软件可靠性设计必须解决的问题。
图4-1 软件子系统人—环境特性示意图
4.2 单片机系统软件可靠性设计的途径
软件设计 错 误 是 造 成 软 件 运 行 不 可 靠 的 主 要 因素,但设计正确的软件并不一定就能可靠运行,因为软件在运行过程中还要受到来自内外的各种干扰,为此单片机系统软件可靠性设计主要有以下两条途径: 1)提高软件设计的正确性;
2)针对人—环境特性采取相应的可靠性措施。
4.3 提高软件设计的正确性途径
1)认真设计:在明确单片机系统各组成部分硬件地址的基础上,深刻领会汇编语言指令的功能及其对机器状态字的影响,正确划分片内的功能,认真细致的编写系统软件。在编写过程中可借鉴软件工程的一些具体作法,如按照信息流向逐级设计数据流图,编写程序时尽量增加注释语句,同时编写好软件文档,使程序易懂透明,增强软件的可读性和可维护性。
27
2)合理安排中断:根据系统特点合理安排中断所完成的功能及中断的优先级,中断现场的保护和恢复,避免中断冲突,对于系统运行非常重要。
3)模块化结构:根据系统功能将软件分成若干个模块,这样不但编程思路清楚,不易出错而且也便于阅读和调试。
4)恰当安排软件陷阱:软件在运行过程中可能出现失控 现 象,例 如 受 到 3333 4 4 4 干 扰 或 程 序 飞 逸 到3333 4 4 4 非程序区,这时就会错误的执行 56 +7,,指令,造成 +7 内容错误变化。因此在未使用的向量、非程序区、程序断裂点、编程应用到 +7 的重要程序段埋设软件陷阱,以捕捉飞逸的程序。
5)恰当采用指令冗余技术:在不影响实时性的前提下,同一指令的反复执行,或用三选二策略进行判决,有利于消除偶然干扰,提高软件运行的可靠性。 6)软件消抖措施:按键操作中的意外抖动经常发生,为了消除不利影响,在键处理程序中,采用延时再判的方法,能够保证人机对话可靠进行。
7)应用直接地址:对固定寄存器区的寄存器 +@,用代号不如用直接地址来得可靠,因此在软件设计过程中应尽量采用直接地址,避免发生误传递。
8)应用数字滤波技术:在参数测量中,为了消除随机干扰,经常采用数字滤波技术。比如对核测井信号采用加权平滑消除高斯噪声;对井温信号采用中值滤波,或程序判断滤波,对于明显超出正常取值范围的数据予以剔除,从而提高采样的可信度。
9)软件容错设计:软件容错设计是一个困难的话题,因为它需要了解各类软件错误形态,进而决定具体的容错算法。对单片机系统而言,可采取一些简单的容错处理,如对于一些重要参数的输入,要求用户两次确认;对于非法的参数输入,单片机将自动复位。
4.4 调试与功能说明
单片机应用系统的调试包括硬件和软件两部分,但是他们并不能完全分开。一般的方法是排除明显的硬件故障,再进行综合调试,排除可能的软/硬件故障。 4.5 软件调试问题及解决
28
软件程序的调试一般可以将重点放在分模块调试上,统调是最后一环。软件调试可以采取离线调试和在线调试两种方式。前者不需要硬件仿真器,可借助于软件仿真器即可;后者一般需要仿真系统的支持。本次课题,Keil软件来调试程序,通过各个模块程序的单步或跟踪调试,使程序逐渐趋于正确,最后统调程序。
仿真部分采用protus 6 professional软件,此软件功能强大且操作较为简单,可以很容易的实现各种系统的仿真。
首先打开protus 6 professional软件,在元件库中找到要选用的所有元件,然后进行原理图的绘制;绘制好后再选择wave6000已经编译好的*.hex文件,选择运行,观察显示结果,根据显示的结果和课题的要求再修改程序,再运行查,直到满足要求。
29
参考文献
[1]《51系列单片机高级实例开发指南》李军 北京航空航天大学出版社 [2]《MCS—51/96系列单片机原理及应用》孙涵芳 北京航空航天大学出版社 [3]《单片机原理及应用》 欧阳斌林 中国水利水电出版社 [4]《电子技术基础》 许熙文 高等教育出版社 [5]《电路基本分析》石生 高等教育出版社
[6] 冯俊萍.汽车测试技术及传感器[M].重庆大学出版社,2011.
[7]冯如只,李明刚.汽车制动性能测试系统的抗干扰设计[J]。汽车实用技术.2013,9:23-24. [8]李建.反力式滚筒制动试验台测控系统的研究[D].宁夏大学硕士学位论文,2013. [9]王美燕.基于单片机的电涡流式微位移传感器测量系统的研究[D].东华大学硕士学位论文,2013.
[10] 李东升等.protel 99SE电路设计教程.电子工业出版社,2007.1 [11] 藏春华等.电子线路设计与应用.高等教育出版社,2004.7
[12] 李学海.16位单片机SPCE061A使用教程——基础篇.人民邮电出版社,2007 [13] 张琳娜,刘武发.传感检测技术及应用.中国计量出版社,1999 [14] 邵敏权,刘刚.单片机原理实验及应用.吉林科学技术出版社,1995.1
[15] 杨振江等.智能仪器与数据采集系统中的新器件及应用.西安电子科技大学出版 社,2001.12
[16] 罗亚非等.凌阳16位单片机应用基础.北京航空航天大学出版社,2005.5 [17] 刘笃仁,韩保君.传感器原理及应用技术。机械工业出版社,2003.8 [18] 薛筠义,张彦斌.凌阳16位单片机原理及应用,2003.2
[19] Behzad Razavi.Design of Analog CMOS Integrated Circuits[M]. . 2001
[20] Rhee W.Design of high-performance CMOS charge pumps inphase-locked loops. IEEE International Symposium on Cir-cuits and Systems. 1999
[21] Todd Charles Weigandt.Low-phase-noise,low-timing-jitter design techniques for delay cell based VCOs and frequency synthesizers[C]//PHDthesis. . 1998
[22] George Lee,Karina Ng,Edmond Kwang.Design of ring oscillator based voltage controlled oscillator. Project Final Report[R]. 2005
[23] T. C. Weigandt,B. Kim,and P. R. Gray.Analysis of Timing Jitter in CMOS Ring Oscillators. IEEE International Symposium on Circuits and Systems. 1994
30
致谢
首先衷心地感谢我的导师。本文从选题到完成,从理论上的探讨到实际问题的解决,无处不饱含着老师的心血。老师的悉心指导和建议给了我极大的帮助和支持,使我受益匪浅,在此论文完成之际,谨向老师致以深深的谢意和崇高的敬意。
我在这一次单片机可靠性设计过程中,受益匪浅。通过对自己在大学四年时间里所学的知识的回顾,并充分发挥对所学知识的理解和对毕业设计的思考,最终完成了。这为自己今后进一步深化学习,积累一定宝贵的经验。撰写论文的过程也是专业知识的一部分,一个学习的过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决实际问题的能力。
通过这次设计我发现,只有理论水平提高了,才能够将书本上的知识与实践相互结合,理论知识服务于实践,以增强自己的动手能力。这个毕业设计十分有意义,我获得很深刻的经验。通过这次的设计,我们知道了理论和实际的距离,也知道了理论和实践相互结合的重要性,也从中得到了很多书上无法得知的知识。
31