嵌入式系统掉电保护的一种设计方法

上传人:汽*** 文档编号:497329478 上传时间:2023-07-09 格式:DOCX 页数:5 大小:115.74KB
返回 下载 相关 举报
嵌入式系统掉电保护的一种设计方法_第1页
第1页 / 共5页
嵌入式系统掉电保护的一种设计方法_第2页
第2页 / 共5页
嵌入式系统掉电保护的一种设计方法_第3页
第3页 / 共5页
嵌入式系统掉电保护的一种设计方法_第4页
第4页 / 共5页
嵌入式系统掉电保护的一种设计方法_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《嵌入式系统掉电保护的一种设计方法》由会员分享,可在线阅读,更多相关《嵌入式系统掉电保护的一种设计方法(5页珍藏版)》请在金锄头文库上搜索。

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

2、防掉电程 序的主要思路就是:产生掉电信号,捕捉掉电信号,处理掉电信号和数据以及现场状态的恢 复。如果不引入操作系统,直接对存储单元进行数据操作,每次操作的数据量小,可以利用 中断服务的方式进行掉电保护;而用文件的方式进行数据操作,数据量一般比较大,因此基 于中断服务的方式进行掉电保护已经不再可靠。本文研究的对象是基于操作系统的较为复杂 的嵌入式系统设计过程中的掉电保护。1、掉电保护方案实现的系统基础掉电保护是在由ARM体系的硬件平台和“Clinu嵌入式操作系统的基础上实现的。ARM7 系列的微处理器支持八种类型的中断处理。外部中断请求会在外部中断引脚有效 (一般是低电平),并且程序状态寄存器相

3、关位(即CPSR的I控制位)设置为允许时得到处理 器响应。响应后处理器进入中断工作模式,PC被装人中断向量0x00000018。在这个地址单 元存放中断服务程序人口地址,中断服务程序就可以被执行。在掉电保护方案中,中断服务 程序很简单,就是将表示掉电的全局变量置位即可。这样可以缩短程序执行时间。Flash存储器是一种可在系统(in system)进行电擦写,电后信息不丢失的存储器。它具有 低功耗、大容量、可整片或分扇区在系统编程(烧写)、擦除等特点,并且可由内部嵌入的算 法完成对芯片的操作,因而在各种嵌入式系统中得到了广泛的应用。作为一种非易失性存储 器。 Flash 在系统中通常用于存放程序

4、代码、常量表以及一些在系统掉电后需要保存的用户 数据等。常用的Flash为8位或16位的数据宽度,编程电压为单3.3V。与Flash存储器相 比较,SDRAM不具有掉电保持数据的特性,但其存取速度大大高于Flash存储器,且具有 读/写的属性,因此, SDRAM 在系统中主要用作程序的运行空间、数据及堆栈区。当系统 启动时, CPU 首先从复位地址 0x0 处读取启动代码,在完成系统的初始化后,程序代码一 般应调入 SDRAM 中运行,以提高系统的运行速度,同时,系统及用户堆栈、运行数据也 都放在SDRAM中。SDRAM的存储单元可以理解为一个电容,总是倾向于放电,为避免数 据丢失,必须定时刷

5、新(充电)。因此,要在系统中使用SDRAM,就要求微处理器具有刷新 控制逻辑,或在系统中另外加入刷新控制逻辑电路,特别的情况是在系统失电后,要采取一 种有效的机制确保将sDRAM中的数据写入F1ash中。2、基于掉电保护方案的硬件设计图1是一种典型的嵌入式系统硬件设计方案。系统的微处理器采用S3c4510B,是基于 ARM7体系结构的。SDRAM是一种易失性存储器作为程序的运行空间,类似于PC机的内 存;Flash作为程序存储空间是非易失性的。程序运行过程中的数据往往缓存在sDRAM中, 在系统失电时必须写往Flash。图1典型的嵌入式系统硬件设计方案在系统中,需要使用5V和3.3V的直流稳压

6、电源。其中,S3C4510B及部分外围器件需 3.3V电源,另外部分器件需5V电源。为简化系统电源电路的设计,要求整个系统的输入电 压为高质量的5V的直流稳压电源。有别于一般的电源回路设计,本系统的电源回路设计过 程中增加了有关掉电保护的设计。包含这个设计的系统电源电路如图2所示。RESET! |-VSSCON2MAX 309C2 C3DI OJtLF 4.7F/2.7V i”C5D2C44.7T/2.7VLT10S5CT-33T T2F SWViriQ ViutN耳2图2电源电路原理这个电源回路除了可以提供5v和3.3v的电源以外,还为系统掉电保护提供了延时及预 警功能,通过软件的配合可以实

7、现系统的掉电保护机制。正常情况下,由供电回路1给整个 系统供电。当系统由于意外原因掉电时,由于输入的比较电压降低,这样MAX809模块输 出电压产生翻转为系统提供掉电中断预警信号,中断请求通过外部中断引脚XREQ0产生; 同时供电回路2开始启用。通过大电容C3、c4放电,继续为系统提供一段供电电压,支持 掉电中断服务程序完成。供电回路2只给最小系统供电,并不给耗电量大的外围部件供电。 这样,给最小系统的供电时间足够长,可以完成敏感数据的保护操作。通过软件测算,电容放电可供最小系统工作时间在0.54.5S之间。这种测算方法很简 单编写一个掉电中断服务子程序,这个程序只是不断进行时间刷新操作。同样

8、,可以通过 软件测定在这段时间里向Flash擦写23MB。可见,在采用这种硬件体制的情况下,系统 掉电保护能够得到可靠的保证。3、掉电信号处理软件方法的实现在卩Clinux系统下,掉电信号的捕捉有两种方式可以进行。一种是运用系统调用,即采 用void(*signal(intslg, void(*func)(int)(int)。这个函数可以为特定的中断信号安排制订的执 行函数,用参数func传递。在卩Cllnux中,共有31个系统中断信号,其中掉电信号为SIGPWR。 假设掉电中断服务处理程序为void interrupt-service(int),贝V中断服务与信号关联的方式 为:signal

9、(SIGPWR, interrupt_service)。这种方式充分利用系统调用,实现简单。在掉电保护 方案设计初期也是采用这种机制。但事实证明这种机制并不可靠,其原因是Linux内核产生 和管理信号的机制并不完善,有可能存在信号丢失。查阅有关Unix或Linux的相关资料, 可以发现这种状况也普遍存在于某些其他版本的Linux和Unix中。另一种方式是采用守候进程的方式,开通一个进程,此进程专门等待中断信号。主程序 根据数据操作对象的不同,将自己的流程方案划分成若干原子操作,所谓原子操作即划定的 程序块要么完全执行,要么不执行。每个操作对应惟一状态标志。在每个原子操作前,主进 程都将会通过管

10、道通信的方式阅读中断信号。如果中断信号产生,主进程首先保存状态标志, 然后将相关数据写往Flash后退出,电源恢复后,主进程首先根据标志字确定系统恢复方案。 图3用流程图的方式实现这一过程。图3利用守候进程方式捕捉掉电信号 下面是实现这一过程的程序片断:丽pid_pwrt / *存放子进戦编V * /mi pipe_pwr 1 ; / *程逍文件描述数纽* /chdr bufferBUFFERSIZE;char signal_fAiL=卩ower failed,1:/ *戯道刨建*/if(pipe(pipe_pwr)err_exit(u Great pipe failed . rT);创建读t

11、s葩信号子进程*/if( (pid_pwr = vfo-rk()I0)err_cKhCuFork failed. nM) t-八这个订分支是读掉电信vra程*/eke if(pid_pwr = = 0) tlusef pipc_p 啊0whilc( 1) / * gCt_pwr_interruptO判惭有无掉电信号*/if( fiet_pw r_in.terrupl( ) 3 =0)/”通过管逍向上进程写信号*/ wr4te(f)if-ic-_|jwr IJ tsignaLhilrlen.sinaLfail) ) t/ *这是父进程处理应用程序* /else rloseCpip*?_pwr_l)t;iBr曽主程序在毎牛齟子操件的读掉电信v */r?ad( pipe_pwrEth t buffer liUFFERSrZE):/* 掉足悟号*/hiiffer *siKnal_fail) = -=03 / *保存肖前樫序状态*/slore_staws();tore_data );err-txLtC/power faiL nM)结语基于该方案设计的税控收款机在实际运行过程中,掉电保护功能完备。此掉电保护设计 方法应用对象基于ARM和“Clinu构建的嵌入式系统,在32位嵌入式系统开学中具有典珏 型代表意义。因此在嵌人式系统设计中具有推广价值。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号