在电可擦写可编程只读存储器中存储数据的方法及装置的制作方法

文档序号:6463388阅读:251来源:国知局
专利名称:在电可擦写可编程只读存储器中存储数据的方法及装置的制作方法
技术领域
本发明涉及数据存储技术,尤其是指一种在电可擦写可编程只读存储器 中存储数据的方法及装置。
背景技术
在现有4支术中,电可擦写可编程只读存储器(EEPROM, Electrically Erasable Programmable Read-Only Memory)是一种具有电编程和电擦除能力的存储器。 使用该存储器,即使在掉电期间也可保留所存储的数据,因此EEPROM得到了 越来越广泛的应用。
在EEPROM中,可将数组数据保存在各个数据单元中。但是,在现有的技 术方案中,当向EEPROM中存储数组数据时,如果一个数据单元已被某一个数 组数据占用(即该数据单元中已经存储了某一个数组数据),则即使该数据单元 中仍有剩余的存储空间,该剩余的存储空间也不再用于存储其他的数组数据, 从而较大地浪费了 EEPROM的存储空间,导致EEPROM的利用率不高,增加 了使用EEPROM的成本。

发明内容
有鉴于此,本发明实施例的主要目的在于提供一种在EEPROM中存储数据 的方法及装置,从而节省了 EEPROM的存储空间,提高了 EEPROM的利用率。 为达到上述目的,本发明实施例中的技术方案是这样实现的 一种在电可擦写可编程只读存储器中存储数据的方法,该方法包括 A、将所需保存的数据集合中长度最长的数据子集分配给电可擦写可编程 只读存储器中的至少一个连续的数据单元,将最后一个被分配的数据单元作为 当前数据单元;B、 当有至少一个未被分配的数据子集的长度小于或等于当前数据单元的 剩余长度时,将长度小于或等于当前数据单元的剩佘长度且长度最长的未被分 配的数据子集分配给当前数据单元,计算当前数据单元的剩余长度,返回执行
步骤B;
C、 根据分配情况将已被分配的数据子集存储到所分配的数据单元中。 本发明的实施例中还提供了 一种在电可擦写可编程只读存储器中存储数据
的装置,该装置包括緩存模块、长度检测模块、数据排序模块、数据分配模 块和数据保存模块;
所述緩存模块,用于緩存需存储到电可擦写可编程只读存储器中的数据, 将所緩存的数据划分为至少 一 个数据子集;
所述长度检测模块,用于检测所述缓存模块中所存储的各个数据子集的长 度,并将检测结果发送给所述数据排序模块;
所述数据排序模块,用于根据所接收到的检测结果对上述各个数据子集进 行排序,并将排序结果发送给所述数据分配模块;
所述数据分配模块,用于根据所接收到的排序结果,将所需保存的数据集 合中长度最长的数据子集分配给至少一个连续的数据单元,将最后一个被分配 的数据单元作为当前数据单元;将不大于当前数据单元的剩余长度的长度且长 度最长的未被分配的数据子集分配给当前数据单元,直至所有未被分配的数据 子集的长度均大于当前数据单元的剩余长度;将分配情况发送给所述数据保存 模块;
所述数据保存模块,用于根据所接收到的分配情况将已被分配的数据子集 存储到所分配的数据单元中。
综上可知,本发明的实施例中提供了一种在EEPROM中存储数据的方法及 装置。通过上述的方法和装置,可将所需存储的数据尽量存储在EEPROM中数 据单元的剩余空间中,乂人而解决在EEPROM中保存数据时数据单元剩余空间的 浪费问题,节省了 EEPROM的存储空间,提高了 EEPROM的利用率,降低了 使用EEPROM的成本。


图1为本发明实施例中在EEPROM中存储数据的方法的总流程图。 图2为本发明实施例中在EEPROM中存储数据的方法的具体流程图。 图3为本发明实施例中的数据存储装置的示意图。
具体实施例方式
为使本发明的目的、技术方案和优点表达得更加清楚明白,下面结合附 图及具体实施例对本发明再作进一步详细的说明。
在本发明的实施例中,为了更加充分的利用EEPROM的存储空间,提 出了一种在EEPROM中存储数据的方法和装置。图1为本发明实施例中在 EEPROM中存储数据的方法的总流程图。如图1所示,本发明实施例中在 EEPROM中存储数据的方法包括如下所述的步骤
步骤101,将所需保存的数据集合中长度最长的数据子集分配给至少一 个连续的数据单元,将最后一个被分配的数据单元作为当前数据单元。
具体来说,当上述长度最长的数据子集的长度小于或等于第一个数据单 元的长度时,可将上述长度最长的数据子集分配给上述第一个数据单元,并 将上述第一个数据单元作为当前数据单元;而当上述长度最长的数据子集的 长度大于上述第一个数据单元的长度时,可将上述长度最长的数据子集分配
给包括上述第一个数据单元在内的多个连续的数据单元,并将上述多个连续 的数据单元的最后一个数据单元作为当前数据单元;
步骤102,判断是否所有未被分配的数据子集的长度均大于当前数据单 元的剩余长度。如果是,则执行步骤104;否则,执行步骤103。
具体来说,可先比较各个未被分配的数据子集的长度与当前数据单元的 剩余长度的大小;如果所有未被分配的数据子集的长度都大于当前数据单元 的剩余长度,则执行步骤104;而如果有至少一个未被分配的数据子集的长 度小于或等于当前数据单元的剩余长度,则执行步骤103。
步骤103,将长度小于或等于当前数据单元的剩余长度且长度最长的未被分配的数据子集分配给当前数据单元,计算当前数据单元的剩余长度,返
回执行步骤102;
步骤104,根据分配情况将已被分配的数据子集存储到所分配的数据单 元中。
在步骤104之后,还可以将下一个未被使用的数据单元的开始地址作为 当前数据单元的初始地址,然后根据上述的方法将所接收到的其他未被存储
的数据分别存储到相应的数据单元中,直到所有的数据都被存储到相应的数 据单元中。
为了更加清楚、详细地对本发明的技术方案进行介绍,以下将给出比上 述方法更加具体的实施方式。
图2为本发明实施例中在EEPROM中存储数据的方法的具体流程图。 如图2所示,本发明实施例中在EEPROM中存储数据的方法具体包括如下 所述的步骤
步骤201,设置初始地址和数据单元的长度。
具体来说,EEPROM由多个大小相等的数据单元构成,系统可对 EEPROM中的数据单元的大小(即每个数据单元的长度)进行设置,还可 对EEPROM中用于存储下述第一个数据或数组的数据单元的初始地址进行 设置。
另外,该步骤可以在步骤202-205中任意一步骤之前执行,因此步骤 201与步骤202 ~ 205之间没有执行的顺序关系。 步骤202,接收所需保存的数据。
具体来说,可将所接收的数据组成一个数据集合,并将集合中的数据划 分为多个数据子集,每个数据子集的大小可以相等,也可以不相等。因此, 所述的数据子集可以是数组或文件,为了叙述的方便,在本发明的实施例中, 将以数组为单位对数据集合进行划分为例进行说明,此时,上述的数据子集 为数组。
步骤203 ,检测每个数组的长度。具体来说,系统将对上述数据集合中的各个数组的长度进行检测,生成 检测结果。
步骤204,根据检测结果对各个数组进行排序。
具体来说,当检测完毕后,系统将根据检测结果对数据集合中的各个数 组进行排序,生成排序结果。在对各个数组进行排序时,可以按照数组的长 短来进行排序,例如,按照数组长度从长到短的顺序进行排序,或按照数组
长度从短到长的顺序进行排序;另外,也可以使用任何一种排序方法进行上 述排序,例如,顺序排序方法、冒泡排序方法、快速排序方法等。 步骤205,确定当前数组和当前数据单元。
具体来说,系统将根据上述根据排序结果确定当前的数组,即将各个所 需存储的数组中长度最长的数组作为当前数组,并将用于存储上述数组的第 一个数据单元作为当前数据单元。
步骤206,判断当前数组的长度Ld是否大于当前数据单元的长度Lu。 即判断是否Ld〉Lu,如果是,则执行步骤207;否则,执行步骤210。
步骤207,计算出存储当前数组所需的数据单元的数目n。
具体来说,可通过计算La与Lu的商来获知存储当前数组所需的最少的 数据单元的数目,例如,通过计算可得Div (Ld ,Lu) = m,则当Ld与Lu 的余数不为O时,所需的数据单元的数目为n = m+l;否则,所需的数据单 元的数目为n = m。其中,Div函数表示对Ld与Lu的商进行取整的操作,例 如,Div (5 ,2) = 2。
步骤208,将当前数据分配给上述n个连续的数据单元,重新确定当前 数组和当前数据单元。
具体来说,将当前数组分配给包括当前数据单元在内的n个连续的数据 单元,所述的n个数据单元即为从当前数据单元开始的连续的n个数据单元; 然后,根据上述根据排序结果将所有未被分配的数组中长度最长的数组作为 当前数组,并将上述n个数据单元中的最后一个数据单元作为当前数据单 元。步骤209,计算当前数据单元的剩余长度Lr,执行步骤212。 具体来说,在本步骤中,所述的剩余长度Lr即为当前数据单元的剩余
长度,即Lr= (n*Lu-Ld)。
步骤210,将当前数组分配给当前数据单元,重新确定当前数组。 在本步骤中,所述重新确定当前数组即为根据上述根据排序结果将所
有未被分配的数组中长度最长的数组作为当前数组。 步骤211,计算当前数据单元的剩余长度Lr。
具体来说,在本步骤中,所述的剩余长度U即为当前数据单元的剩余 长度,即Lr= (Lu-Ld)。
步骤212,判断剩余长度Lr是否等于零。如果是,则执行步骤216;否 则,执行步骤213。
步骤213,判断当前数组的长度是否大于剩余长度Lr。如果是,则执行 步骤214;否则,返回执行步骤210。
步骤214,判断当前数组是否为最后一个未被分配的数组。如果是,则 执行步骤216;否则,执行步骤215。
步骤215,将排序结果中的下一个长度最大的数组作为当前数组,返回 执行步骤213。
具体来说,在本步骤中,将上述排序结果中未被分配且未被比较的数组 中长度最大的数组作为当前数组。
步骤216,根据上述的分配情况,将已被分配的数组存储到相应的数据 单元中。
步骤217,将下一个未#1使用的数据单元的开始地址作为初始地址。 具体来说,就是将下一个未被使用的数据单元的开始地址作为用于存储 下一批数组的第一个数据单元的初始地址。该地址也可称之为调整地址。
通过上述步骤202~217,可将第一批被分配的数组存储到相应的数据 单元中。同理,可通过使用与上述步骤205-217相同的步骤,将下一批所 需存储的数组存储到相应的数据单元中,直到所有的数组都被存储到相应的数据单元中;当本次接收的所有数组都被存储以后,还可以再次接收外界输 入的所需保存的数据,并按照上述方法将所需保存的数据存储到相应的数据 单元中,具体的存储方法在此不再赘述。
图3为本发明实施例中数据存储装置的示意图。如图3所示,本发明实 施例中的数据存储装置包括緩存模块、长度检测模块、数据排序模块、数 据分配模块和数据保存模块。
所述緩存模块,用于緩存需存储到EEPROM中的数据,将所緩存的数 据划分为多个数据子集。所述的数据子集可以是数组或文件。
所述长度检测模块,用于检测緩存模块中所存储的各个数据子集的长 度,并将检测结果发送给数据排序模块;
所述数据排序模块,用于根据所接收到的检测结果对上述各个数据子集 进行排序,并将排序结果发送给数据分配模块;
所述数据分配模块,用于根据所接收到的排序结果,将所需保存的数据 集合中长度最长的数据子集分配给至少一个数据单元,将最后一个被分配的 数据单元作为当前数据单元;将不大于当前数据单元的剩余长度的长度且长 度最长的未被分配的数据子集分配给当前数据单元,直至所有未被分配的数 据子集的长度均大于当前数据单元的剩余长度;将分配情况发送给保存执行 模块;
所述数据保存模块,用于根据所接收到的分配情况将已被分配的数据子
集存储到所分配的数据单元中。
所述数据存储装置还包括参数设置模块和地址调整模块。 所述参数设置模块,用于设置数据单元的长度和第一个用于存储数据的
数据单元的初始地址;将所设置的数据单元的长度和所述初始地址发送给所
述数据分配模块。
所述地址调整模块,用于将下一个未被使用的数据单元的开始地址作为 用于存储下一批数据子集的第一个数据单元的初始地址;将所设置的初始地 址发送给所述数据分配模块。
10所述数据分配模块,用于根据所接收到的排序结果、数据单元的长度和 初始地址,将所需存储的数据子集分配给相应的数据单元。
通过使用本发明实施例中所提供的上述方法和装置,可将所需存储的数
据尽量存储在EEPROM中凄t据单元的剩余空间中,乂人而解决在EEPROM中 保存数据时数据单元剩余空间的浪费问题,节省了 EEPROM的存储空间, 提高了 EEPROM的利用率,降低了使用EEPROM的成本。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护 范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等, 均应包含在本发明的保护范围之内。
权利要求
1. 一种在电可擦写可编程只读存储器中存储数据的方法,其特征在于,该方法包括A、将所需保存的数据集合中长度最长的数据子集分配给电可擦写可编程只读存储器中的至少一个连续的数据单元,将最后一个被分配的数据单元作为当前数据单元;B、当有至少一个未被分配的数据子集的长度小于或等于当前数据单元的剩余长度时,将长度小于或等于当前数据单元的剩余长度且长度最长的未被分配的数据子集分配给当前数据单元,计算当前数据单元的剩余长度,返回执行步骤B;C、根据分配情况将已被分配的数据子集存储到所分配的数据单元中。
2、 根据权利要求1所述的方法,其特征在于,所述步骤A之前包括。 A1 、检测所需保存的数据集合中每个数据子集的长度;A2、根据检测结果将各个数据子集按数据子集的长短进行排序。
3、 根据权利要求1所述的方法,其特征在于,所述步骤A包括 当所述长度最长的数据子集的长度小于或等于数据单元的长度时,将所述长度最长的数据子集分配给用于存储数据的第一个数据单元,将所述第一个数 据单元作为当前数据单元;当所述长度最长的数据子集的长度大于数据单元的长度时,计算出存储所 述长度最长的数据子集所需的最少的数据单元的数目n;将所述长度最长的数 据子集分配给包括用于存储数据的第一个数据单元在内的连续n个数据单元, 将所述第n个数据单元作为当前数据单元。
4、 根据权利要求1所述的方法,其特征在于,所述步骤C之后还包括 将下一个未#皮^使用的lt据单元的开始地址作为当前凄t据单元的初始地址。
5、 根据权利要求l、 2、 3或4所述的方法,其特征在于,所述数据子集为 凄史组或文件。
6、 一种在电可擦写可编程只读存储器中存储数据的装置,其特征在于,该装置包括緩存模块、长度检测模块、数据排序模块、数据分配模块和数据保 存模块;所述緩存模块,用于緩存需存储到电可擦写可编程只读存储器中的数据, 将所緩存的数据划分为至少 一 个数据子集;所述长度检测模块,用于检测所述緩存模块中所存储的各个数据子集的长 度,并将检测结果发送给所述数据排序^^莫块;所述数据排序模块,用于根据所接收到的检测结果对上述各个数据子集进 行排序,并将排序结果发送给所述数据分配模块;所述数据分配模块,用于根据所接收到的排序结果,将所需保存的数据集 合中长度最长的数据子集分配给至少一个连续的数据单元,将最后一个被分配 的数据单元作为当前数据单元;将不大于当前数据单元的剩余长度的长度且长度最长的未被分配的数据子集分配给当前数据单元,直至所有未被分配的数据 子集的长度均大于当前数据单元的剩余长度;将分配情况发送给所述数据保存 模块;所述数据保存模块,用于根据所接收到的分配情况将已被分配的数据子集 存储到所分配的数据单元中。
7、 根据权利要求6所述的装置,其特征在于,所述数据存储装置还包括 参数设置模块和地址调整模块;所述参数设置模块,用于设置数据单元的长度和第一个用于存储数据的数 据单元的初始地址;将所设置的数据单元的长度和所述初始地址发送给所述数 据分配模块;所述地址调整模块,用于将下一个未被使用的数据单元的开始地址作为用 于存储下一批数据子集的第一个数据单元的初始地址;将所设置的初始地址发 送给所述数据分配模块;所述数据分配模块,用于根据所接收到的排序结果、数据单元的长度和初 始地址,将所需存储的数据子集分配给相应的数据单元。
全文摘要
本发明的实施例中公开了一种在EEPROM中存储数据的方法,该方法包括A、将所需保存的数据集合中长度最长的数据子集分配给至少一个连续的数据单元,将最后一个被分配的数据单元作为当前数据单元;B、当有至少一个未被分配的数据子集的长度小于或等于当前数据单元的剩余长度时,将长度小于或等于当前数据单元的剩余长度且长度最长的未被分配的数据子集分配给当前数据单元,计算当前数据单元的剩余长度,返回执行步骤B;C、根据分配情况将已被分配的数据子集存储到所分配的数据单元中。本发明的实施例中还公开了一种在EEPROM中存储数据的装置。通过使用上述的方法和装置,节省了EEPROM的存储空间,提高了EEPROM的利用率。
文档编号G06F12/04GK101286136SQ20081010486
公开日2008年10月15日 申请日期2008年4月24日 优先权日2008年4月24日
发明者冯备战 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1