以AVR为基础的E2PROM数据动态存储策略

2020-02-13来源: eefocus关键字:AVR  E2PROM数  据动态存储策略

高可靠性、功能强、高速度、低功耗和低价位 , 一直是衡量单片机性能的重要指标,也是单片机占领市场、赖以生存的必要条件。随着单片机内部集成功能的不断增加,使用片外数据存储器的做法逐渐被含有片内可擦写存储单元的单片机所 取代。早期用户可将需要保存的数据存放在片内Flash内,但这种做法对Flash内程序代码乃至整个系统存在安全隐隐患,在片内集成独立的数据存储区成了单片机芯片设计的必然趋势。例如Atmel公司在AVR 系列单片机产品中,就融入了先进的E2PROM 电可擦除技术,使该公司的单片机具备了优秀的品质,在结构、性能和功能等方面都有明显 的优势。EEPROM (Electrically Erasable Programmable Read-OnlyMemory),电可擦可编程只读存储器,一种掉电后数据不丢失的存储芯片。EEPROM可以在电脑上或专用设备上擦除已有信息,重新编程。一般用在即插即用。但不管是将数据保存在Flash内还是保存在E2PROM内,都存在一个存储单元可擦写次数的上限。通常芯片厂家标明的是1 000 000次以上;而对于单片机系统的设计者来说,有部分保存在E2PROM内的数据在系统运行过程中是需要被频繁擦写的。当存放这些数据的片内存储单元达到擦写次数上限时,这个存储单元就不能再使用了,从而会导致系统出现故障。


EEPROM是可用户更改的只读存储器(ROM),其可通过高于普通电压的作用来擦除和重编程(重写)。不像EPROM芯片,EEPROM不需从计算机中取出即可修改。在一个EEPROM中,当计算机在使用的时候是可频繁地重编程的, EEPROM的寿命是一个很重要的设计考虑参数。EEPROM的一种特殊形式是闪存,其应用通常是个人电脑中的电压来擦写和重编程。EEPROM常用在接口卡中,用来存放硬件设置数据,也常用在防止软件非法拷贝的"硬件锁"上面。


另外,单片机内部的E2PROM空间相对于有待保存的数据量来说是有很大富余的。也就是说,当单片机由于内部 E2PROM擦写次数超过极限而不能正常工作时,片内仍然有较多的E2PROM空间没有被利用过,因而产生单片机内部资源的极大浪费。


本文以AVR系列单片机中的ATmega8(ATmega8是ATMEL公司在2002年第一季度推出的一款新型AVR高档单片机,是一款采用低功耗CMOS工艺生产的基于AVR RISC结构的8位单片机,它承袭了AT90所具有的特点,并在AT90的基础上,增加了更多的接口功能,而且在省电性能、稳定性、抗干扰性以及灵活性方面考虑得更加周全和完善)为例,从程序设计角度出发,提出一种切实可行的E2PROM数据存储策略,最大限度地提高片内E2PROM空间的利用率,从而解决上面提到的问题。


1、基本原理


由EPROM操作的不便,后来出的主板上BIOS ROM芯片大部分都采用EEPROM(Electrically Erasable Programmable ROM,电可擦除可编程ROM)。EEPROM的擦除不需要借助于其它设备,它是以电子信号来修改其内容的 ,而且是以Byte为最小修改单位,不必将资料全部洗掉才能写入,彻底摆脱了EPROM Eraser和编程器的束缚。EPROM在写入数据时,仍要利用一定的编程电压,此时,只需用厂商提供的专用刷新程序就可以轻而易举地改写内 容,所以,它属于双电压芯片。借助于EEPROM芯片的双电压特性,可以使BIOS具有良好的防毒功能,在升级时,把 跳线开关打至“ON”的位置,即给芯片加上相应的编程电压,就可以方便地升级;平时使用时,则把跳线开关打至“OFF”的位置,防止CIH类的病毒对BIOS芯片的非法修改。所以,至今仍有不少主板采用EEPROM作为BIOS芯片并作为自己主板的一大特色。


2、E2PROM数据动态存储的基本要求


一般,把数据存储方式设定为静态,即为固定的地址指定惟一的变量,任何时候读取和改写此地址内数据的操作均视为对该变量的读取和改写。然而这样的存储方式若被用于E2PROM 内的数据存储,当E2PROM 的某一单元因过量擦写而失效后,这个固定地址内所存放的变量就失去了有效的对应物理空间,这是在做E2PROM 数据存储时不愿意看到的。


解决上述问题的有效方法是对E2PROM 数据实行动态存储。其基本要求和目标是:


① 在整个系统使用寿命内,使E2PROM 空间得到最大利用;


② 系统能够辨别不能使用的E2PROM 单元,从而保障数据安全。


3、策略分析


为方便叙述,将整个E2PROM空间分为以下几个部分:统称已经分配给用户使用的地址连续的E2PROM区域为“占用块”;称未曾分配的地址连续的E2PROM区域为“可利用块”或“空闲块”。另外,为记录占用块的使用情况,还要在E2PROM内划定一个地址连续的区域作为“目录表”。这个目录表记录的是占用块中实际占用空间的地址。与此对应的,占用块中另外的部分就是废弃空间(单元) 。


采取这样的策略,在高地址的空闲块中先放入目录表。该目录表的大小决定于占用块中实际占用单元的多少,目录表记录实际占用单元的地址;占用块从低地址的空闲块开始分配,系统不再回收已经分配的占用块,一直到占用块中出现废弃单元,系统就为其把现有的占用块扩大,同时修改目录表中的相关地址信息。


在系统运行初期,如果地址信息与数据信息同类型,那么占用块和目录表所占空间大小是一样的,且目录表是一个低地址的序列。如图1所示,如果单片机内有N个E2PROM 存储单元内,则在高地址开辟一个目录表空间,记录m个实际占用单元的地址,即0,1 ,2 , …,m-1 。



当系统运行到一定时间后,占用块中的某一个单元会因为E2PROM 数据擦写次数超过限次而失效被废弃,不妨假设这个单元地址是002H,那么系统就开始查找当前目录表中所记录的最大地址值,如图2所示。这个最大地址值加1,便是为废弃单元在空闲块重新分配单元的地址,这里是(m-1)+1 = m。同时,目录表所记录的该内容的地址也做出相应修改。



可以预想的是,接着系统在一定时间后,会出现第2个废弃单元,假设这个单元地址是000H。依次类推,如图3所示,系统会为D0分配地址m+1 所指向的空间,同时目录表内原先表示D0所在的地址值会被更改为m+1 。



随着E2PROM内废弃单元的逐渐增加,空闲块的大小不断缩小。当出现新的废弃单元而没有空闲块可以利用时,系统会出现故障。采用这样的策略后,相对于首次出现废弃单元系统便被摧毁来说,实际上这个出现故障的时间已经被大大延缓了。


设Di在固定E2PROM 单元可存放的寿命为ti。这个值与系统中要求Di被修改的平均次数有关,其中i = 0,1,2, …, m - 1。




4、实现流程


图4 为实现上述策略的程序流程。



在每一次E2PROM数据存储的过程中,首先都需要从目录表中查找该数据在占用块内的地址add【i],然后将新数据D[i]写入该地址。单从算法的角度考虑,认为不存在写失败或读失败的情况,那么随后将写好的数据再读出,通过验证数据的正确性就可以判别该占用单元是不是应该废弃。如果验证通过,修改操作完成;如果验证没有通过,则废弃该地址空间,并通过查询目录表,向后开辟新的占用单元,之后重复存储过程。


5、示例


AVR单片机在片内集成了可以擦写1 000 000次的E2PROM数据存储器,用于保存系统的设定参数、固定表格和掉电后的数据保存,方便使用,减少系统的空间,又大大提高了系统的保密性。下面以AVR系列中的ATmega8为例,介绍上述的E2PROM动态存储策略的C语言程序实现。




6、结语


集成独立E2 PROM 数据存储器是单片机设计的必然发展趋势。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,对于单片机的用户来说,怎样更合理、更科学地利用好单片机的这些内部资源,是极其重要也是需要不断地探索和总结的。

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

上一篇:缺少仿真器时AVR单片机的开发方法
下一篇:ATMEGA324P的AVR看门狗使用

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

推荐阅读

AVR单片机实现对步进电机的细分控制及其应用
需求分析本方案中使用的仪表具有如下特点和设计参数:●指针响应灵敏、走位准确,即收到驱动脉冲后不能丢步;●指针转动平稳,即指针从当前位置到目标位置之间的走位要平稳,正、反转都不能出现抖动;●两相、步距角10o、转动范围300o。根据技术参数可知,采用两相四拍和两相八拍时的步距角为10o和5o,在300o的范围内只能作30和60个刻度划分,在实际应用中,会发现指针步距角不能满足要求而且抖动不可避免。为了实现指针高精度的准确走位和平稳运转,要对步进电机步距进行高分辨率细分,这也是设计的难点所在。步进电机步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载
发表于 2020-02-08
AVR单片机实现对步进电机的细分控制及其应用
有关AVR芯片后缀解释
下面是目前市面上两种常见的后缀:AVR MEGA8-16PU AVR MEGA8-16AU AVR MEGA8L-8PU AVR MEGA8L-8AU,前面黑色部分为芯片型号,后面数字一般会带有容量信息(8即是8K、16即16K)。(L)表示芯片支持低压,有效电压:3.3V-5V。(16)红色数字部分表示芯片最高工作频率,16即是0-16M,8即是0-8M。(PU)黄色:PU代表DIP直插封装,后面U表示工业级环保型。AU即TQFP帖片封装。AVR MEGA48-20PU AVR MEGA48-20AU AVR MEGA48V-10PU AVR MEGA48V-10AU前面黑色部分为芯片型号,后面数字一般会带有容量信息(48即是
发表于 2020-02-08
AVR单片机熔丝位的配置
(1)在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态, “Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed”表示熔丝状态为“0”(允许)。因此,配置熔丝位的过程实际上是 “配置熔丝位成为未编程状态“1”或成为已编程状态“0””。(2)在使用通过选择打钩“√”方式确定熔丝位状态值的编程工具软件时,请首先仔细阅读软件的使用说明,弄清楚“√”表示设置熔丝位状态为“0”还是为“1”。(3)使用CVAVR中的编程下载程序时应特别注意,由于CVAVR编程下载界面初始打开时,大部分熔丝位的初始状态定义为“1”,因此不要使用其编程菜单选项中的
发表于 2020-02-08
AVR单片机性能简介
什么是AVR单片机?AVR单片机有什么优点?为什么要选择AVR单片机?AVR单片机是ATMEL公司研制开发的一种新型单片机,它与51单片机、PIC单片机相比具有一系列的优点:1:在相同的系统时钟下AVR运行速度最快;2: 芯片内部的Flsah、EEPROM、SRAM容量较大;3:所有型号的Flash、EEPROM都可以反复烧写、全部支持在线编程烧写(ISP);4:多种频率的内部RC振荡器、上电自动复位、看门狗、启动延时等功能,零外围电路也可以工作;5:每个IO口都可以以推换驱动的方式输出高、低电平,驱动能力强;6:内部资源丰富,一般都集成AD、DA模数器;PWM;SPI、USART、TWI、I2C通信口;丰富的中断源等。目前支持
发表于 2020-02-08
AVR单片机硬件电路设计方法详解
Mega16已经内置了上电复位设计。并且在熔丝位里,可以控制复位时的额外时间,故AVR外部的复位线路在上电时,可以设计得很简单:直接拉一只10K的电阻到VCC即可 (R0)。为了可靠,再加上一只0.1uF的电容(C0)以消除干扰、杂波。D3(1N4148($0.0054))的作用有两个:作用一是将复位输入的最高电压钳在 Vcc+0.5V 左右,另一作用是系统断电时,将R0(10K)电阻短路,让C0快速放电,让下一次来电时,能产生有效的复位。当AVR在工作时,按下S0开关时,复位脚变成低电平,触发AVR芯片复位。重要说明:实际应用时,如果你不需要复位按钮,复位脚可以不接任何的零件,AVR芯片也能稳定工作。即这部分不需要任何的外围零件
发表于 2020-02-08
AVR单片机硬件电路设计方法详解
基于AVR的GSM无线智能变压器综合报警系统
一、项目概述1.1 引言本项目设计的基于AVR的GSM 无线智能变压器综合报警系统,其目的在于提供一种无线智能变压器综合报警系统,可以识别系统停电,杜绝误报的发生;可以测量变压器油温并在油温超温时报警;具有“人体非正常接近报警”功能;具备断电工作保护功能,当电源线被破坏或由于其它原因断电时,系统仍能继续工作;可以对电力变压器综合运行参数进行检测,并对故障运行状态(过流、过压、欠压等)进行预警(可选)。该装置可以用在电力系统和大型工业企业领域中,并且本系统稍加改进后,可用于各种无线报警、控制装置中。例如,可以将本装置运用在电力节能方向,如通过该系统的语音、短信功能来控制路灯的开关,实现路灯的防盗与节能。1.2 项目背景/选题动机
发表于 2020-02-08
小广播
何立民专栏 单片机及嵌入式宝典

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

更多每日新闻
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved