一种延长可擦写芯片寿命的方法和装置
技术领域
本发明涉及芯片技术领域,具体涉及一种延长可擦写芯片寿命的方法和装置。
背景技术
可擦写芯片,如闪存芯片、带电可擦写可编程只读存储器EEPROM、安全芯片SE等,由于可擦写芯片中的已有信息进行擦除、重新编程,被广泛应用于各个领域。可擦写芯片的写入操作必须在空白区域进行,如果目标区域已经有数据,必须先擦除后写入,因此擦除操作是闪存的基本操作。但是对芯片的每次擦除以及重新操作都会消耗芯片的寿命。为了尽可能延长芯片的使用寿命,一般是采用专业芯片来替代普通芯片,如对于安全芯片SE而言,可用工业级的M2M芯片或者车规级别的M2M芯片,但是实际应用中发现,对于某些领域的应用而言,即使是工业级或车规级别的芯片,也不能够满足应用需求,且专业芯片的价格比较昂贵,使得采用该芯片及使用该种芯片的设备的成本大大提高。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种延长可擦写芯片寿命的方法,通过该方法,可大大提升芯片的寿命。
为实现上述目的,本发明采用的技术方案为:一种延长可擦写芯片寿命的方法,包括:
根据可擦写芯片中的指定文件的大小,为所述指定文件分配N个不连续的读写空间,N≥2;所述不连续是指N个读写空间之间相互不占用相同的页,所述页为可擦写芯片的最小擦除单位;
存储每个读写空间的空间地址,并为每个空间地址分别设置一计数器,所有计数器的初始值相同;
将所述指定文件的初始数据写入第一读写空间,并将所述第一读写空间所对应的计数器的值加1;
对所述指定文件进行新的填充数据的写入,将指定文件的新的填充数据写入到第二读写空间,并将所述第二读写空间所对应的计数器的值更新为上一次进行数据写入的读写空间所对应的计数器的值加1。
进一步,如上所述的一种延长可擦写芯片寿命的方法,还包括:读取所述指定文件的数据,读取方式为:
查找所述指定文件的N个不连续的读写空间的空间地址中计算器的值最大的空间地址;
读取所述计数器最大的空间地址对应的读写空间中的数据。
进一步,如上所述的一种延长可擦写芯片寿命的方法,还包括:设置所述指定文件的保护标记,所述保护标记是指用于标识指定文件存在多个读写空间的标记。
进一步,如上所述的一种延长可擦写芯片寿命的方法,所述存储每个读写空间的地址,包括:
设置空间地址存储表,将所述指定文件的所有读写空间的空间地址记录到所述空间地址存储表中,并建立空间地址存储表与指定文件之间的映射关系。
进一步,如上所述的一种延长可擦写芯片寿命的方法,对所述指定文件进行新的填充数据的写入,将指定文件的新的填充数据写入第二读写空间,包括:
根据指定文件的文件标识查找所述指定文件;
根据指定文件与其空间地址存储表之间的映射关系,查找其空间地址存储表;
查找空间地址存储表中计数器值最大的空间地址;
将新的填充数据写入到所述计数器值最大的空间地址的下一空间地址对应的读写空间中。
进一步,如上所述的一种延长可擦写芯片寿命的方法,在将新的填充数据写入第二读写空间前,若所述第二读写空间中存在数据,还包括:
擦除所述第二读写空间中的数据,将所述新的填充数据写入到擦除后的第二读写空间中。
进一步,如上所述的一种延长可擦写芯片寿命的方法,所述存储每个读写空间的空间地址后,还包括:
将N个空间地址进行排序;
所述第二读写空间的空间地址的排序位于上一次进行数据写入时的读写空间的空间地址的下一位。
本发明实施例中还公开了一种延长可擦写芯片寿命的装置,包括:
多读写空间分配模块,用于根据可擦写芯片中的指定文件的大小,为所述指定文件分配N个不连续的读写空间,N≥2;所述不连续是指N个读写空间之间相互不占用相同的页,所述页为可擦写芯片的最小擦除单位;
地址存储及设置模块,用于存储每个读写空间的空间地址,并为每个空间地址分别设置一计数器,所有计数器的初始值相同;
数据写入模块,用于将所述指定文件的初始数据写入第一读写空间,以及在对所述指定文件进行新的填充数据的写入时,将指定文件的新的填充数据写入到第二读写空间;
计数器更新模块,用于在将初始数据写入第一读写空间时,将所述第一读写空间所对应的计数器的值加1,还用于将指定文件的新的填充数据写入到第二读写空间时,将所述第二读写空间所对应的计数器的值更新为前一次进行数据写入时的读写空间所对应的计数器的值加1。
进一步,如上所述的一种延长可擦写芯片寿命的装置,还包括:
数据读取模块,用于读取所述指定文件的数据;所述数据读取模块包括:
有效地址查找单元,用于查找所述指定文件的N个不连续的读写空间的空间地址中计算器的值最大的空间地址;
数据读取单元,用于读取所述计数器最大的空间地址对应的读写空间中的数据。
进一步,如上所述的一种延长可擦写芯片寿命的装置,所述地址存储及设置模块包括:
地址存储表设置单元,用于设置空间地址存储表,将所述指定文件的所有读写空间的空间地址记录到所述空间地址存储表中;
计数器设置单元,用于为每个空间地址分别设置一计数器,所有计数器的初始值相同;
映射关系建立单元,用于建立空间地址存储表与指定文件之间的映射关系。
进一步,如上所述的一种延长可擦写芯片寿命的装置,所述地址存储及设置模块还包括:
空间地址排序单元,用于对所有空间地址进行排序;
所述第二读写空间的空间地址的排序位于上一次进行数据写入时的读写空间的空间地址的下一位。
本发明的有益效果在于:本发明所提供的延长可擦写芯片寿命的方法及装置,通过为指定文件分配多个读写空间,在进行指定文件中数据更新时,通过使用不同的读写空间进行写入或擦除再写入操作,提升了芯片的可擦写次数,从而提升了整体芯片的寿命,采用该方法及装置,可使得普通芯片超越工业级或车规级芯片的寿命指标,且大大降低了成本,更好的满足了实际应用的需求。
附图说明
图1为本发明具体实施方式中一种延长可擦写芯片寿命的方法的流程示意图;
图2为本发明具体实施方式中一种延长可擦写芯片寿命的装置的结构示意图;
图3为本发明实施例中地址存储及设置模块的结构示意图;
图4为本发明实施例中的空间地址存储表的结构示意图;
图5为本发明实施例中写入数据前的读写空间的结构示意图;
图6为本发明实施例中完成指定文件的初始数据写入后的读写空间的结构示意图;
图7为本发明实施例中完成指定文件的新的填充数据写入后的读写空间的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,均属于本发明保护的范围。
图1示出了本发明具体实施方式中一种延长可擦写芯片寿命的方法的流程示意图,由图中可以看出,该方法主要可以包括以下几个步骤:
步骤S100:根据可擦写芯片中的指定文件的大小,为所述指定文件分配N个不连续的读写空间;
本发明实施例中,首先根据可擦写芯片的指定文件的大小,为所述指定文件分配N个不连续的读写空间,其中,N≥2。其中,所述不连续是指N个读写空间之间相互不占用相同的页,所述页为可擦写芯片的最小擦除单位,一般为128个字节、或者256个字节、或者512个字节等。
对于许多芯片来说,其擦写方式一般都是页擦页写的方式,所有为了保证所述N个读写空间都能单独完成所述指定文件中数据的擦除及写入工作,必须保证N个读写空间之间相对独立,不占用共同的页。在实际应用中,所述指定文件需要的读写空间可能不止一页,如一个读写空间占用两个页,则不连续是指N个读写空间的之间一个共同的页也不占用。
例如,对于某一指定文件,其文件大小为100个字节,若N=10,则为该文件分配10个不连续的、大小至少为100字节的读写空间,且这10个读写空间之间均不占用相同的页。在实际应用中,所述指定文件一般是指可擦写芯片中需要进行高频次读写操作的某个或某几个文件,具体选择哪些文件,可以根据实际需要进行确定。其中,所述可擦写芯片包括但不限安全芯片SE。
在本发明的一个实施例中,在完成指定文件的读写空间的分配后,还包括设置所述指定文件的保护标记,所述保护标记是指用于标识指定文件存在多个读写空间的标记。在需要进行文件中的数据读取时,可以通过该保护标记知道指定文件具有多个读写空间。其中,保护标记的具体样式不受限制,可以根据需要自行设置。
步骤S200:存储每个读写空间的空间地址,并为每个空间地址分别设置一计数器,所有计数器的初始值相同;
完成N个不连续的读取空间的分配后,记录并存储每个读写空间的空间地址,对N个读取空间的N个空间地址进行排序,并为每个空间地址分别设置一计数器,所有计数器的初始值相同。例如,所有计数器的初始值都可以为0。
为了便于指定文件的多个读写空间的管理,本发明的一个实施例中,还包括:设置一空间地址存储表,将所述指定文件的所有读写空间的地址记录到所述空间地址存储表中,并建立空间地址存储表与指定文件之间的映射关系。即将指定文件的所有读写空间的空间地址都统一存储在空间地址存储表,通过查询该存储表,便可根据表中的空间地址查找到指定文件的所有读写空间。
在实际应用中,为了保证计数器的计数功能能够满足芯片的使用期限需求,可以分配若干个字节作为计数器,如可以为每个计数器留出三个字节的空间。此外,当某一计数器的计数值达到其最大能计数值后,可以将出最大计数值对应的计数器之外的所有计数器的值初始化,最大计数值对应的计数器的值更新为初始化值再加1。
在本发明的一个实施例中,为了保证指定文件的N个读写空间能够被轮流使用,避免读写空间使用不均的情况,以更好的延长芯片的寿命,在存储N个读写空间的空间地址时,还包括:将所述N个空间地址进行排序,以便后续可以对N个读写空间进行依次写入操作。
步骤S300:将所述指定文件的初始数据写入第一读写空间,并将所述第一读写空间所对应的计数器的值加1;
所述初始数据是指第一次对指定文件进行数据写入时写入的数据,完成初始数据的写入后,将第一读写空间的空间地址的计数器的值加1。
步骤S400:对所述指定文件进行新的填充数据的写入,将指定文件的新的填充数据写入到第二读写空间,将第二读写空间对应的计数器的值更新为上一次进行数据写入的读写空间对应的计数器的值加1。
所述新的填充数据是指后续需要写入指定文件中的更新后的数据。对所述指定文件进行新的填充数据的写入时,将指定文件的新的填充数据写入到第二读写空间,并将所述第二读写空间所对应的计数器的值更新为上一次(当前进行数据写入操作的前一次)进行数据写入时的读写空间所对应的计数器的值加1;其中,所述第二读写空间的空间地址的排序位于上一次进行数据写入时的读写空间的空间地址的下一位。例如,三个读写空间的空间地址排序为A、B、C,上次进行数据写入的是B对应的读写空间,其计数器值为5,则当前进行数据更新写入时,则可以将新的填充数据写入地址C对应的读写空间,其对应的计数器值更新为6。
即将当前读写空间所对应的计数器的值设置为在上一次使用的读写空间对应的计数器值的基础上再加上1,通过该方式,保证了计数器值最大空间地址所对应的读写空间中的数据为的当前有效数据。也就是说,通过多个读写空间对应的计数器的值便可以区分出哪个读写空间中的数据为最新的数据即指定文件当前有效的数据。
在本发明的一个实施例中,当所有读写空间的空间地址统一存储于所述空间地址存储表中时,步骤S400中,对所述指定文件进行新的填充数据的写入,将指定文件的新的填充数据写入第二读写空间,包括:
根据指定文件的文件标识查找所述指定文件;
根据指定文件与其空间地址存储表之间的映射关系,查找其空间地址存储表;
查找空间地址存储表中计数器值最大的空间地址;
将新的填充数据写入到所述计数器值最大的空间地址的下一空间地址对应的读写空间中。
所述指定文件的文件标识可以是指定文件的名称或其它唯一标识,根据文件标识查找文件是通用技术手段。
在进行指定文件的数据更新即需要将新的填充数据写入时,首先查找到指定文件,并判断指定文件是否存在保护标识,若不存在,说明文件只有唯一的读写空间,直接进行其唯一读写空间的擦除与写入操作,若存在是,说明指定文件存在N个不连续的读写空间,此时,根据指定文件与其空间地址存储表之间的映射关系,查找其空间地址存储表,得到指定文件的所有读写空间的空间地址,将新的填充数据写入到计数器值最大的空间地址的下一空间地址对应的读写空间中。
其中,在对N个读写空间的空间地址进行排序存储后,所述第二读写空间的空间地址优选为上一次进行数据写入的读写空间的下一位。采用该方式,保证了N个读写空间会被轮流使用。
此外,在实际应用中,在将新的填充数据写入所述第二读写空间前,若所述第二读写空间中存在数据,还包括:擦除所述第二读写空间中的数据,将所述新的填充数据写入到擦除后的所述第二读写空间中。即在所有读写空间都完成一次数据写入后,再进行数据更新时,需要先进行数据的擦除后再写入。
即在完成N个读写空间的轮流使用后,再返回到初始数据所占用的读写空间时,后续的每次数据写入,需要先进行读写空间中数据的擦除再写入。
在本发明的一个实施例中,所述方法还包括步骤S500,如图1所示,即读取所述指定文件的数据的步骤。
本实施方式中,所述读取指定文件的数据的具体方式为:
查找所述指定文件的N个不连续的读写空间的空间地址中计算器的值最大的空间地址;读取所述计数器最大的空间地址对应的读写空间中的数据。
本实施方式中所提供的延长可擦写芯片寿命的方法,通过为指定文件分配N倍的读写空间,每个读写空间可以分别进行数据的擦除及写入,从而避免了在进行数据更新时,对同一个读写空间反复进行多次擦除后再写入(尤其对于是需要高频擦写的指定文件),因指定文件的擦写次数超过设计寿命时,导致整个芯片无法使用的问题,通过延长高频率擦写的指定文件的擦写寿命,提升了整个芯片的寿命。且该方法,通过设置计数器,保证了指定文件的N个读写空间能够被轮流使用,避免读写空间使用不均的情况,更好的延长了芯片的寿命。
与图1中所示的方法相对应,本发明实施例中还提供了一种延长可擦写芯片寿命的装置,如图2所示,该装置包括多读写空间分配模块100、地址存储及设置模块200、地址存储及设置模块200、数据写入模块300、计数器更新模块400和数据读取模块500。其中:
多读写空间分配模块100,用于根据可擦写芯片中的指定文件的大小,为所述指定文件分配N个不连续的读写空间,N≥2;所述不连续是指N个读写空间之间相互不占用相同的页,所述页为可擦写芯片的最小擦除单位;
地址存储及设置模块200,用于存储每个读写空间的空间地址,并为每个空间地址分别设置一计数器,所有计数器的初始值相同;
数据写入模块300,用于将所述指定文件的初始数据写入第一读写空间,以及在对所述指定文件进行新的填充数据的写入时,将指定文件的新的填充数据写入到第二读写空间;
计数器更新模块400,用于在将初始数据写入第一读写空间时,将所述第一读写空间所对应的计数器的值加1,还用于将指定文件的新的填充数据写入到第二读写空间时,将所述第二读写空间所对应的计数器的值更新为上一次进行数据写入时的读写空间所对应的计数器的值加1;
数据读取模块500,用于读取所述指定文件的数据;其中,所述数据读取模块500包括有效地址查找单元510和数据读取单元520。
有效地址查找单元510,用于查找所述指定文件的N个不连续的读写空间的空间地址中计算器的值最大的空间地址;
数据读取单元520,用于读取所述计数器最大的空间地址对应的读写空间中的数据。
在本发明的一个实施例中,所述地址存储及设置模块200包括地址存储表设置单元210、计数器设置单元230和映射关系建立单元240,如图3所示。其中:
地址存储表设置单元210,用于设置空间地址存储表,将所述指定文件的所有读写空间的空间地址记录到所述空间地址存储表中;
计数器设置单元230,用于为每个空间地址分别设置一计数器,所有计数器的初始值相同;
映射关系建立单元240,用于建立空间地址存储表与指定文件之间的映射关系。
此时,所述数据写入模块300包括指定文件查找单元310、地址存储表查找单元320、上一写入地址查找单元330和数据写入单元340。其中:
指定文件查找单元310,用于根据指定文件的文件标识查找所述指定文件;
地址存储表查找单元320,用于根据指定文件与其空间地址存储表之间的映射关系,查找其空间地址存储表;
上一写入地址查找单元330,用于查找空间地址存储表中计数器值最大的空间地址;
数据写入单元340,用于将新的填充数据写入到所述计数器值最大的空间地址的下一空间地址对应的读写空间中。
在本发明的一个优选实施例中,所述地址存储及设置模块200还可以包括空间地址排序单元220,该单元用于用于对空间地址存储表中的所有空间地址进行排序。此时,所述第二读写空间的空间地址优选为上一次进行数据写入的读写空间的空间地址的下一位。
为了更好的理解本发明,下面结合具体实施例对本发明进行进一步详细说明。
实施例
本实施例中,可擦写芯片为安全芯片SE,指定文件为SE中3F00目录下的、名称为6F5B的文件,文件的大小为100个字节,在应用中,6F5B这个文件会进行高频的读写,这个文件一旦达到芯片设计的写入寿命,文件将无法写入,导致整个SE都会作废,采用本发明实施例中所述的方法延长该芯片寿命的方法对该芯片进行保护的流程如下:
为SE的3F00目录下的6F5B文件作保护标记,并分配20个不连续的读写空间,每个读写空间的大小至少为100字节,再分配一空间作为空间地址存储表,将20个读写空间的空间地址都记录在空间地址存储表中,并对20个读写空间的空间地址进行排序,记为地址1-地址20,对应的读写空间分别为空间1-空间20,还需要为每个空间地址设置一个计数器,所有计数器的初始值都相同,本实施例,计数器的初始值为0,图4为本是本实施例中空间地址存储表的一种结构示意图,图5为写入数据前的20个读写空间的结构示意图,为了更容易理解,图5中还示出了空间地址及其计数器部分的结构。
完成读写空间的分配以及空间地址的存储及设置后,下面对6F5B文件中进行数据写入,流程如下:
对6F5B文件进行初始数据写入,本实施例中假设第一次写入的数据为AAAA。本实施例中将空间1作为所述第一读写空间,当然也可以选择其他空间作为第一读写空间。
将AAAA写入空间1,并将空间地址存储表中空间地址1的计数器值加1,完成初次写入后的文件的读写空间的示意图如图6中所示,地址1的计数器值更新为1。
需要对6F5B文件进行数据更新,需要将更新后的数据BBBB写入到6F5B文件中。写入时,首先根据文件名6F5B找到该文件,发现其有保护标记,说明该文件有多个读写空间,根据文件与其空间地址存储表之间的映射关系,查找到其空间地址存储表,在存储表中查找到上一次写入数据的空间地址(即当前计数器值最大的空间地址)为地址1,其计数器值为1,根据排序,地址1的下一空间地址为地址2,此时将数据BBBB写入地址2对应的读写空间即空间2中,并将地址2的计数器的值更新为地址1的计数器值加1,即地址2的计数器的值更新为2,完成更新写入后的读写空间的示意图如图7所示。
重复上述数据写入方式,需要对6F5B文件中的数据再次进行更新写入时,在空间地址存储表中查找计数器最大的空间地址,将计数器最大的空间地址的下一空间地址对应的读写空间,作为当前的第二读写空间,将更新的数据写入到该空间中,并将其空间地址的计数器的值更新为其上一空间地址的为计数器最大值加1。
当将更新数据写入后地址20对应的空间20后,如果需要再次进行数据写入,则需要将数据写入到地址20的下一地址对应的读写空间中,即空间1中,此时,空间1中已经有数据AAAA,需要先擦除AAAA,再进行新的数据写入。可见,采用该方式,在完成20次数据更新后,才需要开始进行数据擦除。
本实施例中,指定文件的20个读写空间轮流使用,采用空间倍增的方式对芯片中的指定文件进行保护,提升其擦写使用时间,提升了芯片的使用寿命。
当需要从6F5B文件的读取数据时,通过查找到空间地址存储表中的空间地址的计数器的值,计数器值最大的空间地址对应的读写空间中的数据记为指定文件的最新有效数据,即可完成数据的读取。
在实际应用中,可以根据实际需求,自定义为所述指定文件分配的读写空间个数,即N的数值。
将本发明实施例中所提供的方法及装置,应用于实际应用场景中发现,采用该方法及装置,可使普通的芯片超越工业级和/或车规级的芯片的使用寿命,更好的满足用户的实际需求,而将该方法及装置,应用于工业级或车规级的芯片中,更可以进一步提高使用寿命。例如,消费级的芯片硬件支持10万次擦写,采用本发明的方法及装置,我们可以为其提供10倍的保护,使其擦写次数达到100万次擦写;同样的,在硬件支持50万次擦写的车规级芯片上,十倍的保护结果就是500万次擦写的寿命。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。