0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

电子设计 来源:网络整理 作者:工程师1 2018-04-18 16:09 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式系统设计过程中,系统的掉电保护越来越受到重视。本文介绍的方法是在用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位嵌入式系统开学中具有典珏型代表意义。因此在嵌人式系统设计中具有推广价值。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5209

    文章

    20650

    浏览量

    336935
  • ARM7
    +关注

    关注

    3

    文章

    207

    浏览量

    51994
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    知识分享-嵌入式系统可靠性模型

    嵌入式系统可靠性设计技术及案例解析1.3嵌入式系统可靠性模型嵌入式系统可靠性模型分为两种:串联结
    的头像 发表于 03-11 16:43 386次阅读
    知识分享-<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>可靠性模型

    嵌入式系统安全设计原则

    随着物联网、工业控制和智能设备的普及,嵌入式系统的安全问题越来越突出。一个小小的漏洞,就可能导致设备被入侵、数据泄露,甚至对人身安全产生威胁。因此,从设计阶段开始就考虑安全,是每一个嵌入式开发者必须
    的头像 发表于 01-19 09:06 472次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>安全设计原则

    什么是嵌入式应用开发?

    概述 所谓的嵌入式应用开发就是在嵌入式操作系统下进行开发、软硬件综合开发 ‌嵌入式应用开发‌是指在嵌入式操作
    发表于 01-12 16:13

    系统嵌入式的学习路线

    嵌入式技术是各种电子产品的核心技术,也是工业4.0、远程医疗、3D打印等新兴产业的核心技术,具有广阔的发展前景。很多计算机、电子信息类专业的学生都想把嵌入式开发作为自己的职业目标,但是因为嵌入式涉及
    发表于 12-16 07:49

    什么是嵌入式操作系统

    要理解嵌入式操作系统(Embedded Operating System,简称 RTOS/EOS),我们可以从本质定义→核心区别→实际作用→典型特征→嵌入式开发场景适配,五个维度来拆解, 一
    发表于 12-09 10:33

    分享一个嵌入式开发学习路线

    如果你想要学习嵌入式开发,我建议按照这个学习路线准备: 1. 基础铺垫期(1-2个月) 理解嵌入式系统的“硬件基础”和“编程入门”,能看懂简单电路,写出基础C语言代码。这一阶段的学习对学历没有
    发表于 12-04 11:01

    嵌入式系统的定义和应用领域

    嵌入式系统,简而言之,就是一种专为特定设备或装置设计的计算机系统。它们通常配备一个嵌入式处理器,其控制程序被存储在ROM中。这些系统在许多日
    发表于 11-17 06:49

    嵌入式实时操作系统的特点

    实时嵌入式操作系统(Real-Time Embedded Operating System)是专门设计用于嵌入式系统的实时操作系统
    发表于 11-13 06:30

    如何采用SAFERTOS和ESM保护嵌入式系统安全

    信任根的重要组成部分是实时操作系统(RTOS),它为应用程序的运行提供了一个安全的平台。嵌入式系统的具体安全要求取决于其架构以及所面临的威胁。在本博客中,我们将探讨RTOS的安全性,以SAFERTOS及其增强安全模块(ESM)作
    的头像 发表于 10-24 15:51 1624次阅读

    嵌入式达到什么水平才能就业?

    (三)实战经验拥有2-3 个完整嵌入式项目经验:项目需包含需求分析、方案设计、代码开发、测试优化全流程,能清晰阐述项目难点与解决方案能独立排查项目中的软硬联调问题:比如通过示波器查看信号波形定位
    发表于 09-15 10:20

    【深度解析】硬件电路设计:如何确保嵌入式数据可靠性?

    嵌入式系统开发中,硬件电路设计是确保数据可靠性的关键环节。本期我们将重点探讨硬件设计中的两个重要方面:数据读写保护掉电保护。硬件电路设计在
    的头像 发表于 07-30 11:35 862次阅读
    【深度解析】硬件电路设计:如何确保<b class='flag-5'>嵌入式</b>数据可靠性?

    工业级SSD为什么需要掉电保护?天硕工业级SSD固态硬盘告诉你答案

    在工业控制和嵌入式系统中,电源波动或突发断电是常见问题。这种情况下,如果SSD正在写入数据,很可能导致数据丢失或文件系统损坏,甚至引发系统宕机。天硕(TOPSSD)G40工业级固态硬盘
    的头像 发表于 07-09 17:05 988次阅读

    Linux嵌入式和单片机嵌入式的区别?

    Linux嵌入式与单片机嵌入式在多个方面存在显著的区别,以下是详细的比较和归纳: 一、基本概念 1. Linux嵌入式: 定义:将Linux操作系统运行在
    发表于 06-20 09:46

    运行在嵌入式系统上的emApps

    在当今快节奏的嵌入式系统世界中,灵活性和适应性是嵌入式系统实现的关键。SEGGER推出了其最新创新:Embedded apps(emApps)应用,类似于手机上的应用程序,可以运行在
    的头像 发表于 06-18 09:53 1062次阅读
    运行在<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>上的emApps

    嵌入式开发入门指南:从零开始学习嵌入式

    随着物联网、智能硬件的发展,嵌入式开发成为热门技能之一。以下将为初学者提供一份详细的嵌入式开发入门指南,涵盖学习路径、必备工具、推荐资源等内容。 1. 嵌入式系统的定义与应用
    发表于 05-15 09:29