首页> 中国专利> 在电可擦写可编程只读存储器中存储数据的方法及装置

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

摘要

本发明的实施例中公开了一种在EEPROM中存储数据的方法,该方法包括:A、将所需保存的数据集合中长度最长的数据子集分配给至少一个连续的数据单元,将最后一个被分配的数据单元作为当前数据单元;B、当有至少一个未被分配的数据子集的长度小于或等于当前数据单元的剩余长度时,将长度小于或等于当前数据单元的剩余长度且长度最长的未被分配的数据子集分配给当前数据单元,计算当前数据单元的剩余长度,返回执行步骤B;C、根据分配情况将已被分配的数据子集存储到所分配的数据单元中。本发明的实施例中还公开了一种在EEPROM中存储数据的装置。通过使用上述的方法和装置,节省了EEPROM的存储空间,提高了EEPROM的利用率。

著录项

  • 公开/公告号CN101286136A

    专利类型发明专利

  • 公开/公告日2008-10-15

    原文格式PDF

  • 申请/专利权人 北京中星微电子有限公司;

    申请/专利号CN200810104867.6

  • 发明设计人 冯备战;

    申请日2008-04-24

  • 分类号G06F12/02;G06F12/04;

  • 代理机构北京德琦知识产权代理有限公司;

  • 代理人宋志强

  • 地址 100083 北京市海淀区学院路35号世宁大厦15层

  • 入库时间 2023-12-17 20:58:06

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-06-12

    未缴年费专利权终止 IPC(主分类):G06F12/02 授权公告日:20111228 终止日期:20120424 申请日:20080424

    专利权的终止

  • 2011-12-28

    授权

    授权

  • 2009-02-25

    实质审查的生效

    实质审查的生效

  • 2008-10-15

    公开

    公开

说明书

技术领域

本发明涉及数据存储技术,尤其是指一种在电可擦写可编程只读存储器中存储数据的方法及装置。

背景技术

在现有技术中,电可擦写可编程只读存储器(EEPROM,Electrically ErasableProgrammable 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。

具体来说,可通过计算Ld与Lu的商来获知存储当前数组所需的最少的数据单元的数目,例如,通过计算可得:Div(Ld,Lu)=m,则当Ld与Lu的余数不为0时,所需的数据单元的数目为n=m+1;否则,所需的数据单元的数目为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

具体来说,在本步骤中,所述的剩余长度Lr即为当前数据单元的剩余长度,即Lr=(Lu-Ld)。

步骤212,判断剩余长度Lr是否等于零。如果是,则执行步骤216;否则,执行步骤213。

步骤213,判断当前数组的长度是否大于剩余长度Lr。如果是,则执行步骤214;否则,返回执行步骤210。

步骤214,判断当前数组是否为最后一个未被分配的数组。如果是,则执行步骤216;否则,执行步骤215。

步骤215,将排序结果中的下一个长度最大的数组作为当前数组,返回执行步骤213。

具体来说,在本步骤中,将上述排序结果中未被分配且未被比较的数组中长度最大的数组作为当前数组。

步骤216,根据上述的分配情况,将已被分配的数组存储到相应的数据单元中。

步骤217,将下一个未被使用的数据单元的开始地址作为初始地址。

具体来说,就是将下一个未被使用的数据单元的开始地址作为用于存储下一批数组的第一个数据单元的初始地址。该地址也可称之为调整地址。

通过上述步骤202~217,可将第一批被分配的数组存储到相应的数据单元中。同理,可通过使用与上述步骤205~217相同的步骤,将下一批所需存储的数组存储到相应的数据单元中,直到所有的数组都被存储到相应的数据单元中;当本次接收的所有数组都被存储以后,还可以再次接收外界输入的所需保存的数据,并按照上述方法将所需保存的数据存储到相应的数据单元中,具体的存储方法在此不再赘述。

图3为本发明实施例中数据存储装置的示意图。如图3所示,本发明实施例中的数据存储装置包括:缓存模块、长度检测模块、数据排序模块、数据分配模块和数据保存模块。

所述缓存模块,用于缓存需存储到EEPROM中的数据,将所缓存的数据划分为多个数据子集。所述的数据子集可以是数组或文件。

所述长度检测模块,用于检测缓存模块中所存储的各个数据子集的长度,并将检测结果发送给数据排序模块;

所述数据排序模块,用于根据所接收到的检测结果对上述各个数据子集进行排序,并将排序结果发送给数据分配模块;

所述数据分配模块,用于根据所接收到的排序结果,将所需保存的数据集合中长度最长的数据子集分配给至少一个数据单元,将最后一个被分配的数据单元作为当前数据单元;将不大于当前数据单元的剩余长度的长度且长度最长的未被分配的数据子集分配给当前数据单元,直至所有未被分配的数据子集的长度均大于当前数据单元的剩余长度;将分配情况发送给保存执行模块;

所述数据保存模块,用于根据所接收到的分配情况将已被分配的数据子集存储到所分配的数据单元中。

所述数据存储装置还包括:参数设置模块和地址调整模块。

所述参数设置模块,用于设置数据单元的长度和第一个用于存储数据的数据单元的初始地址;将所设置的数据单元的长度和所述初始地址发送给所述数据分配模块。

所述地址调整模块,用于将下一个未被使用的数据单元的开始地址作为用于存储下一批数据子集的第一个数据单元的初始地址;将所设置的初始地址发送给所述数据分配模块。

所述数据分配模块,用于根据所接收到的排序结果、数据单元的长度和初始地址,将所需存储的数据子集分配给相应的数据单元。

通过使用本发明实施例中所提供的上述方法和装置,可将所需存储的数据尽量存储在EEPROM中数据单元的剩余空间中,从而解决在EEPROM中保存数据时数据单元剩余空间的浪费问题,节省了EEPROM的存储空间,提高了EEPROM的利用率,降低了使用EEPROM的成本。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号