一种对EC的存储器中数据的读写方法及装置与流程

文档序号:12863424阅读:601来源:国知局
一种对EC的存储器中数据的读写方法及装置与流程

本发明涉及数据处理领域,特别涉及一种对ec的存储器中数据的读写方法及装置。



背景技术:

在使用笔记本电脑等智能设备时,需要对嵌入式控制器(ec)的存储器进行读写操作,例如对ec的eeprom芯片进行数据的写入或读取,而目前在对ec的存储器进行读写操作时,无论读取或写入的数据量有多大,都需要对存储器进行大规模的擦除或写操作,而由于设计寿命的原因,存储器的擦写次数是有限的,所以大量的读写操作会造成存储器的使用寿命降低。



技术实现要素:

本发明实施例的目的在于提供一种对ec的存储器中数据的读写方法及装置,该方法能够在计算机等智能设备工作过程中有效减低对其ec等芯片的存储器中的数据的读写次数,从而在读写数据正确的前提下延长ec等芯片的使用寿命。

为了解决上述技术问题,本发明实施例采用了如下技术方案:一种对ec的存储器中数据的读写方法,所述方法包括写操作,所述写操作包括:

在所述存储器中分别设置索引区段和多个数据区段,其中,所述数据区段中设有多个数据块以存放数据,所述索引区段中设有多个索引块,所述索引块与所述数据块相对应;

当向所述存储器中写入数据时,根据所述索引块的索引将数据写入到相应的所述数据区段的数据块上;

根据写入所述存储器的数据的位置信息更新所述索引块。

作为优选,根据所述索引块的索引将数据写入到相应的所述数据区段的数据块上包括:

根据所述索引块的索引获取存储有有效数据的第一数据区段的信息;

根据所述第一数据区段的信息将数据写入到与所述第一数据区段相邻的第二数据区段上,其中所述第二数据区段存储的数据无效。

作为优选,当所有的所述数据区段上均存储有有效数据并继续对所述存储器进行写入数据的操作时,将所述有效数据移动到预设的所述第一数据区段的数据块上,并相应的更新所述索引块;根据更新后的所述索引块的索引将数据写入到所述第二数据区段上。

作为优选,所述索引块以十六进制数值表示,十六进制数值对应有二进制数值,根据二进制数值的位的变化来索引所述数据块。

作为优选,所述方法还包括读操作,所述读操作包括:读取所述索引块的内容,根据所述索引块的索引从相应的所述数据区段的数据块上读取数据。

本发明实施例还提供了一种对ec的存储器中数据的读写装置,所述读写装置包括写装置,所述写装置包括设置模块,写入模块和更新模块;

所述设置模块配置为在所述存储器中分别设置索引区段和多个数据区段,并且在所述数据区段中设置多个数据块以存放数据,在所述索引区段中设置多个索引块,所述索引块与所述数据块相对应;

所述写入模块配置为向所述存储器中写入数据时,根据所述索引块的索引将数据写入到相应的所述数据区段的数据块上;

所述更新模块与写入模块连接,所述更新模块配置为根据所述写入模块写入所述存储器的数据的位置信息更新所述索引块。

作为优选,所述写入模块包括获取单元,所述获取单元配置为根据所述索引块的索引获取存储有有效数据的第一数据区段的信息,以使所述写入模块根据所述第一数据区段的信息将数据写入到与所述第一数据区段相邻的第二数据区段上,其中所述第二数据区段存储的数据无效。

作为优选,所述写装置还包括转移模块,所述转移模块分别与所述写模块和更新模块连接,所述转移模块配置为当所有的所述数据区段上均存储有有效数据并且所述写入模块继续对所述存储器进行写入数据的操作时,将所述有效数据移动到预设的所述第一数据区段的数据块上,并驱动所述更新模块更新相应的所述索引块,以使所述写入模块根据更新后的所述索引块的索引将数据写入到所述第二数据区段上。

作为优选,所述索引块以十六进制数值表示,十六进制数值对应有二进制数值,根据二进制数值的位的变化来索引所述数据块。

作为优选,所述读写装置还包括读装置,所述读装置配置为读取所述索引块的内容,根据所述索引块的索引从相应的所述数据区段的数据块上读取数据。

本发明实施例的有益效果在于:在对ec的存储器进行读写操作时可以只针对存储器的部分数据区域的数据块进行读写操作,而不对其他的数据区段进行操作,也不会对同一数据区段的其他数据块进行操作,减少了对存储器的擦写次数,延长了存储器的使用寿命。

附图说明

图1为本发明实施例的写操作的流程图;

图2为本发明实施例的将数据写入数据块上的流程图;

图3为本发明实施例的写装置的结构示意图;

图4为本发明实施例的对ec的存储器中数据的读写装置的结构示意图;

图5为本发明实施例的写操作的一种具体流程图;

图6为本发明实施例的写操作的另一种具体过程示意图;

图7为本发明实施例的读操作的流程图。

附图标记说明

1-写装置2-设置模块3-写入模块

4-更新模块5-转移模块6-读装置

7-存储器

具体实施方式

为使本领域技术人员更好地理解本发明,下面参照附图对本发明的实施例进行详细说明,但不作为对本发明的限定。

本发明实施例的一种对ec的存储器7中数据的读写方法,该方法能够降低对其ec等芯片的存储器7中的数据的读写次数,并且特别是在对存储器7进行写入操作时能够仅对存储器7的部分区域进行写入,而避免使用整个存储器7的存储介质,从而延长ec等芯片的使用寿命,该方法包括写操作,如图1所示,写操作包括:

s1,在存储器7中分别设置索引区段和多个数据区段,其中,数据区段中设有多个数据块以存放数据,索引区段中设有多个索引块,索引块与数据块相对应。存储器7为智能设备的ec等部件的存储器7,例如可以为ec的eeprom或flashrom等,在ec的工作过程中,需要对存储器7进行读写操作。在本实施例中在存储器7中设置多个数据区段,每个数据区段均可以存储数据,在对存储器7进行写入操作时可以分别将数据写入到每个数据区段中,具体来说可以将数据写入到数据块上。在本实施例中,在对存储器7进行写入操作时需要首先读取索引区段的内容,索引区段中设有多个索引块,每个索引块以数字,字母或字符串等形式表示,通过该索引块可以映射到某一数据区段的某一数据块上。在一个实施例中,可以根据预设规定通过索引块映射到某一数据区段的特定数据块上,例如第一个索引块只能映射到数据区段的第一个数据块上,第二个索引块只能映射到数据区段的第二个数据块上等等;在另一个实施例中,可以预先增大索引块的信息量,使得索引块映射的数据块的位置是可以变化的。

s2,当向存储器7中写入数据时,根据索引块的索引将数据写入到相应的数据区段的数据块上。由于通过该索引块可以映射到某一数据区段的某一数据块上,因此根据索引块的索引可以将需要写入的数据写入到合适的数据块上,并不会造成对存储器7中原有的有效数据的覆盖。重要的是一般情况下可以根据索引块的索引只针对一个数据块进行写入操作,而不对其他的数据区段的数据块进行操作,也不会对同一数据区段的其他数据块进行操作,这样无疑减轻了工作量,并且减少了对存储器7的擦写次数,提高了存储器7的使用寿命。

s3,根据写入存储器7的数据的位置信息更新索引块。每当完成一次写入操作时,数据块中的数据便发生了变化,此时需要根据新的数据存储情况来索引,也就是需要根据写入存储器7的数据的位置信息来更新索引块,以使索引块的内容为新的,当再次进行写入操作时便能够根据新的索引块的索引进行写入操作。例如,索引块指示了哪些数据区段的哪些数据块为有效数据,在写入操作时可以避开这些有效数据,而可以将预写入的数据写入到其他的空的数据区段或数据块中,也可以将预写入的数据写入到仅仅存储有无效数据的数据块上,在避开这些有效数据的同时也不会对存储这些有效数据的数据块进行写入操作,总体上减少了对存储器7的擦写次数。

在本发明的一个实施例中,如图2所示,根据所述索引块的索引将数据写入到相应的数据区段的数据块上包括:

s21,根据索引块的索引获取存储有有效数据的第一数据区段的信息。在一个实施例中,只要数据块上存储有有效数据则认为该数据块所在的数据区段为存储有有效数据的第一数据区段;在另一个实施中,数据区段的所有数据块上均存储有有效数据时才认为该数据区段为存储有有效数据的第一数据区段。而第一数据区段的信息包括第一数据区段的id号,数据块的数量或存储的有效数据的情况等信息,获取第一数据区段的信息后能够明确第一数据区段的位置,以使写入操作不再向存储有有效数据的第一数据区段中写入数据,否则会造成写入错误或数据丢失。在一个实施例中,在根据索引块的索引获取第一数据区段的信息时,可以按照索引块的排列顺序依次使用每个索引块获取第一数据区段的信息,从而可以按照预设的判断步骤来寻找第一数据区段。

s22,根据第一数据区段的信息将数据写入到与第一数据区段相邻的第二数据区段上,其中第二数据区段存储的数据无效。该写入方式可以在合适的数据区段上依次写入数据,且不会造成有效数据的无序排列,例如可以按照数据区段的id号由小到大的顺序将数据写入到相应的数据区段上。

在本发明的一个实施例中,当所有的数据区段上均存储有有效数据并继续对存储器7进行写入数据的操作时,将有效数据移动到预设的第一数据区段的数据块上,并相应的更新索引块;根据更新后的索引块的索引将数据写入到第二数据区段上,其中第二数据区段中没有存储任何有效数据。该步骤在所有的数据区段均存储有有效数据(并不是所有的数据区段中所有的数据块均存储有有效数据)而再对存储器7进行写入操作的情况下,可以按照预设规则将存储有有效数据的数据块进行移动,从而在数据区段中腾出空间,以再次接受写入数据的操作,从而避免数据写入错误或有效数据被覆盖掉。

为了进一步说明上述步骤,下面结合图5举例进行说明,在一个实施例中,存储器7中设有3个数据区段,在进行写入操作时,可以按照预设顺序首先判断索引区段中的一个索引块(该索引块的位置可以预先设定)的数值是否为0xff,其中0x代表是否为十六位进制,如果该索引块的数值是十六位进制的ff时,则指示了id号为1的数据区段为有效的数据区段(存储有有效数据),从而可以将数据写入到id号为2的数据区段中,然后将索引块的内容更新为0x7f,其中的7f说明了id号为2的数据区段为有效的数据区段,如果再进行数据写入时,需要再根据该索引块进行判断,如果该索引块的数值为0x7f则说明id号为2的数据区段为有效的数据区段,从而需要将数据写入到id号为3的数据区段上,并且将该索引块的数值更新为0x0f。此时如果再对存储器7进行数据写入时(注意在本实施例中存储器7仅设置了3个数据区段),此时存储器7中的3个数据区段均已经存储有有效数据,在对索引块进行判断时,判断其数值是否为0x0f,如果是的话则说明3个数据区段均已经存储有有效数据,此时需要将有效数据移动到id号为1的数据区段上(即预设的第一数据区段的数据块上),并相应的更新索引块,然后根据更新后的索引块的索引将数据写入到其他的已经腾出空间的数据区段上(即第二数据区段上),在一个实施例中,将id号为1和2的数据区段的有效数据拷贝到id号为3的数据区段上,清除id号为1的数据区段,再将id号为3的数据区段上的数据拷贝到id号为1的数据区段上(即将有效数据写入到了id号为1的数据区段上),然后更新索引块的数值为0xff,从而指示了id号为1的数据区段为有效的数据区段(存储有有效数据),再写数据时需要将其写入到id号为2数据区段上。

在本发明的一个实施例中,索引块以十六进制数值表示,十六进制数值对应有二进制数值,根据二进制数值的位的变化来索引数据块。例如,十六进制的0f对应的二进制数值为1111,十六进制的1f对应的二进制数值为11111,十六进制的3f对应的二进制数值为111111,十六进制的7f对应的二进制数值为1111111,十六进制的ff对应的二进制数值为11111111。如果上述一个二进制数值的数位1变为了0,则可能0f,1f,3f,7f或ff中至少两个数值之间发生了相互的转换,即索引块进行了更新,并且数据规整,操作便利,保证更新索引块的正确。

在本发明的一个实施例中,对ec的存储器7中数据的读写方法还包括读操作,如图7所示,读操作包括:读取索引块的内容,根据索引块的索引从相应的数据区段的数据块上读取数据。该读操作定位精准,也能够降低对智能设备的ec等芯片的存储器7中的数据读的次数,并且特别是在对存储器7进行读操作时能够仅对存储器7的部分区域进行读取,而避免使用整个存储器7的存储介质,从而延长ec等芯片的使用寿命。

下面结合图6举例,对ec的存储器7中数据的读写方法中的写操作的过程进行说明:

首先进行写入数据11的操作即write11,offset为引用函数,offset03是指向数据区段中的第3个数据块中存储有效数据,在写入数据11时判断索引区段中的第3个索引块的数值为ff,则指示了id号为1的数据区段为有效的数据区段(其第3个数据块存储有有效数据),则将11写入到id号为2的数据区段的第3个数据块中,然后更新第3个索引块的数值为7f;再进行写入数据22的操作,第3个索引块的数值为7f指示了id号为2的数据区段的第3个数据块存储有有效数据,则将22写入到id号为3的数据区段的第3个数据块中,然后更新第3个索引块的数值为0f;再进行写入数据33的操作,此时3个数据区段中每个数据区段的第3个数据块均存储有效数据,此时根据索引区段中第1个索引块的数值ff和第2个索引块数值7f的索引,可以分别确定id号为1的数据区段中的数据03和id号为2的数据区段中的数据02为有效数据,然后将03和02拷贝到id号为3的数据区段中,清除id号为1的数据区段中的内容,然后将id号为3的数据区段中的有效数据拷贝到id号为1的数据区段中,清除id号为2和3的数据区段中的内容,并将数据33写入到id号为2的数据区段中的第3个数据块上,然后将第3个索引块的数值更新为7f。上述方法能够在一般情况下仅对存储器7的部分区域进行写入,而避免使用整个存储器7的存储介质,在特殊情况下(如上述的3个数据区段均存储有有效数据)还能够避免数据写入错误或有效数据被覆盖掉。

本发明实施例还提供了一种对ec的存储器7中数据的读写装置,该读写装置能够降低对其ec等芯片的存储器7中的数据的读写次数,并且特别是在对存储器7进行写入操作时能够仅对存储器7的部分区域进行写入,而避免使用整个存储器7的存储介质,从而延长ec等芯片的使用寿命,读写装置包括写装置1,如图3所示,写装置1包括设置模块2,写入模块3和更新模块4。

设置模块2配置为在存储器7中分别设置索引区段和多个数据区段,并且在数据区段中设置多个数据块以存放数据,在索引区段中设置多个索引块,索引块与数据块相对应。存储器7为智能设备的ec等部件的存储器7,例如可以为ec的eeprom或flashrom等,在ec的工作过程中,需要对存储器7进行读写操作。在本实施例中设置模块2在存储器7中设置多个数据区段,每个数据区段均可以存储数据,在写入模块3对存储器7进行写入操作时可以分别将数据写入到每个数据区段中,具体来说可以将数据写入到数据块上。在本实施例中,在写入模块3对存储器7进行写入操作时需要首先读取索引区段的内容,索引区段中设有多个索引块,每个索引块以数字,字母或字符串等形式表示,通过该索引块可以映射到某一数据区段的某一数据块上。在一个实施例中,可以根据预设规定通过索引块映射到某一数据区段的特定数据块上,例如第一个索引块只能映射到数据区段的第一个数据块上,第二个索引块只能映射到数据区段的第二个数据块上等等;在另一个实施例中,可以预先增大索引块的信息量,使得索引块映射的数据块的位置是可以变化的。

写入模块3配置为向存储器7中写入数据时,根据索引块的索引将数据写入到相应的数据区段的数据块上。由于通过该索引块可以映射到某一数据区段的某一数据块上,因此写入模块3根据索引块的索引可以将需要写入的数据写入到合适的数据块上,并不会造成对存储器7中原有的有效数据的覆盖。重要的是一般情况下写入模块3可以根据索引块的索引只针对一个数据块进行写入操作,而不对其他的数据区段的数据块进行操作,也不会对同一数据区段的其他数据块进行操作,这样无疑减轻了工作量,并且减少了对存储器7的擦写次数,提高了存储器7的使用寿命。

更新模块4与写入模块3连接,更新模块4配置为根据写入模块3写入存储器7的数据的位置信息更新索引块。每当写入模块3完成一次写入操作时,数据块中的数据便发生了变化,此时需要根据新的数据存储情况来索引,也就是需要更新模块4根据写入存储器7的数据的位置信息来更新索引块,以使索引块的内容为新的,当写入模块3再次进行写入操作时便能够根据新的索引块的索引进行写入操作。例如,索引块指示了哪些数据区段的哪些数据块为有效数据,在写入模块3写入操作时可以避开这些有效数据,而可以将预写入的数据写入到其他的空的数据区段或数据块中,写入模块3也可以将预写入的数据写入到仅仅存储有无效数据的数据块上,在避开这些有效数据的同时也不会对存储这些有效数据的数据块进行写入操作,总体上减少了对存储器7的擦写次数。

在本发明的一个实施例中,写入模块3包括获取单元,获取单元配置为根据索引块的索引获取存储有有效数据的第一数据区段的信息,以使写入模块3根据第一数据区段的信息将数据写入到与第一数据区段相邻的第二数据区段上,其中第二数据区段存储的数据无效。在一个实施例中,只要数据块上存储有有效数据则认为该数据块所在的数据区段为存储有有效数据的第一数据区段;在另一个实施中,数据区段的所有数据块上均存储有有效数据时才认为该数据区段为存储有有效数据的第一数据区段。而第一数据区段的信息包括第一数据区段的id号,数据块的数量或存储的有效数据的情况等信息,获取单元获取第一数据区段的信息后能够明确第一数据区段的位置,以使写入操作不再向存储有有效数据的第一数据区段中写入数据,否则会造成写入错误或数据丢失。在一个实施例中,获取单元在根据索引块的索引获取第一数据区段的信息时,可以按照索引块的排列顺序依次使用每个索引块获取第一数据区段的信息,从而可以按照预设的判断步骤来寻找第一数据区段。而将数据写入到第二数据区段上的写入方式可以在合适的数据区段上依次写入数据,且不会造成有效数据的无序排列,例如可以按照数据区段的id号由小到大的顺序将数据写入到相应的数据区段上。

在本发明的一个实施例中,如图4所示,写装置1还包括转移模块5,转移模块5分别与写模块和更新模块4连接,转移模块5配置为当所有的数据区段上均存储有有效数据并且写入模块3继续对存储器7进行写入数据的操作时,将有效数据移动到预设的第一数据区段的数据块上,并驱动更新模块4更新相应的索引块,以使写入模块3根据更新后的索引块的索引将数据写入到第二数据区段上。上述的在所有的数据区段均存储有有效数据(并不是所有的数据区段中所有的数据块均存储有有效数据)而再对存储器7进行写入操作的情况下,转移模块5可以按照预设规则将存储有有效数据的数据块进行移动,从而在数据区段中腾出空间,以再次接受写入数据的操作,从而避免数据写入错误或有效数据被覆盖掉。

为了进一步说明上述步骤,下面结合图5举例进行说明,在一个实施例中,设置模块2在存储器7中设置有3个数据区段,在写入模块进行写入操作时,可以按照预设顺序首先判断索引区段中的一个索引块(该索引块的位置可以预先设定)的数值是否为0xff,其中0x代表是否为十六位进制,如果该索引块的数值是十六位进制的ff时,则指示了id号为1的数据区段为有效的数据区段(存储有有效数据),从而可以将数据写入到id号为2的数据区段中,然后更新模块4将索引块的内容更新为0x7f,其中的7f说明了id号为2的数据区段为有效的数据区段,如果写入模块3再进行数据写入时,需要再根据该索引块进行判断,如果该索引块的数值为0x7f则说明id号为2的数据区段为有效的数据区段,从而需要将数据写入到id号为3的数据区段上,并且更新模块4将该索引块的数值更新为0x0f。此时如果写入模块3再对存储器7进行数据写入时(注意在本实施例中存储器7仅设置了3个数据区段),此时存储器7中的3个数据区段均已经存储有有效数据,在对索引块进行判断时,写入模块3要判断其数值是否为0x0f,如果是的话则说明3个数据区段均已经存储有有效数据,此时需要转移模块5将有效数据移动到id号为1的数据区段上(即预设的第一数据区段的数据块上),并相应的更新索引块,然后写入模块3根据更新模块4更新后的索引块的索引将数据写入到其他的已经腾出空间的数据区段上(即第二数据区段上),在一个实施例中,转移模块5将id号为1和2的数据区段的有效数据拷贝到id号为3的数据区段上,清除id号为1的数据区段,再将id号为3的数据区段上的数据拷贝到id号为1的数据区段上(即将有效数据写入到了id号为1的数据区段上),然后更新模块4更新索引块的数值为0xff,从而指示了id号为1的数据区段为有效的数据区段(存储有有效数据),写入模块3再写数据时需要将其写入到id号为2数据区段上。

在本发明的一个实施例中,索引块以十六进制数值表示,十六进制数值对应有二进制数值,根据二进制数值的位的变化来索引数据块。例如,十六进制的0f对应的二进制数值为1111,十六进制的1f对应的二进制数值为11111,十六进制的3f对应的二进制数值为111111,十六进制的7f对应的二进制数值为1111111,十六进制的ff对应的二进制数值为11111111。如果上述一个二进制数值的数位1变为了0,则可能0f,1f,3f,7f或ff中至少两个数值之间发生了相互的转换,即更新模块4对索引块进行了更新,并且数据规整,操作便利,保证更新索引块的正确。

在本发明的一个实施例中,结合图4和图7,对ec的存储器7中数据的读写装置还包括读装置6,读装置6配置为读取索引块的内容,根据索引块的索引从相应的数据区段的数据块上读取数据。该读装置6定位精准,也能够降低对智能设备的ec等芯片的存储器7中的数据读的次数,并且特别是在对存储器7进行读操作时能够仅对存储器7的部分区域进行读取,而避免使用整个存储器7的存储介质,从而延长ec等芯片的使用寿命。

下面结合图6举例,对ec的存储器7中数据的读写装置中的写装置1的工作过程进行说明:

首先写入模块3进行写入数据11的操作即write11,offset为引用函数,offset03是指向数据区段中的第3个数据块中存储有效数据,在写入模块3写入数据11时判断索引区段中的第3个索引块的数值为ff,则指示了id号为1的数据区段为有效的数据区段(其第3个数据块存储有有效数据),则写入模块3将11写入到id号为2的数据区段的第3个数据块中,然后更新模块4更新第3个索引块的数值为7f;写入模块3再进行写入数据22的操作,第3个索引块的数值为7f指示了id号为2的数据区段的第3个数据块存储有有效数据,则写入模块3将22写入到id号为3的数据区段的第3个数据块中,然后更新模块4更新第3个索引块的数值为0f;写入模块3再进行写入数据33的操作,此时3个数据区段中每个数据区段的第3个数据块均存储有效数据,此时根据索引区段中第1个索引块的数值ff和第2个索引块数值7f的索引,转移模块5可以分别确定id号为1的数据区段中的数据03和id号为2的数据区段中的数据02为有效数据,然后将03和02拷贝到id号为3的数据区段中,清除id号为1的数据区段中的内容,然后将id号为3的数据区段中的有效数据拷贝到id号为1的数据区段中,清除id号为2和3的数据区段中的内容,写入模块3将数据33写入到id号为2的数据区段中的第3个数据块上,然后更新模块4更新第3个索引块的数值为7f。上述写装置1能够在一般情况下仅对存储器7的部分区域进行写入,而避免使用整个存储器7的存储介质,在特殊情况下(如上述的3个数据区段均存储有有效数据)还能够避免数据写入错误或有效数据被覆盖掉。

以上实施例仅为本发明的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本发明的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1