李 洋
(曲阜师范大学 计算机科学学院,山东 日照 276826)
嵌入式系统,即Embedded system,是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”。根据英国电气工程师协会的总结定义,嵌入式系统是为控制、监视、辅助设备、机器或用于工厂运作而产生的设备。在国内,嵌入式系统也拥有另一种定义方式,即以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
嵌入式设备的工作通常情况下只针对预先定义的某一项具有特殊要求的任务。这个特点也使得嵌入式系统的设计人员和使用人员能够对它进行优化和缩小,节约大量成本和空间。
嵌入式系统并不能满足信息数字时代对它的要求,为此它又有了新的方向:(1)强大的硬件开发工具以及软件包支持;(2)结构更加复杂,功能更加完整;(3)网络互联;(4)精算系统内核和算法,降低功耗和软硬件成本;(5)提供友好的多功能人机界面。
面对这些新的方向和挑战,嵌入式系统需要更加确保其电源供应,防止掉电产生。而现在的嵌入式系统却掉电频发,安全性不足,通过研究发现软件容错和掉电保护能够很好地降低掉电对嵌入式系统的影响。
掉电保护设计的目的是通过采用这种机制,保证系统在某种意外情况下失去供电时完整记录系统运行状态和正在处理的数据,并且在供电情况恢复正常时及时恢复现场数据,降低系统混乱、丢失数据的风险。这种机制的主要设计方式是沿着系统产生掉电信号、捕捉掉电信号、记录和处理掉电信号及数据、恢复现场的流程,确保掉电情况下能够保护数据、记录现场。
下面以ARM 体系硬件和μClinux 嵌入式操作系统为例简单说明掉电保护机制的实现。
图1 嵌入式系统硬件设计
如图1 所示,是嵌入式系统的一种典型的硬件设计方案,在ARM 体系上采用S3C4510B 微处理器,并且硬件中的SDRAM 是易失性存储器,系统运行时的数据通常状况下都存在SDRAM 中,掉电时容易丢失。而FLASH 是非易失性存储器,因此在掉电发生时数据和现场运行情况必须写入FLASH 保留下来用于系统恢复。
图2 添加电源保护的电路设计图
由于与掉电关联最紧密的是电源和电路设计,因此,电源保护也至关重要,如图2,将其添加到电路设计中就能够进一步降低掉电的发生。而且输电电压也要进行严格的控制,S3C4510B需3.3V 电压,部分器件需5V 电压,因此输电电压应控制在5V直流电压。
在μClinux 系统中,要想捕捉电信号可以采用两种方式:一是系统调用的方式,采用调用语句void (*signal(intslg,void(*func)(int)))(int),语句中的参数func负责传递掉电信号SIGPWR,这种方式简单易操作,但是由于系统机制的问题易丢失信号,并不常用。二是守候进程,即在系统中专门设置一个进程用来观察等待中断信号。这种机制的实现基础是系统以原子操作方式执行程序,当产生中断信号时,系统会在执行原子操作前利用管道的方式读取信号,并保存系统状态,将数据及现场写入FLASH,之后退出,等待电源恢复后恢复现场。
掉电保护机制很好地减少了由于掉电产生的数据丢失,在嵌入式系统的开发中具有重要的推广意义。
嵌入式系统的应用越来越广泛,数字信息时代对它的要求也越来越高,它不仅要具有高强度的工作能力,其安全可靠性也至关重要。软件容错技术和掉电保护对提高其可靠性起到了重要作用。使用嵌入式的同时,选择正确的保护和防止措施才能最大程度地发挥嵌入式系统的作用。
[1]电子科技大学计算机学院.CRTOS x86/pm 嵌入式实时操作系统原理与应用设计[Z].增补版.成都:电子科技大学,2011.
[2]赵秋云,魏乐,刘文清.嵌入式软件的构件化开发研究[J].科技资讯,2011.
[3]王田苗,魏洪兴.嵌入式系统设计与实例开发(第3 版.清华大学出版社,2008.