非易失性存储器编程方法、装置、电子设备及存储介质
技术领域
本申请涉及半导体
技术领域
,具体而言,涉及一种非易失性存储器编程方法、装置、电子设备及存储介质。背景技术
对于Nor Flash非易失性存储器而言,编程操作是存储芯片的重要操作步骤,而编程所耗时间是衡量编程表现的一项关键参数。常规Nor Flash非易失性存储器的所需编程时间一般在0.3~6ms,一般而言Nor Flash编程操作包括以下主要步骤:编程数据记录,编程验证,编程。编程验证开始前必须等编程数据记录完成才能开始,因此,在执行编程操作前,需要等待编程数据记录完成才可以进行,这导致了编程时间被拉长。
针对上述问题,亟需进行改进。
发明内容
本申请实施例的目的在于提供一种非易失性存储器编程方法、装置、电子设备及存储介质,具有编程速度快的优点。
第一方面,本申请实施例提供了一种非易失性存储器编程方法,技术方案如下:
包括:
获取位于暂存区内的编程数据是否达到设定值的判断结果;
根据所述判断结果控制非易失性存储器进入编程状态。
进一步地,在本申请实施例中,所述根据所述判断结果控制非易失性存储器进入编程状态的步骤包括:
如果位于暂存区内的编程数据没有达到设定值,则不进入编程状态;
如果位于暂存区内的编程数据达到设定值,则进入编程状态。
进一步地,在本申请实施例中,所述如果位于暂存区内的编程数据达到设定值,则进入编程状态的步骤包括:
执行编程验证操作;
如果编程验证通过则结束;
如果编程验证不通过则执行编程操作;
执行编程操作后执行编程验证操作直至编程验证通过。
进一步地,在本申请实施例中,所述如果位于暂存区内的编程数据达到设定值,则进入编程状态的步骤包括:
执行编程操作;
执行编程验证操作;
如果编程验证通过则结束;
如果编程验证不通过则返回至执行编程操作直至编程验证通过。
进一步地,在本申请实施例中,还包括:
判断所述编程数据中的最后一个字节是否为完整字节;
如果所述最后一个字节是不完整的字节,则使用预设数据对所述最后一个字节进行补位修复,使其变成一个完整字节。
进一步地,在本申请实施例中,所述预设数据采用0或1。
进一步地,在本申请实施例中,在所述如果所述最后一个字节是不完整的字节,则使用预设数据对所述最后一个字节进行补位修复,使其变成一个完整字节的步骤之后还包括:
在下一次编程中,对所述最后一个字节进行重新编程。
第二方面,本申请还提供一种非易失性存储器编程装置,包括:
第一获取模块,用于获取位于暂存区内的编程数据是否达到设定值的判断结果;
第一处理模块,用于根据所述判断结果控制非易失性存储器进入编程状态。
第三方面,本申请还提供一种电子设备,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如上所述方法中的步骤。
第四方面,本申请还提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,运行如上所述方法中的步骤。
由上可知,本申请实施例提供的一种非易失性存储器编程方法、装置、电子设备及存储介质,通过获取位于暂存区内的编程数据是否达到设定值的判断结果;根据所述判断结果决定是否进入编程状态,相较于传统的编程方法,本身请提供的方案具有编程速度快的有益效果。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
图1为本申请实施例提供的一种非易失性存储器编程方法流程图。
图2为本申请实施例提供的一种非易失性存储器编程装置结构示意图。
图3为本申请实施例提供的一种电子设备示意图。
图4为现有的常规编程操作过程流程图。
图5为本申请实施例提供的编程操作过程流程图。
图6为本申请实施例中编程完整256个字节对比现有技术的编程完整256个字节的时间线示意图。
图7为本申请实施例中编程不完整256个字节对比现有技术的编程不完整256个字节的时间线示意图。
图中:210、第一获取模块;220、第一处理模块;300、电子设备;310、处理器;320、存储器。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
请参照图1至图7,一种非易失性存储器编程方法,其技术方案具体包括:
S110、获取位于暂存区内的编程数据是否达到设定值的判断结果;
S120、根据判断结果控制非易失性存储器进入编程状态。
通过上述技术方案,在执行编程指令时,首先需要获取输入的编程指令、编程地址以及编程数据,然后判断位于暂存区内的编程数据是否达到设定值,根据判断结果来决定是否进入编程状态,编程状态包括了执行编程操作以及执行编程验证操作。
而在现有的编程方式中,需要将所有的编程数据全部录入至暂存区内,然后才开始进入编程状态。在本申请的方案中,通过设置一个设定值,该设定值可以进行调整,判断暂存区内的数据是否达到该设定值,然后根据判断结果来决定是否进入编程状态,与现有的方案相比,可以通过调节设定值的大小来节约等待数据录入的时间,因此可以有效提高整体的编程效率,并且编程数据的内容越多,则提高效率的效果越明显。
具体的,在一些实施方式中,根据判断结果决定是否进入编程状态的步骤包括:
如果位于暂存区内的编程数据没有达到设定值,则不进入编程状态;
如果位于暂存区内的编程数据达到设定值,则进入编程状态。
例如,在需要编程一个256个字节的数据的时候,将设定值设置为1个字节,在现有的编程方案中,需要将256个字节的编程数据全部录入至暂存区之后,才开始执行编程验证操作以及编程操作,而在本申请的方案中,将1个字节的编程数据录入至暂存区之后,就开始执行编程验证操作以及编程操作,相对于现有技术而言,节省了255个字节录入的时间,有效提高了整体编程的效率。
进一步地,在本申请实施例中,如果位于暂存区内的编程数据达到设定值,则进入编程状态的步骤包括:
执行编程验证操作;
如果编程验证通过则结束;
如果编程验证不通过则执行编程操作;
执行编程操作后执行编程验证操作直至编程验证通过。
通过上述技术方案,当暂存区内的编程数据达到设定值之后,就开始进入编程状态,具体的,首先执行编程验证操作,验证编程地址内的存储单元的状态是否和编程数据所需要的状态相同,如果是相同的,则说明此时编程地址上已经具有了编程数据,则不再需要执行编程操作,即编程验证通过,直接结束,如果不相同,则编程验证不通过,需要执行编程操作,执行完编程操作之后需要再度执行编程验证操作,并不断循环直至编程验证通过。
在另外一些实施例中,如果位于暂存区内的编程数据达到设定值,则进入编程状态的步骤包括:
执行编程操作;
执行编程验证操作;
如果编程验证通过则结束;
如果编程验证不通过则返回至执行编程操作直至编程验证通过。
通过上述技术方案,当暂存区内的编程数据达到设定值之后,就开始进入编程状态,具体的,首先执行编程操作将编程数据编程至编程地址上,然后执行编程验证操作对编程后的数据进行验证,如果编程验证通过则结束,如果编程验证不通过,则需要再次执行编程操作,然后循环直至编程验证通过。
其中,如果位于暂存区内的编程数据达到设定值,则进入编程状态的步骤中,既可以执行编程操作,也可以执行编程验证操作,作为优选方案,选择执行编程验证操作,因为当编程地址上的数据与需要进行编程的编程数据相同时,则可以直接通过编程验证,这样就不需要执行编程操作了,而如果先执行编程操作,在面临上述情况时,会执行一次没有必要的编程操作。
进一步地,在本申请实施例中,还包括:
判断编程数据中的最后一个字节是否为完整字节;
如果最后一个字节是不完整的字节,则使用预设数据对最后一个字节进行补位修复,使其变成一个完整字节。
通过上述技术方案,将编程数据中有缺陷的数据进行补位修复,避免编程失效,因为在现有的编程中,如果对不完整的字节进行了编程,会对本次的编程进行放弃,需要后续对全部数据进行重新编程,例如,在编程一个256个字节的数据中,如果最后一个字节是不完整的字节,即少于8个比特,那么本次的编程会被视为无效操作,如果需要继续编程,则需要重新发送编程指令,然后重新将256个字节的数据录入至暂存区内,重新进行编程。
而在本实施例所提供的方案中,会通过预设数据将不完整的字节补全为一个完整的字节,具体的,采用0或者1补入代替缺少的比特,使其成为完整的字节,例如在编程一个256个字节的数据中,如果最后一个字节是不完整的字节,即少于8个比特,那么就可以使用1来补全该字节,这样就会视所有比特为有效数据,避免了重新编程,节省了编程时间。
进一步地,在本申请实施例中,在如果最后一个字节是不完整的字节,则使用预设数据对最后一个字节进行补位修复,使其变成一个完整字节的步骤之后还包括:
在下一次编程中,对最后一个字节进行重新编程。
通过上述技术方案,由于通过预设数据对最后一个字节进行补位,因此最后一个字节对应的数据信息不一定是真正的数据信息,因此,在下一次编程中,只需要重新编程最后一个字节即可,这样在保证数据信息正确的前提下,避免了在现有编程中如果最后一个字节不完整则需要重新进行编程的问题,有效的缩短了编程时间。
具体的,如图4所示,图4所展示的为现有常规编程的操作过程,在接获取编程指令、编程地址以及编程数据后,便会开始录入需要编程的编程数据,以256个字节的编程数据为例,当256个字节的编程数据全部录入至暂存区后,存储器便会进入编程状态。当录入的编程数据的最后一个字节不是完整的字节,即少于8个比特,则本次编程视为无效操作,如需继续编程,需重新发送指令,并录入256个字节。
图5所示为本申请提供的编程操作过程。如图5所示,在获取编程指令、编程地址以及编程数据之后,便会开始录入需要编程的编程数据,以256个字节为例,当录入暂存区的字节数目达到设定值之后,存储器便会进入编程状态。设定值为可调节参数,例如,可以录入1个字节之后就进入编程状态。如果录入字节中的最后一个字节不是完整的字节,会自动用数值为‘1’或‘0’补全为一个字节,视所有比特为有效数据。如果需编程完整的数据,在第二次的编程指令中,只需重新编程最后一个字节即可。
图6所示为本申请的编程完整256个字节对比现有技术的编程完整256个字节的时间线。t0表示时间零点,t1表示录入一个字节消耗的时间,t2表示录入所有字节消耗的时间,t3表示,编程结束的时间。以设定录入一个字节后即开始进入编程状态为例,通过本申请的方案,可以缩短的时间可表示为T=t2-t1。
图7所示为针对不完整字节存在的情况,本申请提供的方案可以避免无效编程指令的情况,保证前255个字节准确编程,下一次的编程指令中只需要包含编程最后一个字节的指令即可,如果是现有手段,则需要重新编程256个字节。因此,本申请提供的方案一方面缩短了编程时间,在标准SPI模式下,以256个字节,设定值为1个字节为例,若SPI模式的频率为50M,每次编程指令可缩短40微秒的时间;此外,通过本身请的方案还解决了不完整字节带来的影响,也提高了存储器实际应用的效率和灵活性。
第二方面,本申请还提供一种非易失性存储器320编程装置,包括:
第一获取模块210,用于获取位于暂存区内的编程数据是否达到设定值的判断结果;
第一处理模块220,用于根据判断结果控制非易失性存储器进入编程状态。
通过上述技术方案,在执行编程指令时,首先需要获取输入的编程指令、编程地址以及编程数据,在进入编程状态之前,需要完成编程数据记录,编程数据记录通常是指将编程数据记录在暂存区,然后判断位于暂存区内的编程数据是否达到设定值,第一获取模块210则用于获取该判断结果,然后第一处理模块220根据判断结果来决定是否进入编程状态,编程状态包括了执行编程操作以及执行编程验证操作。
而在现有的编程方式中,需要将所有的编程数据全部录入至暂存区内,然后才开始进入编程状态。在本申请的方案中,通过设置一个设定值,判断暂存区内的数据是否达到该设定值,然后根据判断结果来决定是否进入编程状态,与现有的方案相比,可以通过调节设定值的大小来节约等待数据录入的时间,因此可以有效提高整体的编程效率,并且编程数据的内容越多,则提高效率的效果越明显。
第三方面,本申请还提供一种电子设备300,包括处理器310以及存储器320,存储器320存储有计算机可读取指令,当计算机可读取指令由处理器310执行时,运行如上述方法中的步骤。
通过上述技术方案,处理器310和存储器320通过通信总线和/或其他形式的连接机构(未标出)互连并相互通讯,存储器320存储有处理器310可执行的计算机程序,当计算设备运行时,处理器310执行该计算机程序,以执行时执行上述实施例的任一可选的实现方式中的方法,以实现以下功能:获取位于暂存区内的编程数据是否达到设定值的判断结果;根据判断结果决定是否进入编程状态。
第四方面,本申请还提供一种存储介质,其上存储有计算机程序,计算机程序被处理器执行时,运行如上述方法中的步骤。
通过上述技术方案,计算机程序被处理器执行时,执行上述实施例的任一可选的实现方式中的方法,以实现以下功能:获取位于暂存区内的编程数据是否达到设定值的判断结果;根据判断结果决定是否进入编程状态。
其中,存储介质可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory, 简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory, 简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory, 简称EPROM),可编程只读存储器(Programmable Red-Only Memory, 简称PROM),只读存储器(Read-OnlyMemory, 简称ROM),磁存储器,快闪存储器,磁盘或光盘。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。