本发明涉及计算机处理技术领域,特别涉及一种基于ecc的flash数据异常处理方法及装置。
背景技术:
eeprom是微处理器用于读、写及更新变量的最理想的非易失性存储器。在没有内置eeprom的微控制器里,可以将内部的flash仿真成eeprom来达到目的。
当前的使用的基于ecc的flash模块,在用于模拟eeprom的功能时,由于数据操作异常等行为(读写不当或者一些外因,如写数据时断电等),可能会导致flash进入保护模式;在flash进入保护模式的情况下读取异常地址的数据时,会导致控制器里的mcu复位或进入某些异常状态,最终导致控制器的功能不正常,引发危险。
技术实现要素:
本发明提供一种至少部分解决上述技术问题的基于ecc的flash数据异常处理方法及装置。
第一方面,本发明提供一种基于ecc的flash数据异常处理方法,包括:
mcu在读取或写入当前flash扇区的片内flash数据的过程中,判断读取或写入的片内flash地址是否为被保护的地址;
若是,则判断是否进入异常中断处理;
若是,则修正读取指令或写入指令为读取或写入下一个片内flash地址。
优选的,所述方法还包括:
将所述被保护的地址对应的flash异常标志位置为有效,退出异常中断处理;
判断所述被保护的地址的flash异常标志位是否为有效;
若是,则将默认的无效值赋予预知的目标地址,并将所述flash异常标志位置为无效,读取所述下一个片内flash地址的数据或向所述下一个片内flash地址写入数据。
优选的,判断读取或写入的片内flash地址是否为被保护的地址之前,所述方法还包括:
判断flash扇区中所有数据条目是否有效;
若是,则向数据条目填充条目数据。
优选的,判断flash扇区中所有数据条目是否有效之后,所述方法还包括:
若否,则判断是否所有备份扇区都查询完毕;
若否,则判断当前查询的数据条目是否有效;
若是,则重复所述判断flash扇区中所有数据条目是否有效步骤。
优选的,判断当前查询的数据条目是否有效之后,所述方法还包括:
若否,则查找当前flash扇区的数据区,获取数据,用该数据填充当前查询的数据条目;
判断读当前flash扇区是否完成;
若是,则重复所述判断flash扇区中所有数据条目是否有效步骤。
优选的,所述方法还包括:
生成mcu故障信息,并将所述mcu故障信息发送给显示装置,以使所述显示装置显示所述mcu故障信息。
第二方面,本发明还提供一种基于ecc的flash数据异常处理装置,其特征在于,包括:
第一判断单元,用于mcu在读取或写入当前flash扇区的片内flash数据的过程中,判断读取或写入的片内flash地址是否为被保护的地址;
第二判断单元,用于若是,则判断是否进入异常中断处理;
修正单元,用于若是,则修正读取指令或写入指令为读取或写入下一个片内flash地址。
优选的,所述装置还包括:
置位单元,用于将所述被保护的地址对应的flash异常标志位置为有效,退出异常中断处理;
第三判断单元,用于判断所述被保护的地址的flash异常标志位是否为有效;
赋值单元,用于若是,则将默认的无效值赋予预知的目标地址,并将所述flash异常标志位置为无效,读取所述下一个片内flash地址的数据或向所述下一个片内flash地址写入数据。
第三方面,本发明还提供一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行所述的方法。
第四方面,本发明还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行所述的方法。
由上述技术方案可知,本发明所述的基于ecc的flash数据异常处理方法,mcu在读取或写入当前flash扇区的片内flash数据的过程中,判断读取或写入的片内flash地址是否为被保护的地址;若是,则判断是否进入异常中断处理;若是,则修正读取指令或写入指令为读取或写入下一个片内flash地址,因此能确保系统能尽可能的在ecc发生状态下能正常运行。
附图说明
图1为本发明一实施例提供的一种基于ecc的flash数据异常处理方法的流程图;
图2为本发明另一实施例提供的一种基于ecc的flash数据异常处理方法的流程图;
图3为本发明另一实施例提供的一种基于ecc的flash数据异常处理方法的流程图;
图4为本发明另一实施例提供的一种基于ecc的flash数据异常处理方法的流程图;
图5为本发明另一实施例提供的一种基于ecc的flash数据异常处理方法的流程图;
图6为本发明另一实施例提供的一种基于ecc的flash数据异常处理方法的流程图;
图7为本发明另一种实施例提供的一种基于ecc的flash数据异常处理装置的原理框图;
图8是本发明一实施例提供的电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明一实施例提供的一种基于ecc的flash数据异常处理方法的流程图。
如图1所示的一种基于ecc的flash数据异常处理方法,包括:
s101、mcu在读取或写入当前flash扇区的片内flash数据的过程中,判断读取或写入的片内flash地址是否为被保护的地址;若是,则执行步骤s102;若否,则执行步骤s102’;
s102、判断是否进入异常中断处理;若是,则执行步骤s103;若否,则执行步骤s103’;s103、修正读取指令或写入指令为读取或写入下一个片内flash地址。
在本步骤中,下一个片内flash地址是按照预设读取或写入顺序的下一个片内flash地址。
s103’、按照正常读取或写入方法读取或写入。
可以理解的是,按照正常读取或写入方法读取或写入可以为对该片内flash地址读取或写入。
s102’、对所述片内flash地址读取或写入。
图2为本发明另一实施例提供的一种基于ecc的flash数据异常处理方法的流程图。
图2中的步骤s201-s203’与上述步骤s101-s103’相同,不再赘述。
作为一种优选实施例,所述方法还包括:
s204、将所述被保护的地址对应的flash异常标志位置为有效,退出异常中断处理;
本步骤中,所述地址为片内flash地址,下文同,不再赘述。
s205、判断所述被保护的地址的flash异常标志位是否为有效;若是,则执行步骤s206;若否,则执行步骤s206’。
s206、将默认的无效值赋予预知的目标地址,并将所述flash异常标志位置为无效,读取所述下一个片内flash地址的数据或向所述下一个片内flash地址写入数据。
s206’、读取下一地址数据。
图3为本发明另一实施例提供的一种基于ecc的flash数据异常处理方法的流程图。
图3中的步骤s303-s308’与上述步骤s201-s206’相同,不再赘述。
作为一种优选实施例,所述步骤s303之前,所述方法还包括:
s301、判断flash扇区中所有数据条目是否有效;若是,则执行步骤s302。
s302、向数据条目填充条目数据。
图4为本发明另一实施例提供的一种基于ecc的flash数据异常处理方法的流程图。
图4中的步骤s401-s408’与上述步骤s301-s308’相同,不再赘述。
作为一种优选实施例,所述步骤s401之后,所述方法还包括:
若否,则执行步骤s409;
s409、判断是否所有备份扇区都查询完毕;若否,则执行步骤s410;
s410、判断当前查询的数据条目是否有效;
值得说明的是,本发明中,按照预设顺序依次查询每个数据条目。
若是,则重复所述步骤s401。
图5为本发明另一实施例提供的一种基于ecc的flash数据异常处理方法的流程图。
图5中的步骤s501-s510与上述步骤s401-s410相同,不再赘述。
作为一种优选实施例,所述步骤s510之后,所述方法还包括:
若否,则执行步骤s511;
s511、查找当前flash扇区的数据区,获取数据,用该数据填充当前查询的数据条目;
值得说明的是,查询扇区是从最新的数据存储扇区开始一个扇区一个扇区的顺序查询,查询到最新数据条目的有效内容填充到当前查询的数据条目的地址中。当前查寻条目查询到一次有效数据后,该数据条目设置为有效,便不再执行查寻。
s512、判断读当前flash扇区是否完成;若是,则重复所述步骤s501;若否,则执行步骤s513;
s513、继续读当前flash扇区,直到完成。
图6为本发明另一实施例提供的一种基于ecc的flash数据异常处理方法的流程图。
图6中的步骤s601-s613与上述步骤s501-s513相同,不再赘述。
作为一种优选实施例,所述方法还包括:
s614、生成mcu故障信息,并将所述mcu故障信息发送给显示装置,以使所述显示装置显示所述mcu故障信息。从而可以记录异常发生的相关信息。
本发明所述的基于ecc的flash数据异常处理方法,mcu在读取或写入当前flash扇区的片内flash数据的过程中,判断读取或写入的片内flash地址是否为被保护的地址;若是,则判断是否进入异常中断处理;若是,则修正读取指令或写入指令为读取或写入下一个片内flash地址,因此能确保系统能尽可能的在ecc发生状态下能正常运行;确保所有的数据条目存储的数据尽可能的有效。消除flash的数据异常后,纠错相关的flash扇区。
图7为本发明另一种实施例提供的一种基于ecc的flash数据异常处理装置的原理框图。
如图7所示的一种基于ecc的flash数据异常处理装置,包括:
第一判断单元701,用于mcu在读取或写入当前flash扇区的片内flash数据的过程中,判断读取或写入的片内flash地址是否为被保护的地址;
第二判断单元702,用于若是,则判断是否进入异常中断处理;
修正单元703,用于若是,则修正读取指令或写入指令为读取或写入下一个片内flash地址。
在本装置中,下一个片内flash地址是按照预设读取或写入顺序的下一个片内flash地址。
作为一种优选实施例,所述装置还包括:
置位单元,用于将所述被保护的地址对应的flash异常标志位置为有效,退出异常中断处理;
第三判断单元,用于判断所述被保护的地址的flash异常标志位是否为有效;
赋值单元,用于若是,则将默认的无效值赋予预知的目标地址,并将所述flash异常标志位置为无效,读取所述下一个片内flash地址的数据或向所述下一个片内flash地址写入数据。
本发明所述的基于ecc的flash数据异常处理方法,mcu在读取或写入当前flash扇区的片内flash数据的过程中,判断读取或写入的片内flash地址是否为被保护的地址;若是,则判断是否进入异常中断处理;若是,则修正读取指令或写入指令为读取或写入下一个片内flash地址,因此能确保系统能尽可能的在ecc发生状态下能正常运行;确保所有的数据条目存储的数据尽可能的有效。消除flash的数据异常后,纠错相关的flash扇区。
图8是本发明一实施例提供的电子设备的结构框图。
如图8所示的一种电子设备,包括:处理器801(processor)、存储器802(memory)和总线803;其中,
所述处理器801、存储器802通过所述总线803完成相互间的通信;
所述处理器801用于调用所述存储器802中的程序指令,以执行上述方法实施例所提供的方法,例如包括:mcu在读取或写入当前flash扇区的片内flash数据的过程中,判断读取或写入的片内flash地址是否为被保护的地址;若是,则判断是否进入异常中断处理;若是,则修正读取指令或写入指令为读取或写入下一个片内flash地址。
本发明还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:mcu在读取或写入当前flash扇区的片内flash数据的过程中,判断读取或写入的片内flash地址是否为被保护的地址;若是,则判断是否进入异常中断处理;若是,则修正读取指令或写入指令为读取或写入下一个片内flash地址。
应当注意的是,在本发明的装置的各个部件中,根据其要实现的功能而对其中的部件进行了逻辑划分,但是,本发明不受限于此,可以根据需要对各个部件进行重新划分或者组合,例如,可以将一些部件组合为单个部件,或者可以将一些部件进一步分解为更多的子部件。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
以上实施方式仅适于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。