模块化单片机系统的软件设计自动化

(整期优先)网络出版时间:2017-12-22
/ 2

模块化单片机系统的软件设计自动化

杨其运

东莞赋安实业有限公司广东东莞523000

摘要:单片机及其周边外设所组成的单片机系统,如今已被广泛应用于工业控制、交通设备、智能仪器和各类电子产品当中。随着应用的广泛和深入,人们对单片机系统的可靠性越来越重视,要求也越来越高。本文分析了模块化单片机系统的软件设计自动化。

关键词:单片机系统;软件设计;自动化

在合理、确定的模块化单片机产品的硬件支持下,开发一个软件系统来实现单片机系统软件设计的自动化是行之有效的可行途径,即以软件生产软件。

一、系统结构

1.流程图编辑模块。显然,如果企图实现某一控制系统软件设计的自动化,那么首先需要解决的问题是,如何让设计主体清晰、全面地了解这一控制系统工作的流程是怎样的,而流程图编辑模块正是用于实现这一功能的,该部分应当具有以下特征。

2.解释程序库、目标代码库和通信接口。流程图易于为用户所接受,但控制系统硬件只能执行相应的二进制代码,因此需要提供一种手段将流程信息转化为单片机可执行的二进制代码,这一工作正是由解释程序库来完成的。

二、软件设计自动化方法

软件设计是在硬件设计的基础上,对系统可靠性的进一步提升,成本低廉、灵活可靠。它是在软件指令正确和功能完整的前提之下,采取容错纠错机制,保证系统遇到异常情况时仍能够保持正常运行。这些机制之所以重要,是因为一些无法避免的外界干扰虽然不会造成硬件的损坏,但是常会破坏数字信号的时序,更改寄存器和存储器内容,导致程序跑飞或进入死循环。

1.数字滤波。在采集模拟信号时,得到的数据可能存在偏差。这些偏差有时并不是由程序本身引起的,而是由于噪声信号串入前向传感器中所致。数据失真有可能进一步导致系统发出错误的控制信号,后果可能非常严重。针对这种情况,可采用数字滤波确保采集到的数据的准确性和真实性。它通过一定的计算或者判断程序,剔除错误数据,消除随机干扰,减小干扰信号在有用信号中的比重,提高数据的可信度,具有很好的灵活性和适应性。数字滤波技术方法很多,有算术平均值法、滑动平均值法、一阶递推数字滤波法等。在本系统中,噪声主要是不规则的随机噪声,因而选择采用了防脉冲干扰平均值法。它将采样和A/D变换后的数字序列中的N个数据进行比较,去掉最大、最小值,计算余下的N-2个数据的算术平均值。实际运用中,可以根据采集数据的速度要求选取合适的N值,滤波程序通常被安排在中断处理程序中。

2.恢复技术。当单片机系统遇到电磁干扰而导致芯片程序运行错误或者进入死循环时,系统应当能够尽快摆脱死循环或者重新启动。此时可以借助一些软件手段来实现系统的自我恢复。一是软件陷阱。当PC指针失控,程序跑飞而进入非程序区时,可通过在非程序区设置软件陷阱来捕获程序;将程序强行引向专门处理错误的程序的入口地址,进行错误处理或进行初始化处理,从而将系统引导上正确的轨道。软件陷阱其实就是几条专门的指令或者是一小段代码。在本系统的EPRAM区中,每相隔1KB空间安排了如下所示的一小段代码所组成的软件陷阱,不会影响程序的执行效率。二是看门狗。跑飞的程序落到一个临时构成的死循环程序中而无法自行摆脱时,冗余指令和软件陷阱都不能够起作用,这时可用“看门狗”程序来引导系统。在本系统中,软件“看门狗”程序可以看作由三个部分组成,即定时器程序、“喂狗”程序和中断处理程序。在程序运行的过程中,若程序循环时间超过设定的最大允许循环时间,而未执行“喂狗”程序,即未能对“看门狗”进行及时的“喂狗”复位操作,则“看门狗”认为系统陷入“死循环”,于是产生定时器产生中断,将程序转向中断处理程序进行出错处理或者重新引导程序。理论上,只要程序不死循环在“喂狗”程序中而能够进入中断处理程序,那么软件“看门狗”就能够发挥作用。

3.冗余技术。一是数据冗余。有时干扰虽然不会损坏整个系统RAM区,但是可能会造成RAM中个别区域数据丢失。为了保护RAM中重要的数据和信息,可以采用数据冗余技术,将系统重要参数在RAM中实行多备份保留。在系统复位后或者其他必要情况下,利用备份对重要参数区进行自我检验和恢复。二是时间冗余。时间冗余技术,实际上是以牺牲时间为代价来换取系统的可靠性。它重复执行某一操作或程序,然后将结果与前一次结果进行主动比较来判断系统工作是否正常。两次结果相同则认可,不同则再重复一次,将不相同的那一次结果认作是干扰所致并剔除;如果三次结果均不相同则判定为故障,转入故障处理程序。时间冗余通常使用在程序的关键判断上,它能够明显地排除抖动信号的影响,防止系统误动作。例如在对布尔类型控制信号进行采集判断时,可以重复执行采集操作,将得到的信号相比较,再判断是否真的存在外部控制信号的到来。三是指令冗余。与时间冗余技术的主动判断相比,指令冗余技术的特点在于,它通过添加冗余指令来降低程序运行出错的可能性,具有一定的被动性。CPU取指令过程是先取操作码,再取操作数。若程序跑飞到某双字节指令,而取指令时刻落在操作数上,就会误将操作数当作操作码执行,使得程序出错。若是三字节指令,则出错概率更大。对于此种情况,本系统在关键地方人为插入了一些单字节指令,或将有效单字节指令进行了重写。通常是在双字节指令和三字节指令后插入2个字节以上的NOP指令。这样即使跑飞的程序飞到操作数上,由于空操作指令NOP的存在,也能够避免后面的指令被当作操作数执行,使程序自动纳入正轨,确保了重要指令的执行。

本文分析了模块化单片机系统的软件设计自动化。对于提高系统的可靠性和保证系统的稳定运行起到了非常积极的作用,具有很强的实用性和很高的推广价值。

参考文献:

[1]洪鼎标.高速单片机硬件关键参数设计概述[J].单片机与嵌入式系统应用,2014(4):5-8.

[2]杨绪剑,刘星星,申屠斌,等.工控系统的屏蔽抗干扰技术[J].机床与液压,2016(5):157-159.

[3]刘永强.数控系统应用的抗干扰技术[J].组合机床与自动化加工技术,2016(2):53-55.