数据存取方法、存取装置、家电设备和可读存储介质与流程

文档序号:14897329发布日期:2018-07-08 08:48阅读:133来源:国知局

本发明涉及存储器技术领域,具体而言,涉及一种数据存取方法、一种数据存取装置、一种家电设备和一种计算机可读存储介质。



背景技术:

针对空调器等家电设备,采用微控制芯片(microcontrollerunit,mcu)控制设备运行,并将相关数据存储在flash,flash具有以下特性:

(1)需要先擦后写,不能使用新数据覆盖旧数据,因此为了确保擦写失败后依然有可用的数据,相关技术中,采用在flash上保留数据的两个备份的方式,先擦写主数据,再擦写备份数据;

(2)擦除粒度远大于写入粒度,一次可以只写入1个字节的数据,但一次擦除会擦除整个扇区的数据,典型值为4096字节;

针对上述的flash特性,在使用过程中存在以下缺陷:

(1)扇区内只存放远小于扇区空间的数据,会造成flash空间和寿命的浪费;

(2)擦除扇区时需要对不进行更新的其他数据在mcu的ram上进行临时备份,导致占用大量的ram资源,对与很多ram大小比扇区大小要小的空调设备使用的嵌入式mcu来说是不可能的。



技术实现要素:

本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。

为此,本发明的目的在于提供一种数据存取方法、一种数据存取装置、一种一种微控制芯片和一种计算机可读存储介质。

为了实现上述目的,本发明的第一方面的技术方案提供了一种数据存取方法,包括:在微控制芯片执行上电初始化操作时,读取ram存储器中的指定数据副本的逻辑地址,以根据预设的映射关系,确定逻辑地址对应flash存储器中的物理地址;确定物理地址指向的存储区域,以确定存储区域中指定数据副本的当前最新副本的读地址,和/或指定数据副本的待写入副本的写地址;根据读地址读取flash中的当前最新副本,或根据写地址将待写入副本写入flash中。

在该技术方案中,通过在上电初始化时,对ram存储器中的逻辑地址进行地址映射,以确定对应的物理地址,以根据物理地址查找flash中对应的存储区域,进而确定存储区域中的数据副本读地址与数据副本写地址,以根据读地址读取数据副本,或根据写地址重新写入更新后的数据,一方面,ram中只需要存储逻辑地址,以根据逻辑地址确定指向的数据副本的读地址与写地址,不需要进行存储数据的临时备份,节省了ram存储器的资源从而能够广泛应用于内存资源紧缺,不方便划分大量内存资源记录flash存储状况的空调设备上的单片机(微控制芯片)上。

具体地,把flash上的指定范围的地址都映射为一个特定地址数据,作为逻辑地址,指定范围内可以具有多个扇区,在多个扇区内存放指定数据的多个副本,通过确定当前最新副本的读地址,和/或待写入副本的写地址,以对应执行读取与写入操作。

其中,地址映射最小单位可以为1页。

在上述技术方案中,优选地,在微控制芯片执行上电初始化操作时,读取ram存储器中的指定数据副本的逻辑地址前,还包括:根据指定数据的长度将存储区域中的每个扇区划分为多个数据区域;根据写入时间,将指定数据副本顺序写入每个扇区中的数据区域内

在该技术方案中,通过将每个扇区划分为多个数据区域,以在每个数据区间内都存储一个数据副本,在同一时间内存有同一数据的多个副本,实现了扇区存储区间的充分利用,并且设备每次上电时都能找到一份可用的数据,就算设备在擦写运行关键数据过程中意外掉电,再启动后依然能够正常运行,有效提高设备鲁棒性。

其中,指定数据可以为运行配置数据。

具体地,一个存储区域可以为1页,1页可以由多个扇区,每个扇区具有多个数据区域,即一个扇区可以存储多个数据副本,在每个扇区内,数据副本的存储均按照存储时间从前往后存储,即存取区域越前,存储数据的版本越低。

在上述任一技术方案中,优选地,确定存储区域中指定数据副本的当前最新副本的读地址,和/或指定数据副本的待写入副本的写地址,具体包括以下步骤:根据存储区域的初始地址,对多个数据区域顺序进行扫描,以确定第一位特定数据区域,特定数据区域中具有能够校验通过的指定数据副本;自第一位特定数据区域起,检测是否具有多个连续的存储数据的数据区域;在检测到具有多个连续的数据区域时,确定最后位特定数据区域,以将最后位特定数据区域的地址确定为当前最新副本的读地址;检测最后位特定数据区域之后是否具有可写入数据区域;在检测到具有可写入数据区域时,将第一个扫描到的可写入数据区域的地址确定为待写入副本的写地址。

在该技术方案中,通过根据存储区域的初始地址执行存储区域的扫描操作,初始地址对应第一个扇区的第一个数据区域,通常都会存储数据副本,在该数据副本未损坏的情况下,数据副本可以通过校验,即第一个数据区域为第一个数据区域,从第一个含有校验通过的数据的区域开始,连续多个含有数据的区域中(无论校验是否通过)中,最后一个通过校验的数据,则可以确定为为当前最新副本,当前最新副本后,继续顺序扫描,扫描到的第一个可以写入数据的区域为更新版本的待写入副本的数据区域,从而在新版本数据写入过程中,针对写入操作不再直接覆盖旧数据,而是在区域内写入数据的新版本。

具体地,根据存储区域的初始地址执行存储区域的扫描操作,在最初完全存储状态下,第一扇区存储的数据为最旧版本的数据,在存储区域已经写满多个版本的指定数据时,则首先擦除第一扇区存储的数据,以在第一扇区写入更新版本的数据,此时第一扇区的数据版本相对更高,在扫描操作时,只需要对第一扇区进行扫描操作,以确定读地址与写地址。

在上述任一技术方案中,优选地,还包括:在检测到不具有可写入数据区域时,将写入时间最早的扇区中的指定数据副本擦除;将擦除的扇区内最前的数据区域,确定为待写入副本的写地址。

在该技术方案中,在检测到不具有可写入区域时,即在写入操作后所有数据区域均被写满时,则需要先擦除保存最旧版本数据的扇区,以为更加新的版本的写入腾出空间,与现有技术中的存取方案相比,不需要频繁的执行擦除操作,从而有利于flash使用寿命的延长。

具体地,在前面的扇区因为读写区域写满而被擦除时,则需要从起始地址开始重新写入,此时,待写入副本的数据区域处于新版本数据和旧版本数据之间,并可以作为间隔区域进行区分新版本的数据与旧版本的数据。

在上述任一技术方案中,优选地,根据写地址将待写入副本写入flash中,具体包括以下步骤:在将待写入副本写入flash中后,校验检测待写入副本是否校验通过;在检测到待写入副本校验未通过时,确定下一个可写入数据区域,直至待写入副本写入后校验通过;在检测到待写入副本校验通过时,将待写入副本确定为当前最新副本,并更新指定数据副本的逻辑地址。

在该技术方案中,在执行数据写入操作时,在数据副本写入后,检测数据写入是否成功,即数据副本校验是否通过,以在校验未通过时,则继续顺延到后一个数据区域,继续执行写入操作,并在写入成功后,将待写入副本确定为当前最新副本,以及将下一个待写入区域确定为待写入区域的地址,从而实现读数据、写数据的地址更新,在更新数据时,只需要写入新副本,只有在指定的flash存储区域都写满时才擦除存放旧数据的扇区,大大减少了flash的擦除次数,有效延长flash的寿命。

具体地,数据副本的校验操作,可以通过在数据后面增加校验码实现,也可以通过哈希计算实现。

本发明的第二方面的技术方案提供了一种数据存取装置,包括:读取单元,用于在微控制芯片执行上电初始化操作时,读取ram存储器中的指定数据副本的逻辑地址,以根据预设的映射关系,确定逻辑地址对应flash存储器中的物理地址;确定单元,用于确定物理地址指向的存储区域,以确定存储区域中指定数据副本的当前最新副本的读地址,和/或指定数据副本的待写入副本的写地址;读写单元,用于根据读地址读取flash中的当前最新副本,或根据写地址将待写入副本写入flash中。

在该技术方案中,通过在上电初始化时,对ram存储器中的逻辑地址进行地址映射,以确定对应的物理地址,以根据物理地址查找flash中对应的存储区域,进而确定存储区域中的数据副本读地址与数据副本写地址,以根据读地址读取数据副本,或根据写地址重新写入更新后的数据,一方面,ram中只需要存储逻辑地址,以根据逻辑地址确定指向的数据副本的读地址与写地址,不需要进行存储数据的临时备份,节省了ram存储器的资源从而能够广泛应用于内存资源紧缺,不方便划分大量内存资源记录flash存储状况的空调设备上的单片机(微控制芯片)上。

具体地,把flash上的指定范围的地址都映射为一个特定地址数据,作为逻辑地址,指定范围内可以具有多个扇区,在多个扇区内存放指定数据的多个副本,通过确定当前最新副本的读地址,和/或待写入副本的写地址,以对应执行读取与写入操作。

其中,地址映射最小单位可以为1页。

在上述技术方案中,优选地,还包括:划分单元,用于根据指定数据的长度将存储区域中的每个扇区划分为多个数据区域;写入单元,用于根据写入时间,将指定数据副本顺序写入每个扇区中的数据区域内

在该技术方案中,通过将每个扇区划分为多个数据区域,以在每个数据区间内都存储一个数据副本,在同一时间内存有同一数据的多个副本,实现了扇区存储区间的充分利用,并且设备每次上电时都能找到一份可用的数据,就算设备在擦写运行关键数据过程中意外掉电,再启动后依然能够正常运行,有效提高设备鲁棒性。

其中,指定数据可以为运行配置数据。

具体地,一个存储区域可以为1页,1页可以由多个扇区,每个扇区具有多个数据区域,即一个扇区可以存储多个数据副本,在每个扇区内,数据副本的存储均按照存储时间从前往后存储,即存取区域越前,存储数据的版本越低。

在上述任一技术方案中,优选地,还包括:扫描单元,用于根据存储区域的初始地址,对多个数据区域顺序进行扫描,以确定第一位特定数据区域,特定数据区域中具有能够校验通过的指定数据副本;检测单元,用于自第一位特定数据区域起,检测是否具有多个连续的存储数据的数据区域;确定单元还用于:在检测到具有多个连续的数据区域时,确定最后位特定数据区域,以将最后位特定数据区域的地址确定为当前最新副本的读地址;检测单元还用于:检测最后位特定数据区域之后是否具有可写入数据区域;确定单元还用于:在检测到具有可写入数据区域时,将第一个扫描到的可写入数据区域的地址确定为待写入副本的写地址。

在该技术方案中,通过根据存储区域的初始地址执行存储区域的扫描操作,初始地址对应第一个扇区的第一个数据区域,通常都会存储数据副本,在该数据副本未损坏的情况下,数据副本可以通过校验,即第一个数据区域为第一个数据区域,从第一个含有校验通过的数据的区域开始,连续多个含有数据的区域中(无论校验是否通过)中,最后一个通过校验的数据,则可以确定为为当前最新副本,当前最新副本后,继续顺序扫描,扫描到的第一个可以写入数据的区域为更新版本的待写入副本的数据区域,从而在新版本数据写入过程中,针对写入操作不再直接覆盖旧数据,而是在区域内写入数据的新版本。

具体地,根据存储区域的初始地址执行存储区域的扫描操作,在最初完全存储状态下,第一扇区存储的数据为最旧版本的数据,在存储区域已经写满多个版本的指定数据时,则首先擦除第一扇区存储的数据,以在第一扇区写入更新版本的数据,此时第一扇区的数据版本相对更高,在扫描操作时,只需要对第一扇区进行扫描操作,以确定读地址与写地址。

在上述任一技术方案中,优选地,还包括:擦除单元,用于在检测到不具有可写入数据区域时,将写入时间最早的扇区中的指定数据副本擦除;确定单元还用于:将擦除的扇区内最前的数据区域,确定为待写入副本的写地址。

在该技术方案中,在检测到不具有可写入区域时,即在写入操作后所有数据区域均被写满时,则需要先擦除保存最旧版本数据的扇区,以为更加新的版本的写入腾出空间,与现有技术中的存取方案相比,不需要频繁的执行擦除操作,从而有利于flash使用寿命的延长。

具体地,在前面的扇区因为读写区域写满而被擦除时,则需要从起始地址开始重新写入,此时,待写入副本的数据区域处于新版本数据和旧版本数据之间,并可以作为间隔区域进行区分新版本的数据与旧版本的数据。

在上述任一技术方案中,优选地,还包括:校验单元,用于在将待写入副本写入flash中后,校验检测待写入副本是否校验通过;确定单元还用于:在检测到待写入副本校验未通过时,确定下一个可写入数据区域,直至待写入副本写入后校验通过;数据存取装置还包括:更新单元,用于在检测到待写入副本校验通过时,将待写入副本确定为当前最新副本,并更新指定数据副本的逻辑地址。

在该技术方案中,在执行数据写入操作时,在数据副本写入后,检测数据写入是否成功,即数据副本校验是否通过,以在校验未通过时,则继续顺延到后一个数据区域,继续执行写入操作,并在写入成功后,将待写入副本确定为当前最新副本,以及将下一个待写入区域确定为待写入区域的地址,从而实现读数据、写数据的地址更新,在更新数据时,只需要写入新副本,只有在指定的flash存储区域都写满时才擦除存放旧数据的扇区,大大减少了flash的擦除次数,有效延长flash的寿命。

具体地,数据副本的校验操作,可以通过在数据后面增加校验码实现,也可以通过哈希计算实现。

本发明的第三方面的技术方案提供了一种家电设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现本发明第一方面的技术方案提出的任一项的数据存取方法的步骤,或包括本发明第二方面的技术方案提出的任一项的数据存取装置。

本发明的第四方面的技术方案提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现本发明第一方面技术方案提出的任一项的数据存取方法。

本发明的附加方面和优点将在下面的描述部分中给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1示出了根据本发明的一个实施例的数据存取方法的示意流程图;

图2示出了根据本发明的一个实施例的数据存取装置的示意框图;

图3示出了根据本发明的一个实施例的数据映射的示意图;

图4示出了根据本发明的另一个实施例的数据存取方法的示意流程图;

图5示出了根据本发明的再一个实施例的数据存取方法的示意流程图;

图6示出了根据本发明的一个实施例的微控制芯片的示意框图。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。

实施例1

图1示出了根据本发明的一个实施例的数据存取方法的示意流程图。

如图1所示,根据本发明的一个实施例的数据存取方法,包括:步骤102,在微控制芯片执行上电初始化操作时,读取ram存储器中的指定数据副本的逻辑地址,以根据预设的映射关系,确定逻辑地址对应flash存储器中的物理地址;步骤104,确定物理地址指向的存储区域,以确定存储区域中指定数据副本的当前最新副本的读地址,和/或指定数据副本的待写入副本的写地址;步骤106,根据读地址读取flash中的当前最新副本,或根据写地址将待写入副本写入flash中。

在该实施例中,通过在上电初始化时,对ram存储器中的逻辑地址进行地址映射,以确定对应的物理地址,以根据物理地址查找flash中对应的存储区域,进而确定存储区域中的数据副本读地址与数据副本写地址,以根据读地址读取数据副本,或根据写地址重新写入更新后的数据,一方面,ram中只需要存储逻辑地址,以根据逻辑地址确定指向的数据副本的读地址与写地址,不需要进行存储数据的临时备份,节省了ram存储器的资源从而能够广泛应用于内存资源紧缺,不方便划分大量内存资源记录flash存储状况的空调设备上的单片机(微控制芯片)上。

实施例2

如图3所示,为了保证cpu执行指令时可正确访问存储单元,需将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址,这一过程称为地址映射,对应地,把flash上的指定范围的地址都映射为一个特定地址数据作为逻辑地址,指定范围的存储区域内可以具有多个扇区,在多个扇区内存放指定数据的多个副本(版本1至版本m),通过确定当前最新副本的读地址,和/或待写入副本的写地址,以对应执行读取与写入操作。

其中,地址映射最小单位可以为1页。

在上述实施例中,优选地,在微控制芯片执行上电初始化操作时,读取ram存储器中的指定数据副本的逻辑地址前,还包括:根据指定数据的长度将存储区域中的每个扇区划分为多个数据区域;根据写入时间,将指定数据副本顺序写入每个扇区中的数据区域内

在该实施例中,通过将每个扇区划分为多个数据区域,以在每个数据区间内都存储一个数据副本,在同一时间内存有同一数据的多个副本,实现了扇区存储区间的充分利用,并且设备每次上电时都能找到一份可用的数据,就算设备在擦写运行关键数据过程中意外掉电,再启动后依然能够正常运行,有效提高设备鲁棒性。

其中,指定数据可以为运行配置数据。

具体地,一个存储区域可以为1页,1页可以由多个扇区,每个扇区具有多个数据区域,即一个扇区可以存储多个数据副本,在每个扇区内,数据副本的存储均按照存储时间从前往后存储,即存取区域越前,存储数据的版本越低。

在上述任一实施例中,优选地,确定存储区域中指定数据副本的当前最新副本的读地址,和/或指定数据副本的待写入副本的写地址,具体包括以下步骤:根据存储区域的初始地址,对多个数据区域顺序进行扫描,以确定第一位特定数据区域,特定数据区域中具有能够校验通过的指定数据副本;自第一位特定数据区域起,检测是否具有多个连续的存储数据的数据区域;在检测到具有多个连续的数据区域时,确定最后位特定数据区域,以将最后位特定数据区域的地址确定为当前最新副本的读地址;检测最后位特定数据区域之后是否具有可写入数据区域;在检测到具有可写入数据区域时,将第一个扫描到的可写入数据区域的地址确定为待写入副本的写地址。

在该实施例中,通过根据存储区域的初始地址执行存储区域的扫描操作,初始地址对应第一个扇区的第一个数据区域,通常都会存储数据副本,在该数据副本未损坏的情况下,数据副本可以通过校验,即第一个数据区域为第一个数据区域,从第一个含有校验通过的数据的区域开始,连续多个含有数据的区域中(无论校验是否通过)中,最后一个通过校验的数据,则可以确定为为当前最新副本,当前最新副本后,继续顺序扫描,扫描到的第一个可以写入数据的区域为更新版本的待写入副本的数据区域,从而在新版本数据写入过程中,针对写入操作不再直接覆盖旧数据,而是在区域内写入数据的新版本。

实施例3

具体地,根据存储区域的初始地址执行存储区域的扫描操作,在最初完全存储状态下,第一扇区存储的数据为最旧版本的数据,在存储区域已经写满多个版本的指定数据时,则首先擦除第一扇区存储的数据,以在第一扇区写入更新版本的数据,此时第一扇区的数据版本相对更高,如表1所示,在扫描操作时,只需要对第一扇区进行扫描操作,以确定扇区a的区域5的地址为当前最新副本读地址,扇区a的区域6为待写入副本写地址。

表1

实施例4

图4示出了了读地址与写地址的具体确定步骤。

如图4所示,根据本发明的另一个实施例的数据读取方法,包括:步骤402,确定存储区域的初始地址;步骤404,对存储区域中的数据区域执行扫描操作;步骤406,确定第一存在数据副本,且数据副本有效的数据区域;步骤408,自该数据区域起确定是否具有多个连续的存储有数据的数据区域,在检测结果为“是”时,进入步骤410,在检测结果为“否”时,返回步骤404;步骤410,将最后一个数据副本验证有效的数据区域确定为数据读取的区域;步骤412,将该数据区域的下一个区域确定为数据写入的区域。

在上述任一实施例中,优选地,还包括:在检测到不具有可写入数据区域时,将写入时间最早的扇区中的指定数据副本擦除;将擦除的扇区内最前的数据区域,确定为待写入副本的写地址。

在该实施例中,在检测到不具有可写入区域时,即在写入操作后所有数据区域均被写满时,则需要先擦除保存最旧版本数据的扇区,以为更加新的版本的写入腾出空间,与现有技术中的存取方案相比,不需要频繁的执行擦除操作,从而有利于flash使用寿命的延长。

具体地,在前面的扇区因为读写区域写满而被擦除时,则需要从起始地址开始重新写入,此时,待写入副本的数据区域处于新版本数据和旧版本数据之间,并可以作为间隔区域进行区分新版本的数据与旧版本的数据。

在上述任一实施例中,优选地,根据写地址将待写入副本写入flash中,具体包括以下步骤:在将待写入副本写入flash中后,校验检测待写入副本是否校验通过;在检测到待写入副本校验未通过时,确定下一个可写入数据区域,直至待写入副本写入后校验通过;在检测到待写入副本校验通过时,将待写入副本确定为当前最新副本,并更新指定数据副本的逻辑地址。

在该实施例中,在执行数据写入操作时,在数据副本写入后,检测数据写入是否成功,即数据副本校验是否通过,以在校验未通过时,则继续顺延到后一个数据区域,继续执行写入操作,并在写入成功后,将待写入副本确定为当前最新副本,以及将下一个待写入区域确定为待写入区域的地址,从而实现读数据、写数据的地址更新,在更新数据时,只需要写入新副本,只有在指定的flash存储区域都写满时才擦除存放旧数据的扇区,大大减少了flash的擦除次数,有效延长flash的寿命。

具体地,数据副本的校验操作,可以通过在数据后面增加校验码实现,也可以通过哈希计算实现。

实施例5

附图5示出了新的数据副本写入的具体过程。

如图5所示,根据本发明的再一个实施例的数据读取方法,包括:步骤502,在写入最新的数据副本之前,检测在该数据副本写入之后,所有数据区域是否全部写满,在检测结果为“是”时,进入步骤504,在检测结果为“否”时,进入步骤506;步骤504,将待写入数据写入对应的数据区间,并进入步骤508;步骤506,擦除具有最旧数据副本的扇区,并进入步骤508;步骤508,读出待写入数据,以进行数据校验;步骤510,检测校验是否通过,在检测结果为“是”时,进入步骤512,在检测结果为“否”时,进入步骤514;步骤512,更新读取数据使用的区域,以及写入数据使用的区域;步骤514,顺延到下一个数据区域,并返回步骤502;步骤516,将该数据区域的下一个区域确定为数据写入的区域。

图2示出了根据本发明的实施例的数据存取装置的示意框图。

如图2所示,根据本发明的实施例的数据存取装置20,包括:读取单元202,用于在微控制芯片执行上电初始化操作时,读取ram存储器中的指定数据副本的逻辑地址,以根据预设的映射关系,确定逻辑地址对应flash存储器中的物理地址;确定单元204,用于确定物理地址指向的存储区域,以确定存储区域中指定数据副本的当前最新副本的读地址,和/或指定数据副本的待写入副本的写地址;读写单元206,用于根据读地址读取flash中的当前最新副本,或根据写地址将待写入副本写入flash中。

在该实施例中,通过在上电初始化时,对ram存储器中的逻辑地址进行地址映射,以确定对应的物理地址,以根据物理地址查找flash中对应的存储区域,进而确定存储区域中的数据副本读地址与数据副本写地址,以根据读地址读取数据副本,或根据写地址重新写入更新后的数据,一方面,ram中只需要存储逻辑地址,以根据逻辑地址确定指向的数据副本的读地址与写地址,不需要进行存储数据的临时备份,节省了ram存储器的资源从而能够广泛应用于内存资源紧缺,不方便划分大量内存资源记录flash存储状况的空调设备上的单片机(微控制芯片)上。

具体地,把flash上的指定范围的地址都映射为一个特定地址数据,作为逻辑地址,指定范围内可以具有多个扇区,在多个扇区内存放指定数据的多个副本,通过确定当前最新副本的读地址,和/或待写入副本的写地址,以对应执行读取与写入操作。

其中,地址映射最小单位可以为1页。

在上述实施例中,优选地,还包括:划分单元208,用于根据指定数据的长度将存储区域中的每个扇区划分为多个数据区域;写入单元210,用于根据写入时间,将指定数据副本顺序写入每个扇区中的数据区域内

在该实施例中,通过将每个扇区划分为多个数据区域,以在每个数据区间内都存储一个数据副本,在同一时间内存有同一数据的多个副本,实现了扇区存储区间的充分利用,并且设备每次上电时都能找到一份可用的数据,就算设备在擦写运行关键数据过程中意外掉电,再启动后依然能够正常运行,有效提高设备鲁棒性。

其中,指定数据可以为运行配置数据。

具体地,一个存储区域可以为1页,1页可以由多个扇区,每个扇区具有多个数据区域,即一个扇区可以存储多个数据副本,在每个扇区内,数据副本的存储均按照存储时间从前往后存储,即存取区域越前,存储数据的版本越低。

在上述任一实施例中,优选地,还包括:扫描单元212,用于根据存储区域的初始地址,对多个数据区域顺序进行扫描,以确定第一位特定数据区域,特定数据区域中具有能够校验通过的指定数据副本;检测单元214,用于自第一位特定数据区域起,检测是否具有多个连续的存储数据的数据区域;确定单元204还用于:在检测到具有多个连续的数据区域时,确定最后位特定数据区域,以将最后位特定数据区域的地址确定为当前最新副本的读地址;检测单元214还用于:检测最后位特定数据区域之后是否具有可写入数据区域;确定单元204还用于:在检测到具有可写入数据区域时,将第一个扫描到的可写入数据区域的地址确定为待写入副本的写地址。

在该实施例中,通过根据存储区域的初始地址执行存储区域的扫描操作,初始地址对应第一个扇区的第一个数据区域,通常都会存储数据副本,在该数据副本未损坏的情况下,数据副本可以通过校验,即第一个数据区域为第一个数据区域,从第一个含有校验通过的数据的区域开始,连续多个含有数据的区域中(无论校验是否通过)中,最后一个通过校验的数据,则可以确定为为当前最新副本,当前最新副本后,继续顺序扫描,扫描到的第一个可以写入数据的区域为更新版本的待写入副本的数据区域,从而在新版本数据写入过程中,针对写入操作不再直接覆盖旧数据,而是在区域内写入数据的新版本。

具体地,根据存储区域的初始地址执行存储区域的扫描操作,在最初完全存储状态下,第一扇区存储的数据为最旧版本的数据,在存储区域已经写满多个版本的指定数据时,则首先擦除第一扇区存储的数据,以在第一扇区写入更新版本的数据,此时第一扇区的数据版本相对更高,在扫描操作时,只需要对第一扇区进行扫描操作,以确定读地址与写地址。

在上述任一实施例中,优选地,还包括:擦除单元216,用于在检测到不具有可写入数据区域时,将写入时间最早的扇区中的指定数据副本擦除;确定单元204还用于:将擦除的扇区内最前的数据区域,确定为待写入副本的写地址。

在该实施例中,在检测到不具有可写入区域时,即在写入操作后所有数据区域均被写满时,则需要先擦除保存最旧版本数据的扇区,以为更加新的版本的写入腾出空间,与现有技术中的存取方案相比,不需要频繁的执行擦除操作,从而有利于flash使用寿命的延长。

具体地,在前面的扇区因为读写区域写满而被擦除时,则需要从起始地址开始重新写入,此时,待写入副本的数据区域处于新版本数据和旧版本数据之间,并可以作为间隔区域进行区分新版本的数据与旧版本的数据。

在上述任一实施例中,优选地,还包括:校验单元218,用于在将待写入副本写入flash中后,校验检测待写入副本是否校验通过;确定单元204还用于:在检测到待写入副本校验未通过时,确定下一个可写入数据区域,直至待写入副本写入后校验通过;数据存取装置20还包括:更新单元220,用于在检测到待写入副本校验通过时,将待写入副本确定为当前最新副本,并更新指定数据副本的逻辑地址。

在该实施例中,在执行数据写入操作时,在数据副本写入后,检测数据写入是否成功,即数据副本校验是否通过,以在校验未通过时,则继续顺延到后一个数据区域,继续执行写入操作,并在写入成功后,将待写入副本确定为当前最新副本,以及将下一个待写入区域确定为待写入区域的地址,从而实现读数据、写数据的地址更新,在更新数据时,只需要写入新副本,只有在指定的flash存储区域都写满时才擦除存放旧数据的扇区,大大减少了flash的擦除次数,有效延长flash的寿命。

具体地,数据副本的校验操作,可以通过在数据后面增加校验码实现,也可以通过哈希计算实现。

实施例6

如图6所示,根据本发明的一个家电设备60,包括存储器602、处理器604及存储在存储器602上并可在处理器上运行的计算机程序,处理器604执行计算机程序时实现本发明的上述任一实施例提出的任一项的数据存取方法的步骤。

实施例7

根据本发明的一个实施例的计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现本发明的上述任一实施例提出的任一项的数据存取方法的步骤。

以上结合附图详细说明了本发明的技术方案,本发明提出了一种数据存取方法、数据存取装置、家电设备和计算机可读存储介质,通过在上电初始化时,对ram存储器中的逻辑地址进行地址映射,以确定对应的物理地址,以根据物理地址查找flash中对应的存储区域,进而确定存储区域中的数据副本读地址与数据副本写地址,以根据读地址读取数据副本,或根据写地址重新写入更新后的数据,一方面,ram中只需要存储逻辑地址,以根据逻辑地址确定指向的数据副本的读地址与写地址,不需要进行存储数据的临时备份,节省了ram存储器的资源从而能够广泛应用于内存资源紧缺,不方便划分大量内存资源记录flash存储状况的空调设备上的单片机(微控制芯片)上。

本发明方法中的步骤可根据实际需要进行顺序调整、合并和删减。

本发明装置中的单元可根据实际需要进行合并、划分和删减。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质包括只读存储器(read-onlymemory,rom)、随机存储器(randomaccessmemory,ram)、可编程只读存储器(programmableread-onlymemory,prom)、可擦除可编程只读存储器(erasableprogrammablereadonlymemory,eprom)、一次可编程只读存储器(one-timeprogrammableread-onlymemory,otprom)、电子抹除式可复写只读存储器(electrically-erasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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