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

发布者:SparklingSoul最新更新时间: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。

6

    在系统中,需要使用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位嵌入式系统开学中具有典珏型代表意义。因此在嵌人式系统设计中具有推广价值。


关键字:嵌入式系统  掉电保护 引用地址:基于嵌入式系统的掉电保护方案设计

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

推荐阅读最新更新时间:2024-03-16 15:55

借助飞思卡尔MCU和i.MX处理器畅享智能新生活
生活在多媒体时代 曾几何时,我们印象中的嵌入式系统就是一种专用的计算机系统,作为装置或设备的一部分。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都在使用嵌入式系统。只是彼时,嵌入式系统似乎和多媒体应用以及多媒体人机交互还很远。 技术的脚步总是让我们看到以前无法想象的应用出现,如今,我们已经生活在多媒体时代。嵌入式产品的多媒体应用让人们尽情享受科技之美,智能多媒体已处处可见。在智能交通中,道路上的网络摄像以便车辆导航、流量控制、信息监测;汽车服务方面,GPS让你及时调整行车路线,享受畅爽出行;在智能家居中,冰箱、空调等的网络化和智能化将引领人们的生活步入一个崭新的空间,即使你不在家里,也可以通过手机、平
[嵌入式]
ARM在嵌入式系统中的应用
  随着ARM处理器的流行,为了使更多工程师了解ARM傅立叶撰写了系列开发文章,主要解决什么是ARM,ARM在产品项目中的开发流程,LINUX,WINCE,VXWORKS等操作系统在ARM处理器上的应用等内容。希望对初学者有所帮助。   1.嵌入式系统概述   应该肯定地讲我们每一位都已经使用过嵌入式系统有关的产品,嵌入式系统已经深入到我们生活的每一个角落。他所涉及的领域广泛到我们的想象力能及的任何地方。嵌入式系统是相对桌面系统来讲的,凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。作为系统核心的微处理器又包括三类:微控制器(MCU)、数字信号处理器(DSP)、嵌入式微处理器(MPU)。嵌入式比较准确一个定义如下:系统以
[单片机]
ARM在<font color='red'>嵌入式系统</font>中的应用
嵌入式系统的无线互联技术”主题讨论会圆满结束
嵌入式系统联谊会“嵌入式系统的无线互联技术”主题讨论会,于2012年4月22日在北京航空航天大学新主楼会议中心顺利举行。 本次会议邀请了业内学者、教师、科研人员和企业代表,就嵌入式系统无线互联技术的现状和未来应用发展前景、相关的新技术新产品,以及设计和应用的经验,进行了热烈的交流讨论。嵌入式系统联谊会自09年开始至今已经召开了10次主题讨论会,议题涉及嵌入式系统和IT 领域多个方面,在业界产生了深远的影响。 在互联网、云计算和物联网快速发展的背景下,支持嵌入式设备近距离直接通信的无线互联技术,正处于一个迅速发展时期。这些无线互联技术包括ZigBee、WiFi、蓝牙、RFID和NFC等,每一项技术具有各自不同的特点,没有一种技术
[嵌入式]
ARM7TDMI-S在嵌入式系统中的Bootloader代码设计
摘要:ARM7TDMI-S是ARM公司设计的一款32位精简指令集处理器内核,LPC210x系列是飞利浦半导体公司生产的基于ARM7TDMI-S内核的芯片。在嵌入式系统设计中,针对嵌入式处理器和操作系统的Bootloader代码的设计是一个难点。本文根据用LPC2106进行嵌入式系统设计的实际经验,总结出基于ARM7TDMI-S内核的嵌入式处理器芯片的Bootloader代码设计的一般流程;给出LPC2106芯片在基于μC/OS-II操作系统的嵌入式应用中,BootLoader程序的详细设计流程及其中的一些关键技术和代码。 关键词:ARM7TDMI-S嵌入式系统 BootLoader代码 LPC2106 μC/OS-II 引言
[嵌入式]
基于DSP的嵌入式系统人机接口设计
   1 引言     人机接口是嵌入式控制系统的重要组成部分,用于人机之间实时交换控制系统并返回系统状态。嵌入式系统大都采用液晶屏和键盘作为人机接口的输入、输出设备。这里设计的人机接口作为数据采集系统的组成部分,为系统控制和运行监测提供方便,而其本身在各种嵌入式控制系统中又具有广泛的实用性。     2 液晶屏显示功能的实现     这里采用的液晶显示器为RT320240B。该显示器的控制器使用SEIKO EPSON公司生产的SED1335型控制器。DSP访问SED1335时,无需判断其是否空闲,SED1335能够随时准备接受DSP的访问并按照内部时序及时正确传输DSP发送的指令、数据。考虑到RT32024
[嵌入式]
移植标准Linux到S3C2410
1 引言 目前 , 在嵌入式系统里基于ARM核的嵌入式处理器已经成为市场主流。随着ARM技术的广泛应用 , 建立面向ARM构架的嵌入式操作系统也就成为当前研究的热点。S3C2410是SAMSUNG公司基于ARM920T处理器内核开发的一款16/32位嵌入式处理器,运行频率高达200多M,具有MMU和高速缓存等丰富片上资源,是目前基于ARM920T内核的出货量最大的一款芯片。目前嵌入式操作系统也较多,如 Tor2nado 的VxWork、微软的 Windows CE等等。大量开发人员选择的却都是Linux,这是因为它源代码开放,可以轻松修改移植到自己的目标平台系统里使用。并且事实证明,效果令人满意。两者的结合必将在嵌入式系统的世界
[单片机]
使用系统总线测量和改善嵌入式系统的性能
了解系统总线的活动情况可帮助开发工程师显著改善嵌入式应用的性能。过去,由于嵌入式处理器缺乏复杂的软硬件结合特性,因此监测系统总线的活动情况是一项挑战性难题。在系统级了解应用程序的行为对于有效利用系统资源非常关键,这些资源包括外部存储器、DMA控制器、仲裁、系统总线互连等。 Blackfin BF54x系列处理器提供性能计数器(指标寄存器),可帮助应用开发工程师在系统级别了解应用程序的行为。在掌握应用程序行为后,开发工程师可使用一些系统优化技术来提高性能和降低功耗。 在本文中,将介绍性能指标寄存器的各种配置,并提供在Blackfin处理器上利用它们的软硬件接口实例。此外,还针对一些典型的应用情形给出了提高性能的方法。 指
[嵌入式]
基于EP9312的银税类嵌入式系统硬件设计方案
1 嵌入式系统的概念与特点 嵌入式系统结合微处理器或微控制器的系统电路与其专属软件,达到系统操作效率的最高比,这里把嵌入式系统定义为一个体积较小的计算机系统(与PC机相比),由于其体积较小,因此软硬件结构和应用范围与PC机相比有较大的不同,其特性可归纳为下列四项: (1)通常执行特定功能; (2)以微电脑与外围构成核心; (3)严格的时序与稳定性要求; (4)全自动操作循环。 嵌入式系统具有目的性或针对性,其开发是围绕着产品和产品的特定功能来进行的。它必须最大限度的在硬件和软件上"量身订作"以提高效率 ,本文设计的嵌入式系统主要用于金融和税务类产品。 2 总体设计 2.1 CPU的选择 本文采用的是Cirrus L
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved