一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于模拟eeprom的数据写入、读取及管理方法与流程

2022-07-16 23:01:34 来源:中国专利 TAG:


1.本发明涉及嵌入式软件技术领域,具体涉及一种基于模拟eeprom的数据写入、读取及管理方法。


背景技术:

2.在嵌入式应用的很多场合,一些关键数据需要长久保存并且可能频繁的更改。在嵌入式开发中,在很多产品的场景中都使用电可擦除可编程只读存储器(electrically erasable programmable read-only memory,eeprom)来存储应用中需要保存的非易失性数据。
3.现有技术中一般通过flash组成eeprom,将内置flash划分成多个“页”,并在flash中为每一页寻找额外的空间来存储地址和状态信息。向eeprom写入数据时,数据会写入到当前活跃“页”的某一地址,同时将地址和状态信息写入到另一快特定区域;读eeprom时,先读取地址及状态信息,再根据获取的信息定位到“页”的对应地址;当前“页”写满时,需依次读出本“页”存储的值,选定下一工作“页”后,将数据拷贝到下一工作“页”。上述技术受限于flash的位宽,实现方法较为复杂,需要在flash中单独划分区一块区域用于存储地址和状态信息。读取eeprom时,首先需要进行复杂的寻址才能找到flash中对应的存储位置,因而读取eeprom需要花费多个时钟周期。为了解决上述技术方案存在的读取eeprom周期过长的技术问题,现有技术中提出了通过非易失性存储器(non-volatile memory, nvm)和随机存取存储器(random access memory,ram)组成eeprom的技术方案,nvm内部被划分成多个扇区,但仅有一个扇区是处于工作状态。每一个扇区中又单独划分出一块区域用于存储该扇区的状态标签(包括擦除计数器、失效标签和注销标签)。数据写入到eeprom系统时,首先会存储到ram中,与此同时ram的地址和数据信息会存储到nvm的工作扇区;读取eeprom时,数据直接来源于ram;掉电后由于nvm中保存的数据不会丢失,nvm中存储的数据又会同步到ram中。
4.上述技术方案存在以下问题:需要单独划分出一块区域存储状态标签,数据管理机制复杂。因此,急需提供一种基于模拟eeprom的数据写入、读取及管理方法,解决现有技术中eeprom的数据管理机制复杂的技术问题。。


技术实现要素:

5.有鉴于此,有必要提供一种基于模拟eeprom的数据写入、读取及管理方法,用以解决现有技术中存在的eeprom的数据管理机制复杂的技术问题。
6.为了解决上述技术问题,本发明提供了一种基于模拟eeprom的数据写入方法,所述模拟eeprom包括静态随机存取存储器以及闪存,所述闪存包括至少两个存储组,所述至少两个存储组包括第一存储组和第二存储组;所述基于模拟eeprom的数据写入方法包括:将待写入数据写入至所述静态随机存取存储器的目标地址;将所述待写入数据以预设写入顺序写入至所述第一存储组,并判断所述第一存储
组是否为存满状态;当所述第一存储组为存满状态时,将所述待写入数据以预设写入顺序写入至所述第二存储组,并清除所述第一存储组中的所述待写入数据。
7.在一些可能的实现方式中,基于模拟eeprom的数据写入方法还包括:将所述待写入数据、所述目标地址以及附加信息进行打包,生成待校验数据包,所述附加信息包括有效标志位。
8.在一些可能的实现方式中,基于模拟eeprom的数据写入方法还包括:基于所述有效标志位判断所述待校验数据包是否有效;当所述待校验数据包有效时,将所述待校验数据包以预设写入顺序写入至所述第一存储组,并判断所述第一存储组是否为存满状态;当所述第一存储组为存满状态时,将所述待写入数据、所述目标地址以及附加信息重新打包,生成重组数据包;将所述重组数据包以所述预设写入顺序写入至所述第二存储组,并清除所述第一存储组中的所述待校验数据包。
9.在一些可能的实现方式中,所述至少两个存储组包括首存储组、至少一个中间存储组以及尾存储组;当所述第一存储组为所述首存储组或所述中间存储组时,所述第二存储组为与所述第一存储组相邻的下一存储组;当所述第一存储组为所述尾存储组时,所述第二存储组为所述首存储组。
10.另一方面,本发明还提供了一种基于模拟eeprom的数据读取方法,所述模拟eeprom包括静态随机存取存储器以及闪存,所述闪存包括多个存储组,每一所述存储组包括首行、多个中间行和尾行,所述首行和中间行用于存储待读取数据;所述基于模拟eeprom的数据读取方法包括:依次读取每一所述存储组的首行和尾行,并通过预设的信息包标记位判断所述首行和所述尾行是否均有效;当所述首行和所述尾行均有效时,以预设读取顺序读取所述待读取数据。
11.在一些可能的实现方式中,所述首行和中间行还用于存储地址信息,所述以预设读取顺序读取所述待读取数据,包括:基于所述地址信息确定所述静态随机存取存储器的目标地址,并将所述待读取数据读取至所述目标地址;从所述静态随机存取存储器的目标地址中读取所述待读取数据。
12.在一些可能的实现方式中,所述基于所述地址信息确定所述静态随机存取存储器的目标地址,包括:基于所述信息包标记位判断所述待读取数据是否为有效数据;当所述待读取数据为所述有效数据时,基于所述地址信息确定所述静态随机存取存储器的目标地址。
13.在一些可能的实现方式中,所述将所述待读取数据读取至所述目标地址中,包括:检测所述待读取数据中出错的比特位数;当出错的比特位数大于阈值比特位数时,生成出错状态信息,并将所述出错状态信息以及所述待读取数据对应的闪存地址保存至寄存器中;当出错的比特位数小于或等于阈值比特位数时,基于所述误差校验码运算纠正出
错的比特位,生成已纠正数据,并将所述已纠正数据写入至所述目标地址。
14.在一些可能的实现方式中,所述静态随机存取存储器包括功能标志位;所述从所述静态随机存取存储器的目标地址中读取所述待读取数据,包括:基于所述功能标志位判断所述待读取数据是否为eeprom数据;当所述待读取数据为eeprom数据时,从所述目标地址中读取所述待读取数据。
15.另一方面,本发明还提供一种基于模拟eeprom的数据管理方法,包括:根据基于模拟eeprom的数据写入方法写入eeprom数据;根据基于模拟eeprom的数据读取方法读取所述eeprom数据;其中,所述基于模拟eeprom的数据写入方法为上述任意一种可能的实现方式中所述的基于模拟eeprom的数据写入方法中的步骤,所述基于模拟eeprom的数据读取方法为上述任意一种可能的实现方式中所述的基于模拟eeprom的数据读取方法中的步骤。
16.另一方面,本发明还提供了一种基于模拟eeprom的数据管理系统,包括:处理器、闪存以及静态随机存取存储器,所述闪存包括多个存储组;所述处理器用于执行上述任意一种可能的实现方式中所述的基于模拟eeprom的数据写入方法,和/或,上述任意一种可能的实现方式中所述的基于模拟eeprom的数据读取方法。
17.采用上述实施例的有益效果是:本发明提供的基于模拟eeprom的数据写入方法,闪存包括第一存储组和第二存储组,在数据写入过程中,无需单独划分出一块区域用于数据替换或存储状态信息,只需将待写入数据以预设写入顺序写入至第一存储组,或当第一存储组为存满状态时,将待写入数据以预设写入数据写入至第二存储组,并清除第一存储组中的待写入数据根,降低了数据管理机制的复杂度,提高了数据管理机制的灵活性和易实现性。
附图说明
18.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.图1为本发明提供的模拟eeprom的一个实施例结构示意图;图2为本发明提供的基于模拟eeprom的数据写入方法的一个实施例流程示意图;图3为本发明提供的闪存的一个实施例结构示意图;图4为本发明图2中的202的一个实施例流程示意图;图5为本发明提供的待校验数据包的数据格式的一个实施例结构示意图;图6为本发明提供的基于模拟eeprom的数据读取方法的一个实施例流程示意图;图7为本发明图6中s602的一个实施例流程示意图;图8为本发明图7中s701的一个实施例流程示意图图9为本发明提供的读取待读取数据的一个实施例结构示意图;图10为本发明图7中的s701的另一个实施例流程示意图;图11为本发明图7中的s702的一个实施例流程示意图;
图12为本发明提供的基于模拟eeprom的数据管理方法的一个实施例流程示意图;图13为本发明提供的基于模拟eeprom的数据管理系统的一个实施例结构示意图。
具体实施方式
20.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
21.在本技术实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
22.应当理解,示意性的附图并未按实物比例绘制。本发明中使用的流程图示出了根据本发明的一些实施例实现的操作。应当理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本发明内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
23.附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器系统和/或微控制器系统中实现这些功能实体。
24.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
25.本发明提供了一种基于模拟eeprom的数据写入、读取及管理方法,以下分别进行说明。
26.图1为本发明提供的模拟eeprom的一个实施例结构示意图,图2为本发明提供的基于模拟eeprom的数据写入方法的一个实施例流程示意图,图3为本发明提供的闪存的一个实施例结构示意图,如图1-图3所示,模拟eeprom100包括静态随机存取存储器110以及闪存120,闪存120包括多个存储组121,多个存储组121包括第一存储组group[i]和第二存储组group[i 1];基于模拟eeprom的数据写入方法包括:s201、将待写入数据写入至静态随机存取存储器110的目标地址;s202、将待写入数据以预设写入顺序写入至第一存储组group[i],并判断第一存储组group[i]是否为存满状态;当第一存储组group[i]为存满状态时,将待写入数据以预设写入顺序写入至第二存储组group[i 1],并清除第一存储组group[i]中的待写入数据。
[0027]
与现有技术相比,本发明实施例提供的基于模拟eeprom的数据写入方法,通过设置闪存包括第一存储组group[i]和第二存储组group[i 1],在数据写入过程中,无需单独划分出一块区域用于数据替换或存储状态信息,只需将待写入数据以预设写入顺序写入至第一存储组group[i],或当第一存储组group[i]为存满状态时,将待写入数据以预设写入数据写入至第二存储组group[i 1],并清除第一存储组group[i]中的待写入数据根,降低了数据管理机制的复杂度,提高了数据管理机制的灵活性和易实现性。
[0028]
为了提高静态随机存取存储器110的利用率,静态随机存取存储器110既可作为模
拟eeprom100的接口用于缓存eeprom数据,也可当做普通的sram用于存储其他数据,为了避免将静态随机存取存储器110中存储的其他数据写入至闪存120,导致闪存120中存储的并不是eeprom数据,进而造成模拟eeprom100存储数据出错的技术问题,在本发明的一些实施例中,基于模拟eeprom的数据写入方法还包括:将待写入数据、目标地址以及附加信息打包为待校验数据包,附加信息包括有效标志位。
[0029]
本发明实施例通过基于有效标志位可对待校验数据包的有效性进行判断,可提高写入至闪存120的数据的可靠性。
[0030]
需要说明的是:附加信息为在待写入数据和目标地址的基础上额外附加的信息,其可根据实际需求进行调整。其中,附加信息除了有效校验位,还可包括写入时间信息等,在此不做一一赘述。
[0031]
还需要说明的是:应当在静态随机存取存储器110的原有位宽上额外增加一位比特位,将其作为有效标志位。
[0032]
应当理解的是:由于静态随机存取存储器110有两种用途,因而在功能切换后静态随机存取存储器110中的数据首先会被自动清零。
[0033]
在本发明的一些实施例中,如图4所示,基于模拟eeprom的数据写入方法还包括:s401、基于有效标志位判断待校验数据包是否有效;s402、当待校验数据包有效时,将待校验数据包以预设写入顺序写入至第一存储组group[i],并判断第一存储组group[i]是否为存满状态;s403、当第一存储组group[i]为存满状态时,将待写入数据、目标地址以及附加信息重新打包,生成重组数据包;s404、将重组数据包以预设写入顺序写入至第二存储组group[i 1],并清除第一存储组group[i]中的待校验数据包。
[0034]
在本发明的一个具体实施例中,静态随机存取存储器110的原有位宽为32为,则静态随机存取存储器110的需增加第33位,即bit[32]用作有效标志位,当bit[32]=0时,待校验数据包无效,即:存储的是用作普通的sram存储的其他数据;当bit[32]=1时,待校验数据包有效,即:存储的是用作eeprom存储的eeprom数据。
[0035]
具体地,如图3所示,当第一存储组group[i]全部存满(阴影面积)时,将待写入数据、目标地址以及附加信息重新打包,生成重组数据包,将重组数据包以预设写入顺序写入至第二存储组group[i 1],重组数据包在第二存储组group[i 1]中占用的空间为第二存储组group[i 1]中的阴影区域。
[0036]
需要说明的是:预设写入顺序为自上而下。
[0037]
还需要说明的是,存储组121包括首存储组、至少一个中间存储组以及尾存储组;当第一存储组group[i]为首存储组或中间存储组时,第二存储组group[i 1]为与第一存储组相邻的下一存储组;当第一存储组group[i]为尾存储组时,第二存储组group[i 1]为首存储组。
[0038]
本发明实施例中保持存储组121间循环工作的机制以及自上而下的写入原则,保证了数据写入的规律性,降低了设计难度,提高了数据写入机制的易实现性。
[0039]
进一步地,本发明实施例通过设置循环工作机制,可保证只有一个存储组121在工
作。完成一次循环时,闪存120中所有的地址仅使用过一次,因而闪存120的使用寿命被显著提高。并且,由于流程上保证了内部只有一个存储组121在工作,所以待校验数据包在闪存120内部非常容易定位,待校验数据包从闪存120中回填到静态随机存取存储器110时就非常高效。
[0040]
应当理解的是:由于将待校验数据包写入至闪存120中至少需要消耗几十微秒,因而待校验数据包写入到闪存120的过程中需要外界反馈busy标志,表示模拟eeprom100当前处于忙碌状态,无法将其他数据写入至eeprom100,只有当第一存储组group[i]中的待校验数据包被清除后,才会清除busy标志,用户需要等busy标志结束后才能继续向eeprom100写入数据。
[0041]
由于eeprom在使用过程中可能会面临着高温、高压和强电磁干扰等环境,这些外部因素可能会导致闪存120中存储的数据发生“突变”,导致数据出错。为了解决这一技术问题,在本发明的一些实施例中,基于模拟eeprom的数据写入方法还包括:将待校验数据包进行误差校验码运算(error correcting code ,ecc)。
[0042]
具体地,ecc是通过增加额外的比特位来进行误差校验。ecc能够容许错误,并可以将错误更正,因此,将待校验数据包进行误差校验码运算,可提高待校验数据包的正确性。
[0043]
在本发明的一些实施例中,存储组121的深度大于或等于静态随机存取存储器110的深度。
[0044]
这是由于:必须保证每个存储组121有足够的空间能与静态随机存取存储器110的地址一一对应,且为了避免存储组121不停的执行存储组121间的替换操作,存储组121还需有富余的空间。因此,存储组121的深度大于静态随机存取存储器110的深度。
[0045]
在本发明的具体实施例中,存储组121的深度为静态随机存取存储器110的深度的两倍。其中,存储组121的深度为16,静态随机存取存储器110的深度为8。
[0046]
并且,由于只有当第一存储组group[i]中的待校验数据包被清除后,才能继续向eeprom100写入数据,而擦除第一存储组group[i]中的待校验数据包需要花费的时间比较长(毫秒级别),当存储组121的深度过大时,会造成擦除第一存储组group[i]中的待校验数据包需要花费的时间变长,导致模拟eeprom100的数据写入效率降低。因此,存储组121的深度不宜过大。
[0047]
具体地:存储组121和深度应当根据闪存120的总空间以及所需要的写入待校验数据包的频率进行调整,在此不做具体赘述。
[0048]
进一步地,在本发明的一些实施例中,存储组121的最后一行用于存储闪存120的擦写次数。
[0049]
通过存储闪存120的擦写次数,可供用户根据存储的擦写次数了解模拟eeprom100的剩余使命寿命,便于及时更换模拟eeprom100,提高写入待校验数据包的可靠性。
[0050]
在本发明的具体实施例中,如图5所示,待校验数据包存储在闪存120中的数据格式为:待校验数据包的位宽为72位,bit[31:00]用于存储待写入数据(data);bit[63:32]用于存储目标地址(sram addr)以及信息包标志位(valid);bit[71:64]用于存储经过误差校验码运算的误差校验值(ecc)。
[0051]
每个存储组的最后一行的格式与待校验数据包存储在闪存120中的数据格式基本一致,bit[31:00]用于存储模拟eeprom100的擦写次数。
[0052]
应当理解的是:模拟eeprom100的擦写次数并不等同于存储组121的擦写次数,而是所有的存储组121都使用一遍后模拟eeprom100才算使用了一次。
[0053]
另一方面,为了解决现有技术中存在的数据读取效率较低的技术问题,本发明实施例还提供了一种基于模拟eeprom的数据读取方法,如图3所示,每一存储组121包括首行1211、至少一个中间行1212和尾行1213,首行1211和中间行1212用于存储待读取数据;则如图6所示,基于模拟eeprom的数据读取方法包括:s601、依次读取每一存储组121的首行1211和尾行1213,并通过预设的信息包标记位判断首行1211和尾行1213是否均有效;s602、当首行1211和尾行1213均有效时,以预设读取顺序读取待读取数据。
[0054]
本发明实施例提供的基于模拟eeprom的数据读取方法,用户读取数据时,待读取数据直接来源于静态随机存取存储器110,无需在闪存120中查找待读取数据,从静态随机存取存储器110中读取数据只需要一个时钟周期,大大提高了数据读取效率。
[0055]
需要说明的是:预设读取顺序为自上而下的顺序。
[0056]
在本发明的一些实施例中,首行1211和中间行1212用于存储地址信息,则如图7所示,步骤s602包括:s701、基于地址信息确定静态随机存取存储器110的目标地址,并将待读取数据读取至目标地址;s702、从静态随机存取存储器110的目标地址中读取待读取数据。
[0057]
在本发明的一些实施例中,如图8所示,步骤s701包括:s801、基于信息包标记位判断待读取数据是否为有效数据包;s802、当待读取数据为有效数据时,基于地址信息确定静态随机存取存储器110的目标地址。
[0058]
进一步地,本发明实施例通过信息包标记位判断待读取数据是否为有效数据;当待读取数据为有效数据包时,才会将待读取数据存储至静态随机存取存储器110,供用户读取,确保了待读取数据的可靠性。
[0059]
在本发明的具体实施例中,信息包标记位为待读取数据的第48位到第63位,即:bit[63:48],当首行1211和尾行1213的bit[63:48]=16’ha5cd时,首行1211和尾行1213才均有效。
[0060]
在本发明的一些实施例中,步骤s602具体为:以自上而下的原则依次往下读取,直到读出来的行无效(bit[63:48]=16’hffff)才停止读取。如果读出来的信息包标记位既不等于16’hffff也不等于16’ha5cd,则该待读取数据将丢弃。
[0061]
本发明实施例通过设置以自上而下的原则依次向下读取,可确保读取的数据最新数据。例如:如图9所示,group[1]中第0行和第10行都对应静态随机存取存储器110的0地址,但第10行的数据必然是最后一次写入的,因而0x1a会覆盖0x0a写入到静态随机存取存储器110的0地址。
[0062]
进一步地,为了避免待读取数据包在写入至静态随机存取存储器110的过程出出现错误,导致用户读取的数据出现错误,在本发明的一些实施例中,如图10所示,步骤s701包括:s1001、检测待读取数据中出错的比特位数;
s1002、当出错的比特位数大于阈值比特位数时,生成出错状态信息,并将出错状态信息以及待读取数据对应的闪存地址保存至寄存器中;s1003、当出错的比特位数小于或等于阈值比特位数时,基于误差校验码运算纠正出错的比特位,生成已纠正数据,并将已纠正数据写入至目标地址。
[0063]
本发明实施例通过在将待读取数据写入至目标地址的过程中对待读取数据进行纠错码检测,可进一步确保写入至目标地址的数据的可靠性。并且,当写入至目标地址的过程中待读取数据出错时,也可通过保存至寄存器中的闪存地址获知出错的具体位置,便于用户定位。
[0064]
为了提高静态随机存取存储器110的利用率,静态随机存取存储器110既可作为模拟eeprom的接口用于缓存eeprom数据,也可当做普通的sram用于存储其他数据,为了避免将静态随机存取存储器110中存储的其他数据当做eeprom数据读取,导致读取的数据有误,在本发明的一些实施例中,静态随机存取存储器包括功能标志位;如图11所示,步骤s702包括:s1101、基于功能标志位判断待读取数据是否为eeprom数据;s1102、当待读取数据为eeprom数据时,从目标地址中读取待读取数据。
[0065]
其中,在本发明的具体实施例中,静态随机存取存储器110的位宽为33位,第33位,即bit[32]用作功能标志位,当bit[32]=0时,待读取数据不是eeprom数据;当bit[32]=1时,待读取数据是eeprom数据。
[0066]
本发明实施例通过功能标志位对待读取数据进行进一步验证,可进一步确保读取的待读取数据的可靠性。
[0067]
另一方面,本发明实施例还提供了一种基于模拟eeprom的数据管理方法,如图12所示,基于模拟eeprom的数据管理方法包括:s1201、根据基于模拟eeprom的数据写入方法写入eeprom数据;s1202、根据基于模拟eeprom的数据读取方法读取所述eeprom数据;其中,基于模拟eeprom的数据写入方法为上述基于模拟eeprom的数据写入方法实施例中任意一个实施例中的基于模拟eeprom的数据写入方法中的步骤,基于模拟eeprom的数据读取方法为上述基于模拟eeprom的数据读取方法实施例中任意一个实施例中的基于模拟eeprom的数据读取方法中的步骤。
[0068]
为了更好实施本发明实施例中的基于模拟eeprom的数据管理方法,在基于模拟eeprom的数据管理方法基础之上,对应的,如图1和13所示,本发明实施例还提供了一种基于模拟eeprom的数据管理系统1300,数据管理系统1300包括:处理器1301、闪存120以及静态随机存取存储器110,闪存120包括多个存储组121;处理器1301用于执行上述基于模拟eeprom的数据写入方法实施例中任意一个实施例中的基于模拟eeprom的数据写入方法,和/或,上述基于模拟eeprom的数据读取方法实施例中任意一个实施例中的基于模拟eeprom的数据读取方法中的步骤。
[0069]
本领域技术人员可以理解,实现上述实施例方法的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于计算机可读存储介质中。其中,计算机可读存储介质为磁盘、光盘、只读存储记忆体或随机存储记忆体等。
[0070]
以上对本发明所提供的基于模拟eeprom的数据写入、读取及管理方法进行了详细
介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献