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

发布者:灵感之翼最新更新时间:2021-04-30 来源: eefocus关键字:嵌入式  S3C4510B 手机看文章 扫描二维码
随时随地手机看文章

系统防掉电设计的目的是:采用一种机制,使得系统在意外失去供电的情况下,可以保证系统运行状态的确定性以及记录数据的完整性;当系统供电恢复后,现场数据可以及时恢复,避免应用系统产生混乱。我们知道,在嵌入式系统设计与开发中越来越多地应用嵌入式操作系统。由于操作系统的引入,数据的读写往往是通过文件的方式完成,而不是直接对存储单元地址操作。用文件读写方式操作数据,在程序的运行过程中往往将数据暂存在易失性的存储空间,如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位嵌入式系统开学中具有典珏型代表意义。因此在嵌人式系统设计中具有推广价值。


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

上一篇:吸尘机器人控制系统电路设计
下一篇:基于ARM和POE的网络指纹门禁系统设计

推荐阅读最新更新时间:2024-11-07 02:31

一种嵌入式系统的内存分配方案
摘要:实时性、可靠性的要求,使得许多嵌入式应用使用自己的内存管理程序。本文探讨嵌入式系统中对内存管理的要求、存在的问题以及可能的解决策略;介绍一种“一次分配,多次使用”的动态内存分配方法,并给出2个例子。 关键词:嵌入式系统 内存管理 一次分配多次使用 1 嵌入式系统中对内存分配的要求 ①快速性。嵌入式系统中对实时性的保证,要求内存分配过程要尽可能地快。因此在嵌入式系统中,不可能采用通用操作系统中复杂而完善的内存分配策略,一般都采用简单、快速的内存分配方案。当然,对实性要求的程序不同,分配方案也有所不同。例如,VxWorks采用简单的最先匹配如立即聚合方法;VRTX中采用多个固定尺寸的binning方案。 ②可靠性。也就是
[应用]
全面解读 嵌入式DSP上的视频编解码
        随着数字多媒体的应用日渐广泛,视频解码在嵌入式系统设计中变成一个基本要素。视频标准有多种,依赖于产品可实施其中的一个或者多个标准。当然这不是全部,视频仅仅是多媒体码流的一部分,另外还有音频或者语音需要并行处理。因此,一个精确的处理存储或数据流的同步层是必需的。此外,视频解码本身对性能要求较高,需要不同于先前基于语音和信息应用的系统架构;这就对便携系统提出了特殊挑战,而桌面应用同样面临这些问题。 通用视频标准和编解码器         联合视频组(Joint Video Team, JVT)由ITU的视频编码专家组(Video Coding Experts Group, VCEG)和ISO/IEC运动图像专家组(M
[嵌入式]
1553B总线在嵌入式系统中的应用
作者Email: cai_yang@etang.com 1 介绍 MIL-STD-1553是为数据总线定义的军方标准。这种数据总线被用来为各种的系统之间的数据和信息的交换提供媒介,它类似“局域网或者LAN”。 1950年至60年代中,航空电子学是简单、独立的系统,航空、通信、飞行控制和显示器由模拟系统构成;信号主要由模拟电压、同-异步信号和接触式开关构成。 MIL-STD-1553总线的传输速度为每秒1M比特,字的长度为20个比特,数据有效长度为16个比特,信息量最大长度为32个字,传输方式为半双工方式,传输协议为命令/响应方式,故障容错有典型的双冗余方式,第二条总线处于热备份状态;信息格式有BC到RT、RT
[嵌入式]
数据终端设备与无线通信模块之间串行通信链路复用协议(TS27.010)在嵌入式系统上的开发
摘要:介绍3GPP提出的一种终端设备和移动台串行通信的复用协议及嵌入式Linux系统下串行通信模块的结构和功能划分,在此基础上,提出一种实现这一复用协议的方案。目前,这一设计方案已经开发成功并广泛应用于所开发的车载移动终端产品中。 关键词:TS27.010 串行链路复用 GPRS移动终端 嵌入式Linux 随着移动通信技术的迅速发展,具备无线通信功能的移动终端也迅速发展起来。这些移动终端支持普通的话音、短消息等业务,随着GPRS网络覆盖的迅速扩大,越来越多的手持/车载移动终端也开始支持GPRS上网业务。如何在一个终端设备上整合这些业务,这是许多移动终端设备开发者面对的问题。笔者在开发一款车载移动终端过程中,采用了3GPP的TS
[应用]
在线ARM仿真器知识--嵌入式系统设计师必备
   本文提供了一些关于在线 ARM 仿真器的信息,以及给作为嵌入式系统设计师的你带来的好处。根据你的需要,你将在产品开发中对开发工具作出更恰当的选择。   一、嵌入式产品的开发周期   典型的嵌入式微控制器开发项目的第一个阶段是用C编译器从源程序生成目标代码,生成的目标代码将包括物理地址和一些调试信息。目前代码可以用软件模拟器、目标Monitor或在线仿真器来执行和调试。软件模拟器是在PC机或工作站平台上,以其CPU(如x86)及其系统资源来模拟目标CPU(如P51XA),并执行用户的目标代码;而目标Monitor则是将生成的目标代码下载到用户目标板的程序存储器中,并在下载的代码中增加一个Monitor任务软件,用
[单片机]
基于嵌入式技术的智能机器人系统研究
  近年来,机器人技术的应用开始从制造业向非制造领域扩展,如宇宙探索、海底探查、管道铺设和检修、医疗、军事、服务、娱乐等,基于非结构环境、极限环境的先进机器人技术及应用研究已成为机器人技术研究和发展的主要方向。同时,随着嵌入式处理器的高度发展,嵌入式系统在体积、价格、功耗、性能、稳定性等方面表现出明显的优势。如果将嵌入式系统很好地与机器人技术融合,前景不可估量,因此,研究在嵌入式条件下的机器人技术也更有现实意义。   本设计将嵌入式技术应用于机器人系统,采用基于ARM920T核的S3C2410芯片作为主控CPU,使用实时嵌入式操作系统μC/OS-Ⅱ作为操作系统,并集成必要的中间件μC/GUI和相应的驱动程序与应用程序,构建成一
[嵌入式]
80C186XL嵌入式系统中DRAM控制器的CPLD解决方案
    摘要: 介绍怎样在嵌入式CPU 80C186XL DRAM刷新控制单元的基础上,利用CPLD技术和80C196XL的时序特征设计一个低价格、功能完整的DRAM控制器的方法,并采用VHDL语言编程实现。     关键词: 刷新控制单元(RCU) DRAM控制器 状态机 CPLD VHDL语言 80C186XL16位嵌入式微处理器 是Intel公司在嵌入式微处理器市场的上导产品之一,已广泛应用于电脑终端、程控交换和工控等领域。在该嵌入式微处理器片内,集成有DRAM RCU单元,即DRAM刷新控制单元。RCU单元可以自动产生DRAM刷新总线周期,它工作于微处理器的增益模式下。经适当编程后
[应用]
嵌入式linux软件如何进行数据参数保存
大多数软件开发都会涉及到数据参数的保存与读取,小至运行的单片机的软件,大至操作系统级别的软件(如linux,windows,mac),均会有专门的子程序或者模块进行参数的保存和读取。不同的平台下开发,参数的保存与读取会存在一定的差异化,例如,单片机下,保存参数是写入eeprom或者 rom,windows和linux下的软件则会以配置文件的形式保存参数。下面以我以前在工作中所遇到情况,重点写写嵌入式linux软件是如何进行的数据参数的保存。 一 以二进制数据保存参数。 以二进制形式保存参数是很是常见的一种方案,也是很多项目组用于保存参数的一种方案。以我们现有的软件平台中的方案为例吧。 我们的软件平台基于嵌入式linux, f
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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