本发明涉及存储技术领域,尤其涉及一种应答保护单调计数器及管理其计数值的方法。
背景技术:
含有应答保护单调计数器(replayprotectionmonotoniccounter,rpmc)的增强型flash是intel将主推的基本输入输出系统(basicinput-outputsystem,bios)芯片。它包含一个大容量的flash芯片和rpmc电路。其中,flash芯片用来存储cpubios的代码和数据;rpmc电路保证读写数据的机密性和完整性。rpmc电路与其集成的flash一起构成了计算机系统中bios的硬件平台。正是由于上述原因需要保存每次操作后rpmc的计数值,并且保存的计数值要正确,不然使用带有rpmc的flash的计算机将被锁定,不能正确操作。
现有技术中,应答保护单调计数器常采用两个存储块轮流对数据进行存储计数,在当前存储块未记满计数数据时,只需要在当前存储块中进行数据的读取或计数;但是当一个存储块存储满计数数据时,把当前的总的计数值数先写入另一个存储块中,并同时把另一个存储块的计数标识位和校验位写入,然后擦除写满数据的存储块,这时就需要对两个存储块进行必要的切换。但是,现有技术中,如果在两个存储块切换时异常掉电或其它异常情况时,例如电压波动等,往往导致难以确定正在进行计数的当前存储块,从而不能确定正确的计数值。
技术实现要素:
本发明的主要目的在于提供一种应答保护单调计数器及管理其计数值的方法,旨在解决现有技术中存在的上述技术问题。
为实现上述目的,本发明实施例提供一种管理应答保护单调计数器的计数值的方法,所述应答保护单调计数器包括eflash,所述eflash包括4个存储块,每个所述存储块包括4个扇区,所述管理应答保护单调计数器的计数值的方法包括:
当满足上电条件时,检测4个存储块中任一存储块的4个扇区中是否存在数据;
当所述任一存储块的4个扇区中只有一个扇区存在数据时,以所述一个扇区中的倒数第一个数据为m2,并检测所述一个扇区中排列在m2之前的数据中是否存在m1,其中m2=m1 1;
若所述一个扇区中排列在m2之前的数据中存在m1,则设置m2为所述任一存储块对应的计数值;
若所述一个扇区中排列在m2之前的数据中不存在m1,则以所述一个扇区中排列在m2前一位的数据为m2,并执行所述检测所述一个扇区中排列在m2之前的数据中是否存在m1,其中m2=m1 1的步骤,直至当m2为所述一个扇区中正数第二个数据,且所述一个扇区中排列在m2之前的数据中不存在m1时,设置所述一个扇区中正数第一个数据为所述任一存储块对应的计数值;
当所述任一存储块的4个扇区中存在两个相邻扇区存在数据时,检测所述两个相邻扇区中排列在先的扇区中的数据是否有效;
若所述两个相邻扇区中排列在先的扇区中的数据无效,则以所述两个相邻扇区中排列在后的扇区中的正数第一个数据为所述任一存储块对应的计数值;
若所述两个相邻扇区中排列在先的扇区中的数据有效,则以所述两个相邻扇区中排列在先的扇区中的倒数第一个数据为m5,以所述两个相邻扇区中排列在后的扇区中的正数第一个数据为m6,并判断m5 1=m6是否成立;
若m5 1=m6成立,则以m6为所述任一存储块对应的计数值,若m5 1=m6不成立,则以m5为所述任一存储块对应的计数值。
可选的,所述检测所述两个相邻扇区中排列在先的扇区中的数据是否有效包括:
以所述两个相邻扇区中排列在先的扇区中的倒数第一个数据为m4,并检测所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中是否存在m3,其中m4=m3 1;
若所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中存在m3,则确定所述两个相邻扇区中排列在先的扇区中的数据有效;
若所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中不存在m3,则以所述两个相邻扇区中排列在先的扇区中排列在m4前一位的数据为m4,并执行所述检测所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中是否存在m3,其中m4=m3 1的步骤,直至当m4为所述两个相邻扇区中排列在先的扇区中正数第二个数据,且所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中不存在m3时,则确定所述两个相邻扇区中排列在先的扇区中的数据无效。
此外,为实现上述目的,本发明实施例还提供一种应答保护单调计数器,所述应答保护单调计数器包括:
eflash,所述eflash包括4个存储块,每个所述存储块包括4个扇区,所述扇区用于存储计数数据;
检测模块,用于当满足上电条件时,检测4个存储块中任一存储块的4个扇区中是否存在数据;
检测模块,还用于当所述任一存储块的4个扇区中只有一个扇区存在数据时,以所述一个扇区中的倒数第一个数据为m2,并检测所述一个扇区中排列在m2之前的数据中是否存在m1,其中m2=m1 1;
设置模块,用于若所述一个扇区中排列在m2之前的数据中存在m1,则设置m2为所述任一存储块对应的计数值;
步骤跳转模块,用于若所述一个扇区中排列在m2之前的数据中不存在m1,则以所述一个扇区中排列在m2前一位的数据为m2,并执行所述检测所述一个扇区中排列在m2之前的数据中是否存在m1,其中m2=m1 1的步骤,直至当m2为所述一个扇区中正数第二个数据,且所述一个扇区中排列在m2之前的数据中不存在m1时,设置所述一个扇区中正数第一个数据为所述任一存储块对应的计数值;
检测模块,还用于当所述任一存储块的4个扇区中存在两个相邻扇区存在数据时,检测所述两个相邻扇区中排列在先的扇区中的数据是否有效;
设置模块,还用于若所述两个相邻扇区中排列在先的扇区中的数据无效,则以所述两个相邻扇区中排列在后的扇区中的正数第一个数据为所述任一存储块对应的计数值;
检测模块,还用于若所述两个相邻扇区中排列在先的扇区中的数据有效,则以所述两个相邻扇区中排列在先的扇区中的倒数第一个数据为m5,以所述两个相邻扇区中排列在后的扇区中的正数第一个数据为m6,并判断m5 1=m6是否成立;
设置模块,还用于若m5 1=m6成立,则以m6为所述任一存储块对应的计数值,若m5 1=m6不成立,则以m5为所述任一存储块对应的计数值。
可选的,所述检测模块,还用于:
以所述两个相邻扇区中排列在先的扇区中的倒数第一个数据为m4,并检测所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中是否存在m3,其中m4=m3 1;
若所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中存在m3,则确定所述两个相邻扇区中排列在先的扇区中的数据有效;
若所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中不存在m3,则以所述两个相邻扇区中排列在先的扇区中排列在m4前一位的数据为m4,并执行所述检测所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中是否存在m3,其中m4=m3 1的步骤,直至当m4为所述两个相邻扇区中排列在先的扇区中正数第二个数据,且所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中不存在m3时,则确定所述两个相邻扇区中排列在先的扇区中的数据无效。
本发明中,当满足上电条件时,检测4个存储块中任一存储块的4个扇区中是否存在数据;当所述任一存储块的4个扇区中只有一个扇区存在数据时,以所述一个扇区中的倒数第一个数据为m2,并检测所述一个扇区中排列在m2之前的数据中是否存在m1,其中m2=m1 1;若所述一个扇区中排列在m2之前的数据中存在m1,则设置m2为所述任一存储块对应的计数值;若所述一个扇区中排列在m2之前的数据中不存在m1,则以所述一个扇区中排列在m2前一位的数据为m2,并执行所述检测所述一个扇区中排列在m2之前的数据中是否存在m1,其中m2=m1 1的步骤,直至当m2为所述一个扇区中正数第二个数据,且所述一个扇区中排列在m2之前的数据中不存在m1时,设置所述一个扇区中正数第一个数据为所述任一存储块对应的计数值;当所述任一存储块的4个扇区中存在两个相邻扇区存在数据时,检测所述两个相邻扇区中排列在先的扇区中的数据是否有效;若所述两个相邻扇区中排列在先的扇区中的数据无效,则以所述两个相邻扇区中排列在后的扇区中的正数第一个数据为所述任一存储块对应的计数值;若所述两个相邻扇区中排列在先的扇区中的数据有效,则以所述两个相邻扇区中排列在先的扇区中的倒数第一个数据为m5,以所述两个相邻扇区中排列在后的扇区中的正数第一个数据为m6,并判断m5 1=m6是否成立;若m5 1=m6成立,则以m6为所述任一存储块对应的计数值,若m5 1=m6不成立,则以m5为所述任一存储块对应的计数值。本发明通过对扇区中的数值所符合的规律进行判断,从而确定正确的计数值,即使在两个存储块切换时发生了异常掉电或其它异常情况,通过本实施例方案亦可确定正确的计数值。
附图说明
图1为本发明管理应答保护单调计数器的计数值的方法一实施例的流程示意图;
图2为本发明管理应答保护单调计数器的计数值的方法一实施例中eflash的结构示意图;
图3为本发明管理应答保护单调计数器的计数值的方法一实施例中一个扇区的存储位示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明管理应答保护单调计数器的计数值的方法一实施例的流程示意图。如图1所示,管理应答保护单调计数器的计数值的方法包括:
步骤s10,当满足上电条件时,检测4个存储块中任一存储块的4个扇区中是否存在数据;
本实施例中,在rpmc内部加入一块4k*32eflash(embeddedflash),由于rpmc有4组计数器,故将eflash分为4个存储块,每个存储块包括4个sector扇区。参照图2,图2为本发明管理应答保护单调计数器的计数值的方法一实施例中eflash的结构示意图。如图2所示,rpmc的计数器0对应sector0至sector3,sector0至sector3属于第一存储块;rpmc的计数器1对应sector4至sector7,sector4至sector7属于第二存储块;rpmc的计数器2对应sector8至sector11,sector8至sector11属于第三存储块;rpmc的计数器3对应sector12至sector15,sector12至sector15属于第四存储块。当外部主机host发送增加计数值的命令时,rpmc就会把正确的计数值依次写入对应的存储块的扇区中。参照图3,图3为本发明管理应答保护单调计数器的计数值的方法一实施例中一个扇区的存储位示意图。如图3所示,一个扇区包括128个存储位,即一个扇区可存储128个计数值。
其中,上电条件指含rpmc的增强型flash的电源电压达到启动电压。即含rpmc的增强型flash的电源电压达到启动电压时,检测4个存储块中任一存储块的4个扇区中是否存在数据。其中,任一存储块可以是第一存储块、第二存储块、第三存储块、第四存储块中的任一个。下面以第一存储块为例进行说明。
步骤s20,当所述任一存储块的4个扇区中只有一个扇区存在数据时,以所述一个扇区中的倒数第一个数据为m2,并检测所述一个扇区中排列在m2之前的数据中是否存在m1,其中m2=m1 1;
本实施例中,当第一存储块的4个扇区中只有一个扇区存在数据时,例如第一存储块的sector0中存在数据,则以sector0中的倒数第一个数据为m2,并检测sector0中排列在m2之前的数据中是否存在m1,其中m2=m1 1。例如,sector0中的倒数第一个数据为88,则从sector0中的倒数第二个数至正数第一个数据中查找是否有一个数据为87,若能找到,即说明存在m1,若不能找到则说明以sector0中的倒数第一个数据为m2时,不存在m1。
步骤s30,若所述一个扇区中排列在m2之前的数据中存在m1,则设置m2为所述任一存储块对应的计数值;
本实施例中,若存在m1,则设置当前的m2为第一存储块对应的计数值。即当host需要从第一存储块中读取计数值时,读取的计数值为m2。
步骤s40,若所述一个扇区中排列在m2之前的数据中不存在m1,则以所述一个扇区中排列在m2前一位的数据为m2,并执行所述检测所述一个扇区中排列在m2之前的数据中是否存在m1,其中m2=m1 1的步骤,直至当m2为所述一个扇区中正数第二个数据,且所述一个扇区中排列在m2之前的数据中不存在m1时,设置所述一个扇区中正数第一个数据为所述任一存储块对应的计数值;
本实施例中,当m2为sector0中的倒数第一个数据时,若找不到m1,则以m2前一位的数据为m2,即以sector0中的倒数第二个数据为m2,并从sector0中的倒数第三个数至正数第一个数据中查找m1,若能找到m1,则以此时的m2(sector0中的倒数第二个数据)为第一存储块对应的计数值。若找不到m1,则继续以m2前一位的数据为m2,即以sector0中的倒数第三个数据为m2,并从sector0中的倒数第四个数至正数第一个数据中查找m1,若能找到m1,则以此时的m2(sector0中的倒数第三个数据)为第一存储块对应的计数值。若找不到m1,则重复上述步骤,直至当m2为sector0中正数第二个数据,且sector0中排列在m2之前的数据中不存在m1时,设置sector0中正数第一个数据为第一存储块对应的计数值。
步骤s50,当所述任一存储块的4个扇区中存在两个相邻扇区存在数据时,检测所述两个相邻扇区中排列在先的扇区中的数据是否有效;
本实施例中,当第一存储块的4个扇区中存在两个相邻扇区存在数据时,例如sector2和sector3中存在数据,则检测两个相邻扇区中排列在先的扇区中的数据是否有效,即检测sector2中的数据是否有效。
一实施例中,所述检测所述两个相邻扇区中排列在先的扇区中的数据是否有效包括:
以所述两个相邻扇区中排列在先的扇区中的倒数第一个数据为m4,并检测所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中是否存在m3,其中m4=m3 1;若所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中存在m3,则确定所述两个相邻扇区中排列在先的扇区中的数据有效;若所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中不存在m3,则以所述两个相邻扇区中排列在先的扇区中排列在m4前一位的数据为m4,并执行所述检测所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中是否存在m3,其中m4=m3 1的步骤,直至当m4为所述两个相邻扇区中排列在先的扇区中正数第二个数据,且所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中不存在m3时,则确定所述两个相邻扇区中排列在先的扇区中的数据无效。
本实施例中,以排列在先的扇区为sector2为例,则以sector0中的倒数第一个数据为m4,并检测sector2中排列在m4之前的数据中是否存在m3,其中m4=m3 1。例如,sector2中的倒数第一个数据为66,则从sector2中的倒数第二个数至正数第一个数据中查找是否有一个数据为65,若能找到,即说明存在m3,则确定sector2中的数据有效。
当m4为sector0中的倒数第一个数据时,若找不到m3,则以m4前一位的数据为m4,即以sector2中的倒数第二个数据为m4,并从sector2中的倒数第三个数至正数第一个数据中查找m3,若能找到m3,则确定sector2中的数据有效。若找不到m3,则继续以m4前一位的数据为m4,即以sector2中的倒数第三个数据为m4,并从sector2中的倒数第四个数至正数第一个数据中查找m3,若能找到m3,则确定sector2中的数据有效。若找不到m3,则重复上述步骤,直至当m4为sector2中正数第二个数据,且sector2中排列在m4之前的数据中不存在m3时,确定sector2中的数据无效。
步骤s60,若所述两个相邻扇区中排列在先的扇区中的数据无效,则以所述两个相邻扇区中排列在后的扇区中的正数第一个数据为所述任一存储块对应的计数值;
本实施例中,若两个相邻扇区中排列在先的扇区中的数据无效,则直接以两个相邻扇区中排列在后的扇区中的正数第一个数据为第一存储块对应的计数值。
步骤s70,若所述两个相邻扇区中排列在先的扇区中的数据有效,则以所述两个相邻扇区中排列在先的扇区中的倒数第一个数据为m5,以所述两个相邻扇区中排列在后的扇区中的正数第一个数据为m6,并判断m5 1=m6是否成立;
步骤s80,若m5 1=m6成立,则以m6为所述任一存储块对应的计数值,若m5 1=m6不成立,则以m5为所述任一存储块对应的计数值。
本实施例中,若两个相邻扇区中排列在先的扇区中的数据有效,则以两个相邻扇区中排列在先的扇区中的倒数第一个数据为m5,以两个相邻扇区中排列在后的扇区中的正数第一个数据为m6,并判断m5 1=m6是否成立。当该等式成立时,以m6为第一存储块对应的计数值,当该等式不成立时,以m5为第一存储块对应的计数值。
本实施例中,当满足上电条件时,检测4个存储块中任一存储块的4个扇区中是否存在数据;当所述任一存储块的4个扇区中只有一个扇区存在数据时,以所述一个扇区中的倒数第一个数据为m2,并检测所述一个扇区中排列在m2之前的数据中是否存在m1,其中m2=m1 1;若所述一个扇区中排列在m2之前的数据中存在m1,则设置m2为所述任一存储块对应的计数值;若所述一个扇区中排列在m2之前的数据中不存在m1,则以所述一个扇区中排列在m2前一位的数据为m2,并执行所述检测所述一个扇区中排列在m2之前的数据中是否存在m1,其中m2=m1 1的步骤,直至当m2为所述一个扇区中正数第二个数据,且所述一个扇区中排列在m2之前的数据中不存在m1时,设置所述一个扇区中正数第一个数据为所述任一存储块对应的计数值;当所述任一存储块的4个扇区中存在两个相邻扇区存在数据时,检测所述两个相邻扇区中排列在先的扇区中的数据是否有效;若所述两个相邻扇区中排列在先的扇区中的数据无效,则以所述两个相邻扇区中排列在后的扇区中的正数第一个数据为所述任一存储块对应的计数值;若所述两个相邻扇区中排列在先的扇区中的数据有效,则以所述两个相邻扇区中排列在先的扇区中的倒数第一个数据为m5,以所述两个相邻扇区中排列在后的扇区中的正数第一个数据为m6,并判断m5 1=m6是否成立;若m5 1=m6成立,则以m6为所述任一存储块对应的计数值,若m5 1=m6不成立,则以m5为所述任一存储块对应的计数值。本实施例通过对扇区中的数值所符合的规律进行判断,从而确定正确的计数值,即使在两个存储块切换时发生了异常掉电或其它异常情况,通过本实施例方案亦可确定正确的计数值。
本实施例还提出一种应答保护单调计数器,应答保护单调计数器包括:
eflash,所述eflash包括4个存储块,每个所述存储块包括4个扇区,所述扇区用于存储计数数据;
检测模块,用于当满足上电条件时,检测4个存储块中任一存储块的4个扇区中是否存在数据;
检测模块,还用于当所述任一存储块的4个扇区中只有一个扇区存在数据时,以所述一个扇区中的倒数第一个数据为m2,并检测所述一个扇区中排列在m2之前的数据中是否存在m1,其中m2=m1 1;
设置模块,用于若所述一个扇区中排列在m2之前的数据中存在m1,则设置m2为所述任一存储块对应的计数值;
步骤跳转模块,用于若所述一个扇区中排列在m2之前的数据中不存在m1,则以所述一个扇区中排列在m2前一位的数据为m2,并执行所述检测所述一个扇区中排列在m2之前的数据中是否存在m1,其中m2=m1 1的步骤,直至当m2为所述一个扇区中正数第二个数据,且所述一个扇区中排列在m2之前的数据中不存在m1时,设置所述一个扇区中正数第一个数据为所述任一存储块对应的计数值;
检测模块,还用于当所述任一存储块的4个扇区中存在两个相邻扇区存在数据时,检测所述两个相邻扇区中排列在先的扇区中的数据是否有效;
设置模块,还用于若所述两个相邻扇区中排列在先的扇区中的数据无效,则以所述两个相邻扇区中排列在后的扇区中的正数第一个数据为所述任一存储块对应的计数值;
检测模块,还用于若所述两个相邻扇区中排列在先的扇区中的数据有效,则以所述两个相邻扇区中排列在先的扇区中的倒数第一个数据为m5,以所述两个相邻扇区中排列在后的扇区中的正数第一个数据为m6,并判断m5 1=m6是否成立;
设置模块,还用于若m5 1=m6成立,则以m6为所述任一存储块对应的计数值,若m5 1=m6不成立,则以m5为所述任一存储块对应的计数值。
检测模块,还用于:
以所述两个相邻扇区中排列在先的扇区中的倒数第一个数据为m4,并检测所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中是否存在m3,其中m4=m3 1;
若所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中存在m3,则确定所述两个相邻扇区中排列在先的扇区中的数据有效;
若所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中不存在m3,则以所述两个相邻扇区中排列在先的扇区中排列在m4前一位的数据为m4,并执行所述检测所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中是否存在m3,其中m4=m3 1的步骤,直至当m4为所述两个相邻扇区中排列在先的扇区中正数第二个数据,且所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中不存在m3时,则确定所述两个相邻扇区中排列在先的扇区中的数据无效。
本发明应答保护单调计数器的具体实施例与上述管理应答保护单调计数器的计数值的方法的各个实施例基本相同,在此不做赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
1.一种管理应答保护单调计数器的计数值的方法,其特征在于,所述应答保护单调计数器包括eflash,所述eflash包括4个存储块,每个所述存储块包括4个扇区,所述管理应答保护单调计数器的计数值的方法包括:
当满足上电条件时,检测4个存储块中任一存储块的4个扇区中是否存在数据;
当所述任一存储块的4个扇区中只有一个扇区存在数据时,以所述一个扇区中的倒数第一个数据为m2,并检测所述一个扇区中排列在m2之前的数据中是否存在m1,其中m2=m1 1;
若所述一个扇区中排列在m2之前的数据中存在m1,则设置m2为所述任一存储块对应的计数值;
若所述一个扇区中排列在m2之前的数据中不存在m1,则以所述一个扇区中排列在m2前一位的数据为m2,并执行所述检测所述一个扇区中排列在m2之前的数据中是否存在m1,其中m2=m1 1的步骤,直至当m2为所述一个扇区中正数第二个数据,且所述一个扇区中排列在m2之前的数据中不存在m1时,设置所述一个扇区中正数第一个数据为所述任一存储块对应的计数值;
当所述任一存储块的4个扇区中存在两个相邻扇区存在数据时,检测所述两个相邻扇区中排列在先的扇区中的数据是否有效;
若所述两个相邻扇区中排列在先的扇区中的数据无效,则以所述两个相邻扇区中排列在后的扇区中的正数第一个数据为所述任一存储块对应的计数值;
若所述两个相邻扇区中排列在先的扇区中的数据有效,则以所述两个相邻扇区中排列在先的扇区中的倒数第一个数据为m5,以所述两个相邻扇区中排列在后的扇区中的正数第一个数据为m6,并判断m5 1=m6是否成立;
若m5 1=m6成立,则以m6为所述任一存储块对应的计数值,若m5 1=m6不成立,则以m5为所述任一存储块对应的计数值。
2.如权利要求1所述的管理应答保护单调计数器的计数值的方法,其特征在于,所述检测所述两个相邻扇区中排列在先的扇区中的数据是否有效包括:
以所述两个相邻扇区中排列在先的扇区中的倒数第一个数据为m4,并检测所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中是否存在m3,其中m4=m3 1;
若所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中存在m3,则确定所述两个相邻扇区中排列在先的扇区中的数据有效;
若所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中不存在m3,则以所述两个相邻扇区中排列在先的扇区中排列在m4前一位的数据为m4,并执行所述检测所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中是否存在m3,其中m4=m3 1的步骤,直至当m4为所述两个相邻扇区中排列在先的扇区中正数第二个数据,且所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中不存在m3时,则确定所述两个相邻扇区中排列在先的扇区中的数据无效。
3.一种应答保护单调计数器,其特征在于,所述应答保护单调计数器包括:
eflash,所述eflash包括4个存储块,每个所述存储块包括4个扇区,所述扇区用于存储计数数据;
检测模块,用于当满足上电条件时,检测4个存储块中任一存储块的4个扇区中是否存在数据;
检测模块,还用于当所述任一存储块的4个扇区中只有一个扇区存在数据时,以所述一个扇区中的倒数第一个数据为m2,并检测所述一个扇区中排列在m2之前的数据中是否存在m1,其中m2=m1 1;
设置模块,用于若所述一个扇区中排列在m2之前的数据中存在m1,则设置m2为所述任一存储块对应的计数值;
步骤跳转模块,用于若所述一个扇区中排列在m2之前的数据中不存在m1,则以所述一个扇区中排列在m2前一位的数据为m2,并执行所述检测所述一个扇区中排列在m2之前的数据中是否存在m1,其中m2=m1 1的步骤,直至当m2为所述一个扇区中正数第二个数据,且所述一个扇区中排列在m2之前的数据中不存在m1时,设置所述一个扇区中正数第一个数据为所述任一存储块对应的计数值;
检测模块,还用于当所述任一存储块的4个扇区中存在两个相邻扇区存在数据时,检测所述两个相邻扇区中排列在先的扇区中的数据是否有效;
设置模块,还用于若所述两个相邻扇区中排列在先的扇区中的数据无效,则以所述两个相邻扇区中排列在后的扇区中的正数第一个数据为所述任一存储块对应的计数值;
检测模块,还用于若所述两个相邻扇区中排列在先的扇区中的数据有效,则以所述两个相邻扇区中排列在先的扇区中的倒数第一个数据为m5,以所述两个相邻扇区中排列在后的扇区中的正数第一个数据为m6,并判断m5 1=m6是否成立;
设置模块,还用于若m5 1=m6成立,则以m6为所述任一存储块对应的计数值,若m5 1=m6不成立,则以m5为所述任一存储块对应的计数值。
4.如权利要求3所述的应答保护单调计数器,其特征在于,所述检测模块,还用于:
以所述两个相邻扇区中排列在先的扇区中的倒数第一个数据为m4,并检测所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中是否存在m3,其中m4=m3 1;
若所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中存在m3,则确定所述两个相邻扇区中排列在先的扇区中的数据有效;
若所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中不存在m3,则以所述两个相邻扇区中排列在先的扇区中排列在m4前一位的数据为m4,并执行所述检测所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中是否存在m3,其中m4=m3 1的步骤,直至当m4为所述两个相邻扇区中排列在先的扇区中正数第二个数据,且所述两个相邻扇区中排列在先的扇区中排列在m4之前的数据中不存在m3时,则确定所述两个相邻扇区中排列在先的扇区中的数据无效。
技术总结