datasheet

基于嵌入式系统的掉电保护方案设计

2018-02-13来源: eefocus 关键字:嵌入式系统  掉电保护

    在嵌入式系统设计过程中,系统的掉电保护越来越受到重视。本文介绍的方法是在用ARM7系列芯片S3C4510B和μClinux构建的嵌入式平台上实现的。整个掉电保护实现的基本思路是:产生掉电信号,捕捉掉电信号和处理掉电信号。重点介绍这个过程的具体实现。

    系统防掉电设计的目的是:采用一种机制,使得系统在意外失去供电的情况下,可以保证系统运行状态的确定性以及记录数据的完整性;当系统供电恢复后,现场数据可以及时恢复,避免应用系统产生混乱。我们知道,在嵌入式系统设计与开发中越来越多地应用嵌入式操作系统。由于操作系统的引入,数据的读写往往是通过文件的方式完成,而不是直接对存储单元地址操作。用文件读写方式操作数据,在程序的运行过程中往往将数据暂存在易失性的存储空间,如SDRAM,一旦系统意外失电,这些数据往往被丢失。因此,当系统意外失电时必须采取一定的措施进行系统的掉电保护,以避免系统产生混乱。总的说来,防掉电程序的主要思路就是:产生掉电信号,捕捉掉电信号,处理掉电信号和数据以及现场状态的恢复。

    如果不引入操作系统,直接对存储单元进行数据操作,每次操作的数据量小,可以利用中断服务的方式进行掉电保护;而用文件的方式进行数据操作,数据量一般比较大,因此基于中断服务的方式进行掉电保护已经不再可靠。本文研究的对象是基于操作系统的较为复杂的嵌入式系统设计过程中的掉电保护。

    1 掉电保护方案实现的系统基础

    掉电保护是在由ARM体系的硬件平台和μClinux嵌入式操作系统的基础上实现的。

    ARM7系列的微处理器支持八种类型的中断处理。外部中断请求会在外部中断引脚有效(一般是低电平),并且程序状态寄存器相关位(即CPSR的I控制位)设置为允许时得到处理器响应。响应后处理器进入中断工作模式,PC被装人中断向量0x00000018。在这个地址单元存放中断服务程序人口地址,中断服务程序就可以被执行。在掉电保护方案中,中断服务程序很简单,就是将表示掉电的全局变量置位即可。这样可以缩短程序执行时间。

    Flash存储器是一种可在系统(in system)进行电擦写,电后信息不丢失的存储器。它具有低功耗、大容量、可整片或分扇区在系统编程(烧写)、擦除等特点,并且可由内部嵌入的算法完成对芯片的操作,因而在各种嵌入式系统中得到了广泛的应用。作为一种非易失性存储器。Flash在系统中通常用于存放程序代码、常量表以及一些在系统掉电后需要保存的用户数据等。常用的Flash为8位或16位的数据宽度,编程电压为单3.3V。与Flash存储器相比较,SDRAM不具有掉电保持数据的特性,但其存取速度大大高于Flash存储器,且具有读/写的属性,因此,SDRAM在系统中主要用作程序的运行空间、数据及堆栈区。当系统启动时,CPU首先从复位地址0x0处读取启动代码,在完成系统的初始化后,程序代码一般应调入SDRAM中运行,以提高系统的运行速度,同时,系统及用户堆栈、运行数据也都放在SDRAM中。SDRAM的存储单元可以理解为一个电容,总是倾向于放电,为避免数据丢失,必须定时刷新(充电)。因此,要在系统中使用SDRAM,就要求微处理器具有刷新控制逻辑,或在系统中另外加入刷新控制逻辑电路,特别的情况是在系统失电后,要采取一种有效的机制确保将sDRAM中的数据写入F1ash中。

    2 基于掉电保护方案的硬件设计

    图1是一种典型的嵌入式系统硬件设计方案。系统的微处理器采用S3c4510B,是基于ARM7体系结构的。SDRAM是一种易失性存储器作为程序的运行空间,类似于PC机的内存;Flash作为程序存储空间是非易失性的。程序运行过程中的数据往往缓存在sDRAM中,在系统失电时必须写往Flash。

    在系统中,需要使用5V和3.3V的直流稳压电源。其中,S3C4510B及部分外围器件需3.3V电源,另外部分器件需5V电源。为简化系统电源电路的设计,要求整个系统的输入电压为高质量的5V的直流稳压电源。有别于一般的电源回路设计,本系统的电源回路设计过程中增加了有关掉电保护的设计。包含这个设计的系统电源电路如图2所示。


    这个电源回路除了可以提供5v和3.3v的电源以外,还为系统掉电保护提供了延时及预警功能,通过软件的配合可以实现系统的掉电保护机制。正常情况下,由供电回路1给整个系统供电。当系统由于意外原因掉电时,由于输入的比较电压降低,这样MAX809 模块输出电压产生翻转为系统提供掉电中断预警信号,中断请求通过外部中断引脚XREQ0产生;同时供电回路2开始启用。通过大电容C3、c4放电,继续为系统提供一段供电电压,支持掉电中断服务程序完成。供电回路2只给最小系统供电,并不给耗电量大的外围部件供电。这样,给最小系统的供电时间足够长,可以完成敏感数据的保护操作。

    通过软件测算,电容放电可供最小系统工作时间在0.5~4.5S之间。这种测算方法很简单.编写一个掉电中断服务子程序,这个程序只是不断进行时间刷新操作。同样,可以通过软件测定在这段时间里向Flash擦写2~3MB。可见,在采用这种硬件体制的情况下,系统掉电保护能够得到可靠的保证。

    3 掉电信号处理软件方法的实现

    在μClinux系统下,掉电信号的捕捉有两种方式可以进行。一种是运用系统调用,即采用void(*signal(intslg,void(*func)(int)))(int)。这个函数可以为特定的中断信号安排制订的执行函数,用参数func传递。在μCllnux中,共有31个系统中断信号,其中掉电信号为SIGPWR。假设掉电中断服务处理程序为void interrupt-servICe(int),则中断服务与信号关联的方式为:signal(SIGPWR,interrupt_service)。这种方式充分利用系统调用,实现简单。在掉电保护方案设计初期也是采用这种机制。但事实证明这种机制并不可靠,其原因是Linux内核产生和管理信号的机制并不完善,有可能存在信号丢失。查阅有关Unix或L1nux的相关资料,可以发现这种状况也普遍存在于某些其他版本的Linux和Unix中。

    另一种方式是采用守候进程的方式,开通一个进程,此进程专门等待中断信号。主程序根据数据操作对象的不同,将自己的流程方案划分成若干原子操作,所谓原子操作即划定的程序块要么完全执行,要么不执行。每个操作对应惟一状态标志。在每个原子操作前,主进程都将会通过管道通信的方式阅读中断信号。如果中断信号产生,主进程首先保存状态标志,然后将相关数据写往Flash后退出,电源恢复后,主进程首先根据标志字确定系统恢复方案。图3用流程图的方式实现这一过程。

    下面是实现这一过程的程序片断:


    结语

    基于该方案设计的税控收款机在实际运行过程中,掉电保护功能完备。此掉电保护设计方法应用对象基于ARM和μClinux构建的嵌入式系统,在32位嵌入式系统开学中具有典珏型代表意义。因此在嵌人式系统设计中具有推广价值。


关键字:嵌入式系统  掉电保护

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/article_2018021337786.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:AT91SAM7X256的I2C控制器TWI接口的使用方法
下一篇:STM32进入和退出睡眠模式例程

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

Hyperstone将亮相在2018深圳国际嵌入式系统展上

康斯坦茨,德国 04 12 2018 – 闪存控制器设计公司Hyperstone,确定将于2018年12月20日至22日在中国深圳会展中心9号馆所 举办的深圳国际嵌入式系统展上展出。  展会期间参观摊位1A53,了解Hyperstone提供的闪存控制器和配套的软件解决方案;这些广泛的产品组合旨在最具挑战性的应用之下实现可靠的存储。这将侧重于闪存控制器的产品组合,用于实现最安全、坚固耐用的工业用闪存盘。解决方案涵盖CF卡、USB、SATA、SD和eMMc控制器,适用于高耐用性的内存模块和记忆卡,以及板上电子盘执行。  为了补充闪存控制器
发表于 2018-12-04
Hyperstone将亮相在2018深圳国际嵌入式系统展上

嵌入式系统联谊会10周年纪念活动圆满结束

2018年11月24日,“嵌入式系统联谊会10周年纪念暨嵌入式系统联谊会第24次会议”在北航隆重召开。全国各地从事嵌入式教育、研发和科技媒体界的朋友们近200人汇聚一堂,共同回顾了过去10年里嵌入式系统联谊会的发展历程以及为推动嵌入式技术发展所做的点点滴滴,同时,一起展望了嵌入式技术未来的发展趋势,用嵌入式系统独有的视角诠释大科技!嵌入式系统联谊会委员北航何立民、北理工马忠梅、北工大韩德强、北大林金龙、天大郭玮,太原理工常晓明和北邮邝坚教授,以及孙加兴和曹重英博士到会。会议由嵌入式系统联谊会秘书长何小庆主持,北京航空航天大学资产公司副总经理、北航科技园总经理、北航文化传媒集团总经理刘小龙先生为本次会议致辞。刘总对联谊会成立10周年
发表于 2018-12-03
嵌入式系统联谊会10周年纪念活动圆满结束

庆祝嵌入式系统联谊会正式成立10周年,第24次即将上演

2018年是嵌入式系统联谊会正式成立10周年,过去的10年里,在嵌入式系统产学研各界朋友的支持下,联谊会成功地举办了23次主题讨论会,讨论的议题涉及嵌入式系统、集成电路、物联网和人工智能等多个技术和产业领域,以及教育和人才培养。嵌入式系统联谊会主题讨论会举办地从北京延伸到上海、深圳和成都, 超过2000人次参加了我们的会议,媒体报道超过160余篇,《单片机与嵌入式系统应用》《电子产品世界》等媒体写了专题报道。此外,联谊会还与其他知名的机构合作协办了若干场相关的产业活动。在不懈的努力之下,嵌入式系统联谊会在中国嵌入式系统业界具有了一定的知名度!11月24日,上午主题讨论会是一场大型的报告会,主题是“物联网与人工智能时代的嵌入式系统
发表于 2018-11-12
庆祝嵌入式系统联谊会正式成立10周年,第24次即将上演

干货:如何快速开发嵌入式系统的交互界面?

串口屏 2010年以前的串口屏大多是通过上位机将要显示的内容预先下载到屏幕中,然后发送预设指令将各种界面显示出来。2014年后,功能更强大的组态屏使串口屏的产业链日趋成熟。由于串口屏的显示依赖其自带的库,所以其显示灵活度在一定程度上依旧受限。  图2  组态串口屏(图片来源网络) 2 . 嵌入式QT/E 相比于直接使用串口屏,嵌入式的QT/E的灵活度、自由性极大丰富。嵌入式的QT/E可以认为是QT在linux上的的精简版,它在底层摒弃了Xlib库以适应嵌入式应用的开发。使用 Qt 只需一次性开发应用程序,无需重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序
发表于 2018-09-19
干货:如何快速开发嵌入式系统的交互界面?

论存储芯片对国家发展的重要性

嵌入式系统芯片的概念在存储行业的具体应用,无论是系统芯片还是存储芯片,都是通过在单一芯片中嵌入软件,实现多功能和高性能,以及对多种协议、多种硬件和不同应用的支持。  存储芯片可分为易失性存储器和非易失性存储器,目前主流的存储器是DRAM与NAND Flash,两者占存储器市场的九成以上。  存储芯片的作用  存储芯片的作用是为访问性能、存储协议、存储介质等多种应用提供高质量的支持。随着大数据、云计算等更为复杂的场景,对存储芯片性能提出了更高的要求,这也为国产存储芯片企业提供了机遇。  存储芯片除了满足基本的存储功能,未来,带有各种处理器内核的SoC以及集成更多处理能力的FPGA产品将成为市场新需求。对于存储市场而言,借助FPGA来实施
发表于 2018-08-07
论存储芯片对国家发展的重要性

ADI全新嵌入式系统发布,大大提升汽车音频系统性能

ADI今天推出一款嵌入式系统,用于为电动(EV)和混合动力汽车(HEV)产生发动机声音。通过采用ADSP-BF706数字信号处理器和电动汽车警示音系统(EVWSS)固件,北美和全球其他地区的汽车制造商能够满足电动和混合动力汽车低速行驶时对外部发动机声音的未来安全规范要求。 ADI解决方案包含完整的硬件和固件参考设计。利用ADSP-BF706或ADAU1450数字音频处理器扩展后,分别可用于高性能应用或入门级应用。ADSP-BF706也可用于制造车舱内的发动机声,帮助改善车主的驾驶体验。ADSP-BF706采用存储器映射四通道SPI存储器,能够更快速、更便捷地访问存储的用于产生发动机声音的音频文件。它最多可以同时访问24
发表于 2018-07-17
ADI全新嵌入式系统发布,大大提升汽车音频系统性能

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved
pt type="text/javascript" src="//v3.jiathis.com/code/jia.js?uid=2113614" charset="utf-8">