掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明属于存储器领域,尤其涉及一种FLASH软件控制异步分时擦除方法。

背景技术

原来芯片的FLASH擦除,是通过软件给FLASH硬件配置擦除命令,由FLASH硬件时序自己控制擦除动作直到擦除成功的整个过程。这个过程为芯片硬件时序连续过程,CPU一直处于挂起状态,直到擦除成功,CPU才能获得对FLASH的访问权,继续执行程序;此过程中,为了保障和优化FLASH寿命,FLASH逐级加压并执行擦除动作,直到加到最高电压后以最高电压retry数次擦除动作,以保证擦除成功,任一次擦除成功即完成。但是,当FLASH擦除操作超过加压擦除阶段需要Retry擦除数次才能擦除成功时,耗费时间会大大增加。所以,现有技术在异常情况下,FLASH硬件擦除存在成功擦除时间不确定,可能存在成功擦除耗时过长的问题,导致CPU获得访问权的时机太晚,之后才能开始继续执行软件,进而导致CPU很容易的错过了很多重要信号、事件、交互的采集和获取,最终带来ECU的功能和性能缺陷;急需针对该问题设计一种FLASH软件控制异步分时擦除机制和方法;本发明在不影响FLASH寿命、成功结果的情况下,在擦除的整个过程阶段,采用分时和异步的方式,让CPU最大程度的获得访问权,工作在正常模式,降低和规避错过信号、事件、交互的情况发生,使CPU保持正常功能和性能,支持应用复杂度更高的场景。

发明内容

为了解决现有技术中的上述问题,本发明提出了一种FLASH软件控制异步分时擦除方法,所述方法包含:

步骤S1:创建并初始化擦除任务;获取擦除任务的调度环境参数IV;所述调度环境参数指示了擦除任务执行环境的繁忙程度从操作系统层面的体现;

步骤S2:判断执行计数器是否大于计数器最大值,如果是,则擦除任务失败,并进入步骤S7;否则进入下一步骤;

步骤S3:判断是否升压到电压最高值,如果否,则进入步骤S4;如果是,进入步骤S5;

步骤S4:升压一次;以当前电压执行一次单次擦除;

步骤S5:获取连续擦除次数X,并基于所述连续擦除次数X配置FLASH硬件擦除命令为X次擦除,使得FLASH硬件以最高电压执行连续的X个单次擦除;当FLASH硬件擦除命令被配置为X次擦除时,执行X个单次擦除后FLASH硬件擦除命令完成,FLASH硬件应擦除命令的完成而交出控制权;

所述获取连续擦除次数X,具体为:读取硬件环境参数HV,基于硬件环境参数IV和调度环境参数计算连续擦除次数X;所述基于硬件环境参数IV和调度环境参数计算连续擦除次数X,具体为:基于下式(1)计算;

其中:

步骤S6:读取擦除结果,判断擦除是否完成,如果是,则擦除任务成功,并进入步骤S7;否则,进入步骤S8;

步骤S7:擦除任务结束;

步骤S8:在擦除时机到来时,返回步骤S2。

进一步的,由处理器CPU创建并初始化擦除任务。

进一步的,初始化执行计数器CNT等于0。

进一步的,所述计数器最大值为预设值。

进一步的,所述计数器最大值等于20。

进一步的,所述电压最高值是可以由擦除任务动态配置的,在步骤S1创建擦除任务时,擦除任务读取FLASH属性信息,并根据所述属性信息设置所述电压最高值。

一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述的FLASH软件控制异步分时擦除方法。

一种执行设备,包括处理器,所述处理器和存储器耦合,所述存储器存储有程序指令,当所述存储器存储的程序指令被所述处理器执行时实现所述的FLASH软件控制异步分时擦除方法。

一种计算机可读存储介质,包括程序,当其在计算机上运行时,使得计算机执行所述的FLASH软件控制异步分时擦除方法。

一种电路系统,所述电路系统包括处理电路,所述处理电路配置为执行所述的FLASH软件控制异步分时擦除方法。

本发明的有益效果包括:

(1)通过FLASH软件控制异步分时擦除让CPU最大程度的获得访问权,工作在正常模式,降低和规避错过信号、事件、交互的情况发生,使CPU保持正常功能和性能,支持应用复杂度更高的场景;

(2)将物理升压转换为数字升压,可以直接对最高值进行改写和初始化设置,就能够用于擦除各种类型的FLASH,提高了兼容性;

(3)提出非等速分时调度,通过动态配置擦除次数的方式来来提高效率,也就是通过操作系统和硬件执行环境参数的简单获取和计算做繁忙程度的快速侦测,以动态控制分时实现不同速率调度,提高了系统执行效率;

(4)将连续X次擦除和动态配置相结合,可以连续进行擦除操作而不作和控制权转移相关的动作以及时序,使得控制电压能够保持稳定的同时更高效的完成擦除命令;同时通过设置特定基准值格式,提高了硬件的可移植性。

附图说明

此处所说明的附图是用来提供对本发明的进一步理解,构成本申请的一部分,但并不构成对本发明的不当限定,在附图中:

图1为现有技术中FLASH擦除方式时序示意图。

图2为现有技术中一次异常的FLASH擦除方式时序示意图。

图3为现有技术中一次正常的FLASH擦除方式时序示意图。

图4为本发明提供的一种FLASH软件控制异步分时擦除方法示意图。

图5为本发明提供的等速分时擦除方法时序示意图。

图6为本发明提供的连续发送多个单次擦除命令的不等速分时擦除时序示意图。

图7为本发明提供的连续X次擦除的不等速分时擦除时序示意图。

具体实施方式

下面将结合附图以及具体实施例来详细说明本发明,其中的示意性实施例以及说明仅用来解释本发明,但并不作为对本发明的限定。

现有技术中,对硬件芯片FLASH的擦除是通过软件给FLASH硬件配置擦除命令,由FLASH硬件时序自己控制擦除动作直到擦除成功的整个过程;这样,在整个擦除过程中,FLASH芯片硬件时序是连续过程,CPU一直处于挂起状态,直到擦除成功,CPU才能获得访问权,继续执行软件;如附图1所示,图中,X轴:擦除次数;Y轴:FLASH电压;如附图2所示,在异常情况,FLASH擦除操作可能超过加压擦除阶段,需要Retry擦除数次才能擦除成功,甚至不能够成功;其中:深色面积:整个擦除过程,包含了逐级加压和Retry擦除过程;如附图3所示,正常情况,FLASH擦除操作在加压擦除阶段即可成功完成,浅色面积是擦除操作过程;在此场景中,深色面积为擦除成功过程,浅色面积X轴宽度即为擦除成功耗时时间,擦除操作耗费时间近似理解为:T1=实际擦除次数(C1)*单次擦除执行时间(T);那么在异常情况下,FLASH硬件擦除存在成功擦除时间不确定,成功擦除耗时过长的问题,导致CPU获得访问权的时机太晚,之后才能开始继续执行软件,进而导致ECU系统容易错过了很多重要信号、事件、交互的采集和获取,最终带来ECU的功能和性能缺陷;

如附图4所示,本发明提出一种FLASH软件控制异步分时擦除方法;异步机制是指将一个完整连续过程切片拆分成若干个子过程,通过对各个子过程的调度执行和状态获取实现异步执行机制;分时机制为对各个子过程(包含调度执行和状态获取等)实行差异化调度(等速或者不等速等);

所述方法包括如下步骤:

步骤S1:创建并初始化擦除任务;具体的:由处理器CPU创建并初始化擦除任务;初始化执行计数器CNT=0;

优选的:获取擦除任务的调度环境参数IV;所述调度环境参数指示了擦除任务执行环境的繁忙程度从操作系统层面的体现;相对于硬件环境参数来说,这个值在一个时间范围内来说是一个相对稳定的值,在任务创建和初始化时,是一个获取调度环境参数的好时机,无需再次得到获取这些信息的系统权限;

优选的:所述调度环境参数IV为任务平均等待时间、任务调度队列长度、系统响应时间等中的一个或多个的组合;

步骤S2:判断执行计数器是否大于计数器最大值,如果是,则擦除任务失败,并进入步骤S7;否则进入下一步骤;

优选的:所述计数器最大值为可动态配置的预设值;

优选的:所述计数器最大值等于20;

步骤S3:判断是否升压到电压最高值,如果否,则进入步骤S4;如果是,进入步骤S5;

所述判断是否升压到最高值,具体为:判断升压次数是否大于升压计数值;升压计数值根据FLASH特性获取;例如:设置升压计数值为4;所述升压计数值可动态配置的预设值;通过数字化擦除时升压控制,使得升压过程能够被更加准确的控制,在升压过程中也能够进行FLASH的擦除,保障和优化FLASH寿命,FLASH逐级加压并执行擦除动作,直到加到最高电压后以最高电压retry数次擦除动作,以保证擦除成功,任一次擦除成功即完成;尤其是将物理升压转换为数字升压,可以直接对最高值进行改写和初始化设置,就能够用于擦除各种类型的FLASH,提高了兼容性;

优选的:所述电压最高值和FLASH属性相关;根据所述FLASH属性设置所述电压最高值;所述电压最高值是可以由擦除任务动态配置的,在步骤S1创建擦除任务时,擦除任务读取FLASH属性信息,并根据所述属性信息设置所述电压最高值;

步骤S4:升压一次;以当前电压执行一次单次擦除;单次擦除时,FLASH硬件只负责执行单次FLASH擦除命令即退出,每个FLASH单次擦除命令为将FLASH加压到不同的特定等级电压并以此电压执行一次FLASH擦除动作后加压释放还原,如附图1中每个散点;

所述执行一次单次擦除,具体为:处理器擦除任务调用FLASH硬件擦除命令,以使得FLASH硬件执行一次擦除命令;

优选的:设置FLASH硬件擦除命令为可配置的;根据CPU在执行前根据擦除任务需求提前进行FLASH硬件擦除命令的配置;当配置为单次擦除时,执行擦除一次后硬件擦除命令完成,FLASH硬件应擦除命令的完成而交出控制权;当配置为完整擦除时,也就是现有技术中的方式,FLASH按照其硬件时序,执行多次擦除,直到完成FLASH擦除过程直到擦除成功或者失败;完整擦除配置时,整个过程CPU挂起无法执行软件;通过对FLASH硬件擦除命令的配置使得本发明能够在支持复杂度更高的场景的同时,实现向下兼容;

步骤S5:以最高电压执行一次单次擦除;如附图5所示,在等速分时调度时,一次FLASH擦除时机执行一条单次擦除命令;将FLASH擦除过程切分成若干个子过程,每个子过程只关联调用单次FLASH擦除命令,图中,深色宽度为执行单次FLASH擦除命令时间;无色条带宽度为CPU获取访问控制时间;

为了进一步减少FLASH和CPU的切换开销,如附图6和7所示,本发明通过非等速分时调度,通过动态配置擦除次数的方式来来提高效率,也就是通过操作系统和硬件执行环境参数的简单获取和计算作繁忙程度的快速侦测,以动态控制分时实现不同速率调度,提高了系统执行效率;

可替换的:如附图6所示,所述步骤S5具体为:获取连续擦除次数X,连续发送多个单次擦除命令以使得FLASH硬件以最高电压执行X个单次擦除命令;

可替换的:如附图7所示,所述步骤S5具体为:获取连续擦除次数X,并基于所述连续擦除次数X配置FLASH硬件擦除命令,使得FLASH以最高电压执行连续的X个单次擦除,也就是X次擦除;当FLASH硬件擦除命令被配置为X次擦除时,执行X次擦除后FLASH硬件擦除命令完成,FLASH硬件应擦除命令的完成而交出控制权;也就是说,本发明通过将连续X次擦除和动态配置相结合后,FLASH硬件就可以连续进行擦除操作而不作和控制权转移相关的动作以及时序,使得控制电压能够保持稳定的同时更高效的完成擦除命令;

所述获取连续擦除次数X,具体为:读取硬件环境参数HV,基于硬件环境参数IV和调度环境参数计算连续擦除次数X,并将所述连续擦除次数X写入FLASH中特定存储空间;所述基于硬件环境参数IV和调度环境参数计算连续擦除次数X,具体为:基于下式(1)计算;

其中:

优选的:调度环境参数的基准值和硬件环境参数的基准值均是预设值;所述调度环境参数的基准值和硬件环境参数的基准值是二进制形式的整数值,所述二进制形式的整数值中只有一个bit位为1,而其他比特位为0;由于是预设值,在进行预设值的设置时,将其取值为最接近的只有一个bit位为1的二进制数值,通过这样的方式使得保存在寄存器中的基准值只需要进行寄存器的移位就能够快速的完成除法操作,从而只需要简单的时序控制就能够完成X次擦除,使得硬件时序的可移植性增加;

优选的:所述硬件环境参数IV为cache占用率、指令或者数据cache换出率、处理器占用率、特定或者特定时间中断指令个数等多个指标;这些指标值通常可以从专用寄存器中读取出;

当硬件执行环境参数为多个时,所述获取连续擦除次数X,具体为:基于下式(2)计算;

其中:

步骤S6:读取擦除结果,判断擦除是否完成,如果是,则擦除任务成功,并进入步骤S7;否则,进入步骤S8;

步骤S7:擦除任务结束;

步骤S8:在擦除时机到来时,返回步骤S2;

优选的:所述擦除时机为一个任务调度间隔结束时;在这个时候,操作系统可以在这个时机后处理需要进行抢断执行的操作,避免系统进入长时间的时机状态;

可替换的:所述擦除时机是可动态配置的,当操作系统繁忙时,擦除时机到来的晚而反之亦然;

优选的:所述CPU基于状态机进行擦除任务的任务调度,总体状态机使用任务调度方式,然后各个事件执行、状态获取、条件判断等都采用执行、查询的方式嵌套在总体状态机里如此,构成总体异步机制。从而打破等速调度限制,实现异步形式的动态调度周期,使得异步控制的各流程、状态、条件形成独立子系统以不同速率调度不等速执行;

优选的:在FLASH擦除任务尚未结束,且进入步骤S8的时间超过最大时长时,擦除时机到来并返回步骤S2;

通过本发明的分时控制机制主要用于将整体擦除过程切片拆分成若干子过程,留出时间间隙给CPU接管访问和控制权,执行软件;CPU获得了更高的时域和频率用于执行软件。

术语“数据处理装置”、“数据处理系统”、“用户设备”或“计算设备”包涵用于处理数据的所有种类的装置、设备和机器,举例包括可编程处理器、计算机、片上系统、或者上述中的多个或其组合。所述装置能够包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件,所述装置还可以包括代码,创建用于所述计算机程序的执行环境,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行环境、虚拟机或上述一个或多个的组合的代码。该装置和执行环境可以实现各种不同计算模型基础设施,诸如web服务、分布式计算、和网格计算基础设施。

计算机程序(也被称为程序、软件、软件应用、脚本或代码)能够以编程语言的任何形式来撰写,包括汇编或解释语言、说明或过程性语言,且其可以以任何形式部署,包括作为单机程序或者作为模块、组件、子例程、对象或适于在计算环境中使用的其他单元。计算机程序可以但不必与文件系统中的文件相对应。程序能够存储在保持其他程序或数据(例如存储在标记语言文档中的一个或多个脚本)的文件的一部分中,在专用于所述程序的单个文件中,或者在多个协同文件中(例如,存储一个或多个模块、子例程或代码部分的文件)。计算机程序可以部署为在一个计算机上或位于一个站点或跨多个站点分布且由通信网络互连的多个计算机上执行。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。

技术分类

06120114584053