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

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

3天内不再提示

基于AVR RISC结构的E2PROM数据存储策略方案研究

电子设计 来源:郭婷 作者:电子设计 2019-05-30 08:15 次阅读

目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。在一个单片机系统中,往往要求系统能够为用户保存一些参数或数值。这些数据被要求在系统断电后不会“消 失”,并在下一次开机后能够被读取和修改。

高可靠性、功能强、高速度、低功耗和低价位 , 一直是衡量单片机性能的重要指标,也是单片机占领市场、赖以生存的必要条件。随着单片机内部集成功能的不断增加,使用片外数据存储器的做法逐渐被含有片内可擦写存储单元的单片机所 取代。早期用户可将需要保存的数据存放在片内Flash内,但这种做法对Flash内程序代码乃至整个系统存在安全隐隐患,在片内集成独立的数据存储区成了单片机芯片设计的必然趋势。例如Atmel 公司在AVR 系列单片机产品中,就融入了先进的E2PROM 电可擦除技术,使该公司的单片机具备了优秀的品质,在结构、性能和功能等方面都有明显 的优势。EEPROM (Electrically Erasable Programmable Read-Only Memory),电可擦可编程只读存储器,一种掉电后数据不丢失的存储芯片。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 。

基于AVR RISC结构的E2PROM数据存储策略方案研究

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

基于AVR RISC结构的E2PROM数据存储策略方案研究

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

基于AVR RISC结构的E2PROM数据存储策略方案研究

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

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

基于AVR RISC结构的E2PROM数据存储策略方案研究

基于AVR RISC结构的E2PROM数据存储策略方案研究

4、实现流程

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

基于AVR RISC结构的E2PROM数据存储策略方案研究

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

5、示例

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

基于AVR RISC结构的E2PROM数据存储策略方案研究

基于AVR RISC结构的E2PROM数据存储策略方案研究

6、结语

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

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

    关注

    58

    文章

    5705

    浏览量

    235317
  • 单片机
    +关注

    关注

    6034

    文章

    44541

    浏览量

    634104
  • 存储器
    +关注

    关注

    38

    文章

    7470

    浏览量

    163699
收藏 人收藏

    评论

    相关推荐

    在Altera CycIone II系列FPGA中用VHDL实现E2PROM控制器的设计

    E2PROM存储存储单元的损坏主要是由频繁的写操作造成的。若要解决问题,首先耍避免对同一单元进行频繁的擦写,降低存储单元损坏的可能;其次当某些单元损坏时,读写控制器应该能够跳过这些损
    发表于 07-22 17:32 1224次阅读
    在Altera CycIone II系列FPGA中用VHDL实现<b class='flag-5'>E2PROM</b>控制器的设计

    基于Keil C的AT24C02串行E2PROM的编程

      基于Keil C的AT24C02串行E2PROM的编程AT24C02是美国Atmel公司的低功耗CMOS型E2PROM,内含256×8位存储空间,具有工作电压宽(2.5~5.5
    发表于 08-18 17:13

    ATMage16 proteus 5 内部E2PROM

    相关寄存器 :EEDR数据寄存器(用来存储要发送的或者是接受的数据)。地址寄存器EEAR:E2Prom的内部地址。EECR:控制寄存器。位0,读使能位。位1写使能位。位
    发表于 05-13 22:55

    如何在CY8C29466中将校准数据下载到e2prom

    E2PROM。但我不知道该怎么做?我已经研究了相关文件到E2PROM,AN2015。它使用一个数组来存储写入E2PROM
    发表于 12-03 11:43

    一款实用的串行E2PROM读写软件

    一款实用的串行E2PROM读写软件
    发表于 04-26 16:53 101次下载

    内置Reset WDT电路的串行E2PROM芯片资料

    内置Reset WDT 电路的串行E2PROM一概述CSI24Cxxx 是集E2PROM 存储器, 精确复位控制器和看门狗定时器三种流行功能于一体的芯片CSI24C161/162 16K CSI24C081/082 8K CSI
    发表于 07-20 18:14 35次下载

    内置Reset WDT电路的串行E2PROM原理及应用设计

    CAT24Cxxx是集E2PROM存储器, 精确复位控制器和看门狗定时器三种流行功能于一体的芯片。CAT24C161/162(16K),CAT24C081/082(8K),CAT24C041/042(4K)和CAT24C021/022(
    发表于 11-18 11:22 53次下载

    基于FPGA的可靠性E2PROM控制器设计

    E2PROM 是较常用的存储器件。但在特殊的场合,其可靠性或其使用寿命对系统的正常运行有很大影响。为此介绍了I2C 总线及E2PROM 的工作原理,提出了一种具有较高可靠性的
    发表于 01-13 15:14 15次下载

    同步串行E2PROM编程设备设计与开发

    设计了一板载同步串行E2PROM编程设备。计算机、应用软件和物理硬件构成系统体系结构,计算机与物理硬件之间采用USB总线互连,即插即用非常方便。重点介绍了物理硬件结构、客
    发表于 07-30 17:59 37次下载

    AT93C46 E2PROM存储器各引脚功能及管脚电压

    AT93C46 E2PROM存储器各引脚功能及管脚电压 概述:AT
    发表于 10-10 14:57 8074次阅读
    AT93C46 <b class='flag-5'>E2PROM</b><b class='flag-5'>存储</b>器各引脚功能及管脚电压

    E2PROM存储单元

    E2PROM存储单元
    发表于 12-04 13:03 1585次阅读

    E2PROM存储单元的三种工作状态

    E2PROM存储单元的三种工作状态
    发表于 12-04 13:04 1458次阅读

    基于SPI方式DSP外部E2PROM接口设计

    基于SPI方式DSP外部E2PROM接口设计   0 引 言   近年来,随着DSP技术的普及、高性能DSP芯片的出现,DSP已越来越多地被广大的工程师所接受,
    发表于 01-06 14:10 2013次阅读
    基于SPI方式DSP外部<b class='flag-5'>E2PROM</b>接口设计

    ARM基础应用实验_E2PROM存储

    电子专业单片机相关知识学习教材资料——ARM基础应用实验04E2PROM存储
    发表于 09-13 17:23 0次下载

    AT24C02串行CMOS E2PROM的使用资料详解

    本文档的主要内容详细介绍的是AT24C02串行CMOS E2PROM的使用资料详解。
    发表于 06-14 17:44 10次下载
    AT24C02串行CMOS <b class='flag-5'>E2PROM</b>的使用资料详解