一种提高闪存编程效率的方法、装置、存储介质和终端
技术领域
本发明涉及flash
技术领域
,尤其涉及的是一种提高闪存编程效率的方法、装置、存储介质和终端。背景技术
如图1所示,为Nor flash一般的编程过程,接收编程指令和数据,然后验证数据并记录需要编程的地址,再进行编程。
现有技术中,为保证器件正常工作,在不同地址进行切换时需要将地址线的电压从高压切换到低压,而在地址切换完毕后,地址线的电压则会再次升高,然后进行数据验证,当验证到有需要编程的地址后即对该地址进行编程,编程完毕后再把地址线的电压切换为低压进行地址切换......;或者验证不到有需要编程的地址,则把地址线的电压切换为低压进行地址切换......,这样不断循环,直至完成所有数据的编程操作,而地址线的升压和降压导致的循环充放电过程直接影响了编程的效率。
因此,现有的技术还有待于改进和发展。
发明内容
本发明的目的在于提供一种提高闪存编程效率的方法、装置、存储介质和终端,旨在解决现有的编程过程中不断循环充放电过程直接影响编程效率的问题。
本发明的技术方案如下:本技术方案提供一种提高闪存编程效率的方法,具体包括以下过程:
接收编程指令和需要编程的数据信息,并对所述需要编程的数据信息进行缓存;
读取缓存中的编程数据;
将施加到flash中的地址线的电压切换为低压,并根据所述编程数据在flash中进行地址切换;
验证所述编程数据,根据验证结果记录flash中需要进行编程的地址;
判断所述需要编程的数据信息是否已经读取完毕,
是,则跳转至读取缓存中的编程数据;
否,则对所述flash中需要进行编程的地址执行编程操作。
本技术方案中,将施加到地址线的电压切换到低压,然后遍历所有需要编程的数据的验证,验证完毕后找到flash内需要编程的地址,再对flash内需要编程的地址执行编程操作;对于flash内不需要编程的地址不再需要进行电压的升降切换,从而提高了编程的效率。
进一步地,所述需要编程的数据信息包括需要编程的地址和编程的数据。
进一步地,对所述需要编程的数据信息进行缓存,具体过程如下:将所述需要编程的数据信息根据数据宽度分别缓存在flash中至少一个数据锁存器中。
进一步地,所述地址线为flash中的地址所在的位线。
进一步地,验证所述编程数据,根据验证结果记录flash中需要进行编程的地址,具体包括以下过程:读取flash内部与所述编程数据对应的地址的数据;将flash内部对应的地址的数据与所述编程数据的进行比较,根据比较得出flash内部需要编程的地址并记录。
进一步地,所述是,则跳转至读取缓存中的编程数据,具体包括以下过程:是,所述数据锁存器中的地址加1,并转至读取缓存中的编程数据。
本技术方案还提供一种提高闪存编程效率的装置,包括:
接收模块,接收编程指令和需要编程的数据信息,并对所述需要编程的数据信息进行缓存;
读取模块,读取缓存中的编程数据;
地址切换模块,将施加到flash中的地址线的电压切换为低压,并根据所述编程数据在flash中进行地址切换;
数据验证模块,验证所述编程数据,根据验证结果记录flash中需要进行编程的地址;
判断模块,判断所述需要编程的数据信息是否已经读取完毕;
跳转模块,跳转至读取缓存中的编程数据;
编程模块,对所述flash中需要进行编程的地址执行编程操作。
进一步地,还包括用于使数据锁存器的地址进行累加的地址累加器,在完成上一个锁存数据的验证后,地址累加器使数据锁存器的地址加1,再进行下一个锁存数据的读取。
本技术方案还提供一种存储介质,所述存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行上述任一项所述的方法。
本技术方案还提供一种终端,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,用于执行上述任一项所述的方法。
通过上述可知,先将施加到地址线的电压切换到低压,然后遍历所有需要编程的数据的验证,验证完毕后找到flash内需要编程的地址,再将施加到地址线的电压切换到高压,对flash内需要编程的地址执行编程操作;虽然在对flash内需要编程的不同地址执行编程操作时,也需要在不同的地址间进行切换,还是会存在地址线的升压和降压导致的循环充放电过程,但是对于flash内不需要编程的地址则不再需要进行电压的升降切换,从而提高了编程的效率,在需要编程的数据的量足够大时,编程效率的提高效果非常明显。
附图说明
图1是现有技术中Nor flash的编程过程示意图。
图2是本发明中提高闪存编程效率的方法的步骤流程图。
图3是本发明中提高闪存编程效率的装置的示意图。
图4是本发明中终端的示意图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
如图2所示,一种提高闪存编程效率的方法,具体包括以下过程:
S1:接收编程指令和需要编程的数据信息,并对所述需要编程的数据信息进行缓存。
其中,所述需要编程的数据信息包括需要编程的地址和编程的数据。
其中,所述需要编程的数据信息根据数据宽度分别缓存在flash中至少一个数据锁存器中。
S2:读取缓存中的编程数据。
其中,每次完成上一个锁存数据的验证后,通过使能数据锁存器的地址累加,读取下一个锁存数据,开始新一轮验证。
S3:将施加到flash中的地址线的电压切换为低压,并根据所述编程数据在flash中进行地址切换。
其中,所述地址线为flash中的地址所在的位线。
S4:验证所述编程数据,根据验证结果记录flash中需要进行编程的地址。
其中,所述S4具体包括以下过程:
s41:读取flash内部与所述编程数据对应的地址的数据;
s42:将flash内部对应的地址的数据与所述编程数据的进行比较,根据比较得出flash内部需要编程的地址并记录。
如,若flash内部与所述编程数据对应的地址的数据是0,则flash内部对应的地址就不需要编程。如果flash内部与所述编程数据对应的地址的数据是1,而需要编程的数据信息是0,则flash内部对应的地址就需要编程;若需要编程的数据信息是1,flash内部对应的地址就不需要编程。
S5:判断所述需要编程的数据信息是否已经读取完毕,是则跳转至S6,否则跳转至S2。
其中,当验证完上一个锁存数据后,如果还有缓存的编程数据没有完成验证,则继续下一个地址的锁存数据的验证,直至全部的
S6:对所述flash中需要进行编程的地址执行编程操作。
在现有技术中,先将地址线的电压从高压切换到低压,地址切换完后,地址线的电压从低压切换至高压,然后进行数据验证,根据验证结果决定是否执行编程操作,编程操作完毕后再把地址线的电压切换为低压进行地址切换(即不管flash内的地址是否需要编程,都会执行地址线的升压和降压过程)......,这样不断循环,直至完成所有数据的编程操作。而本技术方案中,先将施加到地址线的电压切换到低压,然后遍历所有需要编程的数据的验证,验证完毕后找到flash内需要编程的地址,再将施加到地址线的电压切换到高压,对flash内需要编程的地址执行编程操作;虽然在对flash内需要编程的不同地址执行编程操作时,也需要在不同的地址间进行切换,还是会存在地址线的升压和降压导致的循环充放电过程,但是对于flash内不需要编程的地址则不再需要进行电压的升降切换,从而提高了编程的效率,在需要编程的数据的量足够大时,编程效率的提高效果非常明显。
如图3所示,一种提高闪存编程效率的装置,包括:
接收模块101,接收编程指令和需要编程的数据信息,并对所述需要编程的数据信息进行缓存;
读取模块102,读取缓存中的编程数据;
地址切换模块103,将施加到flash中的地址线的电压切换为低压,并根据所述编程数据在flash中进行地址切换;
数据验证模块104,验证所述编程数据,根据验证结果记录flash中需要进行编程的地址;
判断模块105,判断所述需要编程的数据信息是否已经读取完毕;
跳转模块106,跳转至读取缓存中的编程数据;
编程模块107,对所述flash中需要进行编程的地址执行编程操作。
在某些具体实施例中,所述提高闪存编程效率的装置还包括用于使数据锁存器的地址进行累加的地址累加器108,在完成上一个锁存数据的验证后,地址累加器108使数据锁存器的地址加1,再进行下一个锁存数据的读取。
请参照图4,本发明实施例还提供一种终端。如示,终端300包括处理器301和存储器302。其中,处理器301与存储器302电性连接。处理器301是终端300的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或调用存储在存储器302内的计算机程序,以及调用存储在存储器302内的数据,执行终端的各种功能和处理数据,从而对终端300进行整体监控。
在本实施例中,终端300中的处理器301会按照如下的步骤,将一个或一个以上的计算机程序的进程对应的指令加载到存储器302中,并由处理器301来运行存储在存储器302中的计算机程序,从而实现各种功能:接收编程指令和需要编程的数据信息,并对所述需要编程的数据信息进行缓存;读取缓存中的编程数据;将施加到flash中的地址线的电压切换为低压,并根据所述编程数据在flash中进行地址切换;验证所述编程数据,根据验证结果记录flash中需要进行编程的地址;判断所述需要编程的数据信息是否已经读取完毕,是,则跳转至读取缓存中的编程数据;否,则对所述flash中需要进行编程的地址执行编程操作。
存储器302可用于存储计算机程序和数据。存储器302存储的计算机程序中包含有可在处理器中执行的指令。计算机程序可以组成各种功能模块。处理器301通过调用存储在存储器302的计算机程序,从而执行各种功能应用以及数据处理。
本申请实施例提供一种存储介质,所述计算机程序被处理器执行时,执行上述实施例的任一可选的实现方式中的方法,以实现以下功能:接收编程指令和需要编程的数据信息,并对所述需要编程的数据信息进行缓存;读取缓存中的编程数据;将施加到flash中的地址线的电压切换为低压,并根据所述编程数据在flash中进行地址切换;验证所述编程数据,根据验证结果记录flash中需要进行编程的地址;判断所述需要编程的数据信息是否已经读取完毕,是,则跳转至读取缓存中的编程数据;否,则对所述flash中需要进行编程的地址执行编程操作。其中,存储介质可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory, 简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory, 简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory, 简称EPROM),可编程只读存储器(Programmable Red-Only Memory, 简称PROM),只读存储器(Read-Only Memory, 简称ROM),磁存储器,快闪存储器,磁盘或光盘。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。