一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种Flash存储器的控制方法和装置与流程

2021-02-23 15:39:00 来源:中国专利 TAG:存储器 装置 控制 方法 自动化

一种flash存储器的控制方法和装置
技术领域
[0001]
本发明涉及车辆自动化技术领域,特别涉及一种flash存储器的控制方法和装置。


背景技术:

[0002]
出于降低成本和系统复杂度的考虑,目前车辆上的车载电子控制单元(electronic control unit,ecu)ecu中经常用flash存储器模拟带电可擦可编程只读存储器(electrically erasable programmable read only memory,eeprom)来实现数据的下电存储,这种利用flash存储器模拟eeprom的功能,一般称为fee功能。
[0003]
由于flash存储器的特性,各个存储块不能直接用于重复存储数据,要将一个已经存满数据的存储块用于存储新的数据,就需要先对这个存储块执行数据擦除操作,数据擦除操作结束后才能将这个存储块用于存新数据,如果不擦除原有数据就直接写入新数据,就会导致flash存储器中对应的存储空间损坏。
[0004]
现有技术中,ecu会将flash存储器划分为多个存储块,在车辆的下电阶段将待存储数据存入存储块中,前一存储块存满后,利用另一个未存满的存储块存储数据,然后对前一个存储块执行数据擦除操作,以擦除之前写入的数据。
[0005]
然而车辆的下电阶段容易发生异常断电,一旦异常断电,则数据擦除操作就会立即中断,当车辆重启并再次进入下电阶段时,ecu会直接向未完成数据擦除的前一个存储块写入新的数据,导致该存储块损坏,并且会引起写入程序故障。


技术实现要素:

[0006]
基于上述现有技术的缺点,本申请提供一种flash存储器的控制方法和装置,以避免ecu的flash存储器损坏。
[0007]
本申请第一方面提供一种flash存储器的控制方法,应用于车载电子控制单元,所述flash存储器被划分为多个存储块,所述控制方法包括:
[0008]
在车辆的下电阶段:
[0009]
判断当前存储块的可存储数据量是否大于待存储数据的数据量;其中,所述当前存储块是所述车辆的前一个下电阶段中确定的待写入存储块;
[0010]
若所述当前存储块的可存储数据量不大于所述待存储数据的数据量,将所述多个存储块中可存储数据量大于所述待存储数据的数据量的存储块确定为待写入存储块,并将所述当前存储块设置为可擦除状态;
[0011]
若所述当前存储块的可存储数据量大于所述待存储数据的数据量,将所述当前存储块确定为待写入存储块;
[0012]
将所述待存储数据写入所述待写入存储块;
[0013]
判断所述flash存储器中,是否存在可存储数据量大于数据量阈值的存储块;其中,所述数据量阈值根据所述待存储数据的数据量阈值确定;
[0014]
若所述flash存储器中不存在可存储数据量大于所述数据量阈值的存储块,选取
所述flash存储器中至少一个处于可擦除状态的存储块,并将被选择的存储块的擦除标志位设置为1;
[0015]
在车辆的上电阶段:
[0016]
在所述多个存储块中查找待擦除存储块;其中,所述待擦除存储块,指代,对应的擦除标志位为1的存储块;
[0017]
若查找得到待擦除存储块,将每一个所述待擦除存储块的擦除成功标志位设置为0;
[0018]
执行数据擦除操作,以擦除每一个所述待擦除存储块当前存储的数据;
[0019]
若所述数据擦除操作的执行过程中发生异常断电,当再次进入所述车辆的上电阶段时,返回执行所述在所述多个存储块中查找出待擦除存储块步骤;
[0020]
数据擦除操作结束后,将每一个所述待擦除存储块的所述擦除标志位和所述待擦除存储块的所述擦除成功标志位设置为0和1,并将所述待擦除存储块设置为可写入状态。
[0021]
可选的,所述判断所述flash存储器中,是否存在可存储数据量大于数据量阈值的存储块,包括:
[0022]
计算所述待存储数据的数据量和预设的倍数的乘积,得到数据量阈值;
[0023]
将所述flash存储器的每一个存储块的可存储数据量均与所述数据量阈值进行比对;
[0024]
若至少一个所述存储块的可存储数据量大于所述数据量阈值,则判断出所述flash存储器存在可存储数据量大于所述数据量阈值的存储块;
[0025]
若每一个所述存储块的可存储数据量均不大于所述数据量阈值,则判断出所述flash存储器不存在可存储数据量大于所述数据量阈值的存储块。
[0026]
可选的,所述执行数据擦除操作,以擦除每一个所述待擦除存储块当前存储的数据之后,还包括:
[0027]
若所述数据擦除操作的执行过程中接收到下电信号,记录所述下电信号;
[0028]
在所述数据擦除操作结束后,响应所述下电信号,进入下电阶段。
[0029]
可选的,所述选取所述flash存储器中至少一个处于可擦除状态的存储块,包括:
[0030]
在所述flash存储器的所有处于可擦除状态的存储块中,依据可存储数据量由小至大地选取n个存储块;其中,所述n是小于所述flash存储器的处于可擦除状态的存储块数量的正整数。
[0031]
可选的,所述在所述多个存储块中查找待擦除存储块,包括:
[0032]
逐一检测所述flash存储器的每一个所述存储块对应的擦除标志位;
[0033]
针对每一个所述存储块,若检测出所述存储块对应的擦除标志位为1,将所述存储块确定为一个待擦除存储块。
[0034]
本申请第二方面提供一种flash存储器的控制装置,应用于车载电子控制单元,所述flash存储器被划分为多个存储块,所述控制装置包括:
[0035]
第一判断单元,用于在车辆的下电阶段,判断当前存储块的可存储数据量是否大于待存储数据的数据量;其中,所述当前存储块是所述车辆的前一个下电阶段中确定的待写入存储块;
[0036]
确定单元,用于:
[0037]
若所述当前存储块的可存储数据量不大于所述待存储数据的数据量,将所述多个存储块中可存储数据量大于所述待存储数据的数据量的存储块确定为待写入存储块,并将所述当前存储块设置为可擦除状态;
[0038]
若所述当前存储块的可存储数据量大于所述待存储数据的数据量,将所述当前存储块确定为待写入存储块;
[0039]
写入单元,用于将所述待存储数据写入所述待写入存储块;
[0040]
第二判断单元,用于判断所述flash存储器中,是否存在可存储数据量大于数据量阈值的存储块;其中,所述数据量阈值根据所述待存储数据的数据量阈值确定;
[0041]
选取单元,用于若所述flash存储器中不存在可存储数据量大于所述数据量阈值的存储块,选取所述flash存储器中至少一个处于可擦除状态的存储块,并将被选择的存储块的擦除标志位设置为1;
[0042]
查找单元,用于在所述车辆的上电阶段,在所述多个存储块中查找待擦除存储块;其中,所述待擦除存储块,指代,对应的擦除标志位为1的存储块;
[0043]
设置单元,用于若查找得到待擦除存储块,将每一个所述待擦除存储块的擦除成功标志位设置为0;
[0044]
擦除单元,用于执行数据擦除操作,以擦除每一个所述待擦除存储块当前存储的数据;
[0045]
所述查找单元,用于若所述数据擦除操作的执行过程中发生异常断电,当再次进入所述车辆的上电阶段时,返回执行所述在所述多个存储块中查找出待擦除存储块步骤;
[0046]
所述设置单元,用于数据擦除操作结束后,将每一个所述待擦除存储块的所述擦除标志位和所述待擦除存储块的所述擦除成功标志位设置为0和1,并将所述待擦除存储块设置为可写入状态。
[0047]
可选的,所述第二判断单元判断所述flash存储器中,是否存在可存储数据量大于数据量阈值的存储块时,具体用于:
[0048]
计算所述待存储数据的数据量和预设的倍数的乘积,得到数据量阈值;
[0049]
将所述flash存储器的每一个存储块的可存储数据量均与所述数据量阈值进行比对;
[0050]
若至少一个所述存储块的可存储数据量大于所述数据量阈值,则判断出所述flash存储器存在可存储数据量大于所述数据量阈值的存储块;
[0051]
若每一个所述存储块的可存储数据量均不大于所述数据量阈值,则判断出所述flash存储器不存在可存储数据量大于所述数据量阈值的存储块。
[0052]
可选的,所述控制装置还包括:
[0053]
记录单元,用于若所述数据擦除操作的执行过程中接收到下电信号,记录所述下电信号;
[0054]
响应单元,用于在所述数据擦除操作结束后,响应所述下电信号,进入下电阶段。
[0055]
可选的,所述选取单元选取所述flash存储器中至少一个处于可擦除状态的存储块时,具体用于:
[0056]
在所述flash存储器的所有处于可擦除状态的存储块中,依据可存储数据量由小至大地选取n个存储块;其中,所述n是小于所述flash存储器的处于可擦除状态的存储块数
量的正整数。
[0057]
可选的,所述查找单元在所述多个存储块中查找待擦除存储块时,具体用于:
[0058]
逐一检测所述flash存储器的每一个所述存储块对应的擦除标志位;
[0059]
针对每一个所述存储块,若检测出所述存储块对应的擦除标志位为1,将所述存储块确定为一个待擦除存储块。
[0060]
本申请提供一种flash存储器的控制方法和装置,应用于车载电子控制单元,方法包括:车辆下电阶段,根据flash划分的各个存储块的可存储数据量确定待写入存储块,向待写入存储块写入待存储数据,写入后,若各个存储块的可存储数据量不符合预设条件,将部分存储块的擦除标志位置为1,车辆上电阶段,查找出待擦除存储块(擦除标志位为1的存储块)并对待擦除存储块执行数据擦除操作,若擦除过程中异常断电,则等待车辆再次上电后重新确定待擦除存储块并继续执行数据擦除操作。本方案将数据擦除和数据写入操作分别在上电阶段和下电阶段执行,即使上电时异常断电也能够在再次上电后继续进行擦除,避免下电阶段在未擦除的存储块写入数据,防止flash存储器损坏。
附图说明
[0061]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0062]
图1为本申请实施例提供的在车辆的下电阶段的flash存储器的控制方法的流程图;
[0063]
图2为本申请实施例提供的在车辆的上电阶段的flash存储器的控制方法的流程图;
[0064]
图3为本申请实施例提供的flash存储器的控制装置的结构示意图;
[0065]
图4为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
[0066]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0067]
本申请所提供的flash存储器的控制方法,具体包括两个过程,其中一个是在车辆的下电阶段执行的数据写入过程,另一个是在车辆的上电阶段执行的针对待擦除存储块的数据擦除过程。下面分别结合对应的附图对这两个过程进行说明。
[0068]
本申请中,车辆的下电阶段,可以理解为,车辆熄火时,车辆的控制系统(泛指包括车载的ecu在内的各个电子设备和器件)逐一关闭的过程,车辆的上电阶段,则可以理解为,用户启动车辆时,车辆的控制系统逐一启动的过程。其中车载ecu可以认为是车辆的中央控制器,用于统一控制车载的所有电子设备和器件工作,同时还可以通过这些电子设备和器件控制车辆的运行参数。
[0069]
可选的,具体处于上电阶段还是下电阶段,可以通过车辆的控制系统中的t15信号确定,t15是ecu的一个开关输入信号,当用户停车熄火时,t15信号从高电位跳变至低电位,ecu检测到t15信号的变更后,就可以确定当前车辆进入下电阶段,相应的,当用户启动车辆时,t15信号从低电位跳变至高电位,ecu检测到t15信号的变更后,确定当前车辆进入上电阶段。
[0070]
首先请参考图1,图1为本申请实施例提供的在下电阶段执行的数据写入过程的流程图,如图1所示,本申请实施例提供的flash存储器的控制方法在车辆的下电阶段具体可以包括如下步骤:
[0071]
s101、判断当前存储块的可存储数据量是否大于待存储数据的数据量。
[0072]
若当前存储块的可存储数据量不大于(即小于或等于)待存储数据的数据量,则执行步骤s102,若当前存储块的可存储数据量大于待存储数据的数据量,则执行步骤s103。
[0073]
待存储数据,指代在车辆的下电阶段需要保存的数据。
[0074]
例如,当前存储块可存储数据量为100mb,即当前存储块最多还能存100mb的数据,若待存储数据(记为record)的数据量为60mb,则判断出当前存储块的可存储数据量大于待存储数据的数据量,若待存储数据的数据量为100mb,或者为110mb,则判断出当前存储块的可存储数据量不大于待存储数据的数据量。
[0075]
需要说明的是,这里的可存储数据量,是指,存储块的最大存储数据量减去存储块已经存储的数据量得到的差值,例如,一个存储块最多可以存储200mb数据,这个存储块当前已经存储了150mb数据,则这个存储块当前的可存储数据量为50mb。
[0076]
其中,当前存储块是车辆的前一个下电阶段中确定的待写入存储块。可选的,若前一个下电阶段没有待存储数据,导致前一个下电阶段未指定待写入存储块,或者当前的这个下电阶段是第一个下电阶段,那么,可以在flash存储器的多个存储块中,任意指定一个当前不处于可擦除状态的存储块作为待擦除存储块。
[0077]
在flash存储器中,划分出来的每一个存储块均有一个用于表征该存储块当前状态的状态标记,称为block head,这个状态标记可以由连续的多个字节组成,在本方案中,可以根据该状态标记的前8个字节的不同,表示对应的存储块当前的状态。
[0078]
例如,可以规定对于任意一个存储块,该存储块的状态标记的前8个字节为0x5f5fffff时,表示该存储块当前处于可写入状态,当状态标记的前8个字节为0x5a5a0000时,表示该存储块当前处于可擦除状态。
[0079]
s102、将多个存储块中可存储数据量大于待存储数据的数据量的存储块确定为待写入存储块,并将当前存储块设置为可擦除状态。
[0080]
具体的,在执行步骤s102时,可以获取flash存储器中除当前存储块以外的每一个存储块的可存储数据量,然后逐一检测每一个可存储数据量是否大于待存储数据record的数据量。
[0081]
若只检测到一个可存储数据量大于待存储数据的数据量的存储块,就将这个存储块确定为待写入存储块,若检测到多个可存储数据量大于待存储数据的数据量的存储块,从其中任意选择一个存储块作为待写入存储块。
[0082]
举例来说,假设flash存储器中划分有两个存储块,分别记为block1和block2,其中block1为当前存储块,则执行步骤s102时,就需要检测block2的可存储数据量是否大于
待存储数据的数据量,若大于,将block2确定为待写入存储块。
[0083]
进一步的,若flash存储器划分有三个存储块,依次记为block1至block3,其中block1为当前存储块,则执行步骤s102时,可以分别检测block2的可存储数据量和bolck3的可存储数据量,若其中只有一个可存储数据量大于待存储数据的数据量的存储块,就将那个存储块确定为待写入存储块,若block2和block3两个存储块都符合可存储数据量大于待存储数据的数据量的条件,选择其中任意一个存储块作为待写入存储块。
[0084]
根据步骤s101中对存储块的状态标记的说明,可以理解的,步骤s102中将当前存储块设置为可擦除状态,实质就是设置当前存储块的状态标记中对应的字节(如前述例子中block head的前8个字节)的取值,将对应的字节的取值设置为表示可擦除状态的取值,如前述例子中的0x5a5a0000,从而将当前存储块的状态设定为可擦除状态。
[0085]
s103、将当前存储块确定为待写入存储块。
[0086]
若当前存储块的可存储数据量大于待存储数据的数据量,就说明当前存储块可以完整的保存待存储数据,因此可以直接将当前存储块确定为待写入存储块。
[0087]
s104、将待存储数据写入待写入存储块。
[0088]
具体的写入过程为现有技术,此处不再详述。
[0089]
s105、判断flash存储器中,是否存在可存储数据量大于数据量阈值的存储块。
[0090]
若判断出flash存储器中不存在可存储数据量大于数据量阈值的存储块,则执行步骤s106,若判断出flash存储器中存在可存储数据量大于数据量阈值的存储块,则结束本方法。
[0091]
上述数据量阈值,是根据待存储数据的数据量确定的阈值,具体的,可以将待存储数据的数据量的n倍,作为步骤s105中的数据量阈值,n为预设的正整数。例如,将待存储数据的数据量记为tsize,n设定为3,则步骤s105,就相当于是判断flash存储器中是否存在可存储数据量大于待存储数据的数据量的3倍(即3
×
tsize)的存储块。
[0092]
具体的,步骤s105的执行过程为:
[0093]
计算待存储数据的数据量和预设的倍数的乘积,得到数据量阈值。如上述例子中,将计算tsize和倍数n的乘积,得到数据量阈值。
[0094]
将flash存储器的每一个存储块的可存储数据量均与数据量阈值进行比对。
[0095]
若至少一个存储块的可存储数据量大于数据量阈值,则判断出flash存储器存在可存储数据量大于数据量阈值的存储块。
[0096]
若每一个存储块的可存储数据量均不大于数据量阈值,则判断出flash存储器不存在可存储数据量大于数据量阈值的存储块。
[0097]
执行步骤s105的原因在于,每一次进入下电阶段时产生的待存储数据的数据量是不固定的,为了确保下一次进入下电阶段时flash存储器有足够的空间可以存储下一个下电阶段时的待存储数据,需要保证flash存储器中有至少一个可存储数据量大于步骤s105中的数据量阈值的存储块,若flash存储器中不存在符合步骤s105中的条件(即可存储数据量大于数据量阈值)的存储块,就需要通过设置擦除标志位的方式,在下一个车辆的上电阶段对部分存储块执行数据擦除操作,也就是清空这部分存储块(或者说删除其中的数据),以保证再次进入下电阶段时能够顺利地在flash存储器中保存待存储数据。
[0098]
s106、选取flash存储器中至少一个处于可擦除状态的存储块,并将被选择的存储
块的擦除标志位设置为1。
[0099]
flash存储器中的每一个存储块均配置有一个对应的擦除标志位,擦除标志为可以是一个二进制位,对于任意一个存储块,若这个存储块的擦除标志位的值为0,表示在上电阶段不需要对这个存储块执行数据擦除操作,若这个存储块的擦除标志位为1,表示在上电阶段需要对这个存储块执行数据擦除操作。
[0100]
在步骤s106中,可以按多种选取规则来选取需要设置擦除标志位的存储块。
[0101]
例如,可以在flash存储器的所有处于可擦除状态的存储块中,依据可存储数据量由小至大地选取n个存储块;其中,n是小于flash存储器的处于可擦除状态的存储块数量的正整数。
[0102]
假设有10个处于可擦除状态的存储块,那么可以选择其中可存储数据量较小的5个存储块,将这5个存储块的擦除标志位设置为1。
[0103]
另外,还可以根据所有处于可擦除状态的存储块中存储的数据的早晚来选取。例如,10个处于可擦除状态的存储块中,有5个存储块存储的数据是前一天产生的数据,另外5个存储块存储的是今天产生的数据,则可以选择其中存储的数据较早的5个存储块,也就是选择其中存储前一天产生的数据的5个存储块进行擦除标志位的设定。
[0104]
请参考图2,图2为本申请实施例提供的在上电阶段执行的数据擦除过程的流程图,如图2所示,本申请实施例提供的flash存储器的控制方法在车辆的上电阶段具体可以包括如下步骤:
[0105]
s201、在多个存储块中查找待擦除存储块。
[0106]
其中,待擦除存储块,指代,对应的擦除标志位为1的存储块。
[0107]
若查找到至少一个待擦除存储块,则执行步骤s202,若未查找到待擦除存储块,则本方法结束,正常执行上电阶段中后续需要执行的操作。
[0108]
也就是说,在步骤s201中,可以逐一检测flash存储器的每一个存储块的擦除标志位是否为1,最后将检测得到的每一个擦除标志位为1的存储块均确定为待擦除存储块。
[0109]
s202、将每一个待擦除存储块的擦除成功标志位设置为0。
[0110]
擦除成功标志位(flash1_cleanflag)是存储块对应的不同于前述擦除标志位的另一个标志位,每一个存储块均对应有一个擦除成功标志位,当擦除成功标志位为0时,表示对应的存储块正在被擦除数据,当擦除成功标志位为1时,表示对应的存储块的数据擦除已经结束,该数据块原本存储的数据已经被擦除。
[0111]
当擦除成功标志位为0时,对应的存储块不允许用于写入数据。
[0112]
s203、执行数据擦除操作,以擦除每一个待擦除存储块当前存储的数据。
[0113]
需要说明的是,从每一个存储块中擦除数据,均需要消耗一定的时间,例如,完成一个存储块的擦除可能需要1秒,若有4个待擦除存储块,则步骤s203中的数据擦除操作就需要持续至少4秒。
[0114]
在数据擦除操作持续执行的过程中,若发生异常断电,则当前执行的数据擦除操作终止。在发生异常断电之后,车辆再次进入上电阶段时,ecu会再次执行步骤s201,也就是重新查找待擦除存储块,然后继续执行之前终止的数据擦除操作。
[0115]
数据擦除操作结束后,执行步骤s204。
[0116]
其中,数据擦除操作结束,是指,每一个待擦除存储块均被擦除。
[0117]
s204、将每一个待擦除存储块的擦除标志位和待擦除存储块的擦除成功标志位设置为0和1,并将待擦除存储块设置为可写入状态。
[0118]
也就是说,步骤s203的数据擦除操作结束后,每一个待擦除存储块的擦除标志位均会从执行数据擦除操作之前的1变更为0,同时擦除成功标志位会从执行数据擦除操作之前的0变更为1。
[0119]
将待擦除存储块设置为可写入状态,实质就是更改待擦除存储块对应的block head的取值,使其变更为表示可写入状态的值。
[0120]
处于可写入状态的存储块,可以在下电阶段作为待写入存储块用于写入待存储数据。也就是说,前述步骤s102,可以认为是,在多个存储块中,确定出一个可存储数据量大于待存储数据的数据量、并且当前处于可写入状态的存储块作为待写入存储块。
[0121]
可选的,在步骤s203的数据擦除操作执行过程中:
[0122]
若数据擦除操作的执行过程中接收到下电信号,记录下电信号;
[0123]
在数据擦除操作结束后,响应下电信号,进入下电阶段。
[0124]
上述下电信号,其实就是前述t15信号从高电位跳变至低电位。也就是说,若在执行数据擦除操作的过程中,用户停车熄火,触发t15信号从高电位跳变至低电位,则ecu可以记录此次跳变,而不执行下电阶段需要执行的操作,同时继续执行数据擦除操作,直至数据擦除操作结束后,才响应上述跳变,进入下电阶段,然后开始执行下电阶段需要执行的操作,通过这种方式避免在上电阶段频繁的进行上电和下电操作。
[0125]
在本申请中,下电信号是由用户通过正常操作关闭车辆的控制系统时触发的信号,而异常断电可以是,用户采取非正常操作强制关闭车辆控制系统时触发,或者可以是车辆的控制系统中的线路发生故障时触发,发生异常断电时,车辆的控制系统所包含的所有电子设备和器件会立即停电。
[0126]
下面一个划分有两个存储块(分别记为block1和block2)的flash存储器为例,说明本申请提供的方法的执行过程。
[0127]
车辆进入下电阶段后,执行步骤s101,检测当前存储块block1的可存储数据量是否大于待存储数据的数据量,检测出block1的可存储数据量小于待存储数据的数据量之后,执行步骤s102,将处于可写入状态,且可存储数据量大于待存储数据的数据量的block2确定为待写入存储块,并且将block1的block head(状态标记)设置为可擦除状态,然后将待存储数据写入block2。
[0128]
写入完成后,执行步骤s105,检测出block2的可存储数据量和block1的可存储数据量均小于数据量阈值,即flash存储器中不存在可存储数据量大于数据量阈值的存储块,于是执行步骤s106,将flash存储器中唯一一个处于可擦除状态的存储块block1的擦除标志位设置为1。
[0129]
当用户再次启动车辆时,车辆进入上电阶段,此时ecu执行步骤s201,并判断出block1的擦除标志位为1,将block1确定为待擦除存储块,执行步骤s202,将block1的擦除成功标志位设置为0,然后开始对block1执行数据擦除操作。
[0130]
若擦除block1的过程中发生异常断电,则ecu会在再次上电后,再次检测出block1的擦除标志位为1,继续对block1执行数据擦除操作。
[0131]
对block1的数据擦除操作结束后,ecu执行步骤s204,将block1的擦除标志位设置
为0,将block1的擦除成功标志位设置为1,并且将block1的block head设置为可写入状态。
[0132]
从上述流程可以发现,即使在上电阶段发生异常断电导致正在执行的数据擦除操作终止,ecu也会在再次上电后继续对待擦除存储块执行数据擦除操作,在待擦除存储块的数据擦除操作结束之前,ecu不会直接进入下电阶段,同时待擦除存储块的擦除标志位和擦除成功标志位均不会发生变更,因此也就不会向尚未完成数据擦除的待擦除存储块写入待存储数据,有效的防止了flash存储器的损坏。
[0133]
本申请第二方面提供一种flash存储器的控制装置,应用于车载电子控制单元,flash存储器被划分为多个存储块,如图3所示,该控制装置包括:
[0134]
第一判断单元301,用于在车辆的下电阶段,判断当前存储块的可存储数据量是否大于待存储数据的数据量。
[0135]
其中,当前存储块是车辆的前一个下电阶段中确定的待写入存储块。
[0136]
确定单元302,用于:
[0137]
若当前存储块的可存储数据量不大于待存储数据的数据量,将多个存储块中可存储数据量大于待存储数据的数据量的存储块确定为待写入存储块,并将当前存储块设置为可擦除状态;
[0138]
若当前存储块的可存储数据量大于待存储数据的数据量,将当前存储块确定为待写入存储块。
[0139]
写入单元303,用于将待存储数据写入待写入存储块。
[0140]
第二判断单元304,用于判断flash存储器中,是否存在可存储数据量大于数据量阈值的存储块。
[0141]
其中,数据量阈值根据待存储数据的数据量阈值确定。
[0142]
选取单元305,用于若flash存储器中不存在可存储数据量大于数据量阈值的存储块,选取flash存储器中至少一个处于可擦除状态的存储块,并将被选择的存储块的擦除标志位设置为1。
[0143]
上述第一判断单元301至选取单元305在车辆的下电阶段工作。
[0144]
查找单元306,用于在车辆的上电阶段,在多个存储块中查找待擦除存储块。
[0145]
其中,待擦除存储块,指代,对应的擦除标志位为1的存储块。
[0146]
设置单元307,用于若查找得到待擦除存储块,将每一个待擦除存储块的擦除成功标志位设置为0。
[0147]
擦除单元308,用于执行数据擦除操作,以擦除每一个待擦除存储块当前存储的数据。
[0148]
查找单元306,用于若数据擦除操作的执行过程中发生异常断电,当再次进入车辆的上电阶段时,返回执行在多个存储块中查找出待擦除存储块步骤。
[0149]
设置单元307,用于针对每一个待擦除存储块,待擦除存储块的数据被擦除后,依次将待擦除存储块的擦除标志位和待擦除存储块的擦除成功标志位设置为0和1,并将待擦除存储块设置为可写入状态。
[0150]
上述查找单元306至擦除单元308在车辆的上电阶段工作。
[0151]
其中,每一个待擦除存储块的数据均被擦除后,数据擦除操作结束。
[0152]
可选的,第二判断单元判断flash存储器中,是否存在可存储数据量大于数据量阈
值的存储块时,具体用于:
[0153]
计算待存储数据的数据量和预设的倍数的乘积,得到数据量阈值;
[0154]
将flash存储器的每一个存储块的可存储数据量均与数据量阈值进行比对;
[0155]
若至少一个存储块的可存储数据量大于数据量阈值,则判断出flash存储器存在可存储数据量大于数据量阈值的存储块;
[0156]
若每一个存储块的可存储数据量均不大于数据量阈值,则判断出flash存储器不存在可存储数据量大于数据量阈值的存储块。
[0157]
可选的,控制装置还包括:
[0158]
记录单元,用于若数据擦除操作的执行过程中接收到下电信号,记录下电信号;
[0159]
响应单元,用于在数据擦除操作结束后,响应下电信号,进入下电阶段。
[0160]
可选的,选取单元选取flash存储器中至少一个处于可擦除状态的存储块时,具体用于:
[0161]
在flash存储器的所有处于可擦除状态的存储块中,依据可存储数据量由小至大地选取n个存储块;其中,n是小于flash存储器的处于可擦除状态的存储块数量的正整数。
[0162]
可选的,查找单元在多个存储块中查找待擦除存储块时,具体用于:
[0163]
逐一检测flash存储器的每一个存储块对应的擦除标志位;
[0164]
针对每一个存储块,若检测出存储块对应的擦除标志位为1,将存储块确定为一个待擦除存储块。
[0165]
本实施例提供的flash存储器的控制装置,其具体工作原理可以参考本申请任一实施例所提供的flash存储器的控制方法,此处不再赘述。
[0166]
本申请提供一种flash存储器的装置,车辆下电阶段,根据flash划分的各个存储块的可存储数据量确定待写入存储块,向待写入存储块写入待存储数据,写入后,若各个存储块的可存储数据量不符合预设条件,将部分存储块的擦除标志位置为1,车辆上电阶段,查找出待擦除存储块(擦除标志位为1的存储块)并对待擦除存储块执行数据擦除操作,若擦除过程中异常断电,则等待车辆再次上电后重新确定待擦除存储块并继续执行数据擦除操作。本方案将数据擦除和数据写入操作分别在上电阶段和下电阶段执行,即使上电时异常断电也能够在再次上电后继续进行擦除,避免下电阶段在未擦除的存储块写入数据,防止flash存储器损坏。
[0167]
本申请实施例还提供一种计算机存储介质,用于存储计算机程序,存储的计算机程序被执行时,具体用于实现本申请任一实施例所提供的flash存储器的控制方法。
[0168]
本申请实施例还提供一种电子设备,如图4所示,包括存储器401和处理器402。
[0169]
其中,存储器401用于存储计算机程序。
[0170]
处理器402用于执行计算机程序,具体用于实现本申请任一实施例所提供的flash存储器的控制方法。
[0171]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者
设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0172]
需要注意,本发明中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
[0173]
专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜