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

闪存数据写入方法、装置、设备及存储介质

文献发布时间:2023-06-19 18:37:28


闪存数据写入方法、装置、设备及存储介质

技术领域

本申请属于闪存技术领域,尤其涉及一种闪存数据写入方法、装置、设备及存储介质。

背景技术

通常,闪存(flash)会分割为若干个扇区存储空间。普通的闪存数据写入方法,在数据写入时,需要先将指定扇区的所有地址的数据擦除,才能写入该扇区。但是,在写入数据的地址横跨多个扇区时,容易因为擦除扇区而导致该扇区的其他地址的数据丢失,使得该扇区的其他地址的存储空间变成无法使用的空闲存储空间。

发明内容

本申请实施例提供了一种闪存数据写入方法、装置、设备及存储介质,可以解决现有技术存在的在写入数据的地址横跨多个扇区时,容易因为擦除扇区而导致该扇区的其他地址的数据丢失,造成该扇区部分存储空间闲置的问题。

本申请实施例的第一方面提供一种闪存数据写入方法,包括:

获取目标数据,所述目标数据包括待写入数据中与目标扇区的地址重合部分的数据、所述目标扇区的数据中与所述待写入数据的地址未重合部分的数据;

将所述目标数据写入所述目标扇区。

可选地,在所述获取目标数据,所述目标数据包括待写入数据中与目标扇区的地址重合部分的数据、所述目标扇区的数据中与所述待写入数据的地址未重合部分的数据之前,包括:

输入所述待写入数据的起始地址与数据长度。

可选地,所述获取目标数据,所述目标数据包括待写入数据中与目标扇区的地址重合部分的数据、所述目标扇区的数据中与所述待写入数据的地址未重合部分的数据,包括:

读取所述目标扇区的数据;

将所述待写入数据中与所述目标扇区的地址重合部分的数据覆盖掉所述目标扇区的数据中与所述待写入数据的地址重合部分的原有数据,得到所述目标数据。

可选地,所述读取所述目标扇区的数据,包括:

读取所述目标扇区的数据到缓存区,所述缓存区的大小与所述目标扇区的大小相同。

可选地,所述将所述待写入数据中与所述目标扇区的地址重合部分的数据覆盖掉所述目标扇区的数据中与所述待写入数据的地址重合部分的原有数据,得到所述目标数据,包括:

将所述待写入数据中与所述目标扇区的地址重合部分的数据在所述缓存区的相应地址中覆盖掉所述目标扇区的数据中与所述待写入数据的地址重合部分的原有数据,在所述缓存区得到所述目标数据。

可选地,在所述将所述目标数据写入所述目标扇区之前,包括:

擦除所述目标扇区。

可选地,所述将所述目标数据写入所述目标扇区,包括:

将所述目标数据从所述缓存区中写入所述目标扇区。

本申请实施例的第二方面提供一种闪存数据写入装置,包括:

数据获取模块,用于获取目标数据,所述目标数据包括待写入数据中与目标扇区的地址重合部分的数据、所述目标扇区的数据中与所述待写入数据的地址未重合部分的数据;

数据写入模块,用于将所述目标数据写入所述目标扇区。

可选地,所述闪存数据写入装置,还包括:

数据输入模块,用于输入所述待写入数据的起始地址与数据长度。

可选地,所述数据获取模块,包括:

数据读取单元,用于读取所述目标扇区的数据;

数据覆盖单元,用于将所述待写入数据中与所述目标扇区的地址重合部分的数据覆盖掉所述目标扇区的数据中与所述待写入数据的地址重合部分的原有数据,得到所述目标数据。

可选地,所述数据读取单元,具体用于读取所述目标扇区的数据到缓存区,所述缓存区的大小与所述目标扇区的大小相同。

可选地,所述数据覆盖单元,具体用于将所述待写入数据中与所述目标扇区的地址重合部分的数据在所述缓存区的相应地址中覆盖掉所述目标扇区的数据中与所述待写入数据的地址重合部分的原有数据,在所述缓存区得到所述目标数据。

可选地,所述闪存数据写入装置,还包括:

扇区擦除模块,用于擦除所述目标扇区。

可选地,所述数据写入模块,具体用于将所述目标数据从所述缓存区中写入所述目标扇区。

本申请实施例的第三方面提供一种终端设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上所述的闪存数据写入方法。

本申请实施例的第四方面提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如上所述的闪存数据写入方法。

本申请实施例的第一方面提供的闪存数据写入方法,通过获取目标数据,所述目标数据包括待写入数据中与目标扇区的地址重合部分的数据、所述目标扇区的数据中与所述待写入数据的地址未重合部分的数据,将所述目标数据写入所述目标扇区,能够避免目标扇区的数据中与待写入数据的地址未重合部分的数据因为擦除而丢失,避免了因为扇区分割而导致扇区的部分存储空间闲置的情况。

可以理解的是,上述第二方面、第三方面和第四方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。

附图说明

为了更清楚地说明本申请具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的闪存数据写入方法的流程示意图;

图2为本申请实施例提供的扇区的示意图;

图3为本申请实施例提供的步骤S11的流程示意图;

图4为本申请实施例提供的扇区和缓存区的示意图;

图5为本申请实施例提供的闪存数据写入装置的结构示意图;

图6为本申请实施例提供的终端设备的结构示意图。

具体实施方式

以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、设备、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。

应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。

另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。“多个”表示“两个或两个以上”。

实施例一

本申请实施例一提供一种闪存数据写入方法,可以由终端设备的处理器在运行相应的计算机程序时执行,用于实现获取目标数据,所述目标数据包括待写入数据中与目标扇区的地址重合部分的数据、所述目标扇区的数据中与所述待写入数据的地址未重合部分的数据,将所述目标数据写入所述目标扇区,能够避免目标扇区的数据中与待写入数据的地址未重合部分的数据因为擦除而丢失,避免了因为扇区分割而导致扇区的部分存储空间闲置的情况。

如图1所示,本实施例提供的闪存数据写入方法包括如下步骤S11至S12:

S11、获取目标数据,所述目标数据包括待写入数据中与目标扇区的地址重合部分的数据、所述目标扇区的数据中与所述待写入数据的地址未重合部分的数据。

在应用中,上述待写入数据可以是需要写入闪存的数据,其地址范围是已知的,上述目标扇区可以是上述待写入数据需要写入的闪存中的一个或多个扇区,可以根据上述待写入数据的地址范围来确定具体是哪些扇区。在将上述待写入数据写入闪存之前,可以先判断上述待写入数据的地址范围是否超过闪存的最大地址范围,如果超过,则进行报错处理。如果上述待写入数据的地址完全包含了扇区n的地址,则扇区n为目标扇区,此时扇区n的数据中不存在与所述待写入数据的地址未重合部分的数据,扇区n的地址全部为待写入数据的地址的一部分,因此可以直接擦除扇区n的数据,然后将上述待写入数据中与扇区n的地址对应部分的数据写入扇区n。

如图2所示,如果上述待写入数据的地址不是完全包含扇区n的地址,而是横跨了扇区n-1和扇区n的地址,则扇区n-1和扇区n都为目标扇区,由于扇区n-1和扇区n的地址均只有一部分为所述待写入数据的地址,此时可以获取所述待写入数据中与所述目标扇区的地址重合部分的数据,即所述待写入数据中地址段3和地址段4的数据,以及所述目标扇区的数据中与所述待写入数据的地址未重合部分的数据,即扇区n-1的数据中地址段1的数据和扇区n的数据中地址段2的数据,并把这些数据作为所述目标数据。

S12、将所述目标数据写入所述目标扇区。

在应用中,通过步骤S11获得了所述目标数据后,即可以把所述目标数据写入所述目标扇区,即扇区n-1和扇区n,这样既能够把需要写入闪存的所述待写入数据写入到闪存的目标扇区即扇区n-1和扇区n的相应地址,又能够避免目标扇区的其他地址如扇区n-1的地址段1和扇区n的地址段2的数据因为擦除而丢失。

本申请实施例提供的闪存数据写入方法,通过获取目标数据,所述目标数据包括待写入数据中与目标扇区的地址重合部分的数据、所述目标扇区的数据中与所述待写入数据的地址未重合部分的数据,将所述目标数据写入所述目标扇区,能够避免目标扇区的数据中与待写入数据的地址未重合部分的数据因为擦除而丢失,避免了因为扇区分割而导致扇区的部分存储空间闲置的情况。同时在往闪存写入数据时,可以摆脱扇区的限制,不受扇区的影响,使用该方法,可以将闪存作为一个连续的不受扇区分割的存储空间,更有效地利用了闪存的存储空间。

实施例二

本申请实施例二提供一种基于实施例一实现的闪存数据写入方法,可以由终端设备的处理器在运行相应的计算机程序时执行,用于实现读取所述目标扇区的数据到缓存区,将所述待写入数据中与所述目标扇区的地址重合部分的数据在所述缓存区的相应地址中覆盖掉所述目标扇区的数据中与所述待写入数据的地址重合部分的原有数据,在所述缓存区得到所述目标数据,擦除所述目标扇区,将所述目标数据从所述缓存区中写入所述目标扇区,能够避免目标扇区的数据中与待写入数据的地址未重合部分的数据因为擦除而丢失,避免了因为扇区分割而导致扇区的部分存储空间闲置的情况。

在一个实施例中,在步骤S11之前,包括:输入所述待写入数据的起始地址与数据长度。

在应用中,为了获得所述待写入数据的地址范围,可以在将所述待写入数据写入闪存前,输入所述待写入数据的起始地址与数据长度,根据所述待写入数据的起始地址与数据长度即可得到所述待写入数据的地址范围,其中起始地址可以是任意一个正整数。

如图3所示,在一个实施例中,步骤S11包括:S31、读取所述目标扇区的数据;S32、将所述待写入数据中与所述目标扇区的地址重合部分的数据覆盖掉所述目标扇区的数据中与所述待写入数据的地址重合部分的原有数据,得到所述目标数据。具体地,S31包括:读取所述目标扇区的数据到缓存区,所述缓存区的大小与所述目标扇区的大小相同;S32包括:将所述待写入数据中与所述目标扇区的地址重合部分的数据在所述缓存区的相应地址中覆盖掉所述目标扇区的数据中与所述待写入数据的地址重合部分的原有数据,在所述缓存区得到所述目标数据。

在应用中,如图4所示,为了获得所述目标数据,可以先读取所述目标扇区的数据到缓存区,所述缓存区是一个独立于闪存的存储空间,其大小与所述目标扇区的大小相同,例如读取扇区n-1的数据到缓存区,将所述待写入数据中与所述目标扇区的地址重合部分的数据在所述缓存区的相应地址中覆盖掉所述目标扇区的数据中与所述待写入数据的地址重合部分的原有数据,例如将所述待写入数据的地址段3的数据在所述缓存区的地址段3a中覆盖掉扇区n-1的数据中地址段3a部分的原有数据,这样就能够在所述缓存区中得到所述目标数据,其中地址段3a的数据为所述待写入数据中与扇区n-1的地址重合部分即地址段3的数据,地址段4a的数据为扇区n-1的数据中与所述待写入数据的地址未重合部分即地址段1的原有数据,扇区n同理。

在一个实施例中,在步骤S12之前,包括:擦除所述目标扇区。步骤S12包括:将所述目标数据从所述缓存区中写入所述目标扇区。

在应用中,得到所述目标数据后,即可以擦除所述目标扇区,如擦除扇区n-1和扇区n,再把所述目标数据从所述缓存区中写入所述目标扇区即扇区n-1和扇区n,这样既能够使所述待写入数据成功写入所述目标扇区的相应地址,又能够避免所述目标扇区其他地址的数据因为擦除而丢失。

本申请实施例提供的闪存数据写入方法,通过读取所述目标扇区的数据到缓存区,将所述待写入数据中与所述目标扇区的地址重合部分的数据在所述缓存区的相应地址中覆盖掉所述目标扇区的数据中与所述待写入数据的地址重合部分的原有数据,在所述缓存区得到所述目标数据,擦除所述目标扇区,将所述目标数据从所述缓存区中写入所述目标扇区,能够避免目标扇区的数据中与待写入数据的地址未重合部分的数据因为擦除而丢失,避免了因为扇区分割而导致扇区的部分存储空间闲置的情况。同时在往闪存写入数据时,可以摆脱扇区的限制,不受扇区的影响,使用该方法,可以将闪存作为一个连续的不受扇区分割的存储空间,更有效地利用了闪存的存储空间。

实施例三

如图5所示,本实施例还提供一种闪存数据写入装置,该闪存数据写入装置500包括:

数据获取模块501,用于获取目标数据,所述目标数据包括待写入数据中与目标扇区的地址重合部分的数据、所述目标扇区的数据中与所述待写入数据的地址未重合部分的数据;

数据写入模块502,用于将所述目标数据写入所述目标扇区。

可选地,所述闪存数据写入装置500,还包括:

数据输入模块,用于输入所述待写入数据的起始地址与数据长度。

可选地,所述数据获取模块501,包括:

数据读取单元,用于读取所述目标扇区的数据;

数据覆盖单元,用于将所述待写入数据中与所述目标扇区的地址重合部分的数据覆盖掉所述目标扇区的数据中与所述待写入数据的地址重合部分的原有数据,得到所述目标数据。

可选地,所述数据读取单元,具体用于读取所述目标扇区的数据到缓存区,所述缓存区的大小与所述目标扇区的大小相同。

可选地,所述数据覆盖单元,具体用于将所述待写入数据中与所述目标扇区的地址重合部分的数据在所述缓存区的相应地址中覆盖掉所述目标扇区的数据中与所述待写入数据的地址重合部分的原有数据,在所述缓存区得到所述目标数据。

可选地,所述闪存数据写入装置500,还包括:

扇区擦除模块,用于擦除所述目标扇区。

可选地,所述数据写入模块502,具体用于将所述目标数据从所述缓存区中写入所述目标扇区。

需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本申请实施例还提供了一种终端设备600,如图6所示,包括存储器601、处理器602以及存储在存储器601中并可在处理器602上运行的计算机程序603,处理器602执行计算机程序603时实现第一方面提供的闪存数据写入方法的步骤。

在应用中,终端设备可包括,但不仅限于,处理器以及存储器,图6仅仅是终端设备的举例,并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如,输入输出设备、网络接入设备等。输入输出设备可以包括摄像头、音频采集/播放器件、显示屏等。网络接入设备可以包括网络模块,用于与外部设备进行无线网络。

在应用中,处理器可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

在应用中,存储器在一些实施例中可以是终端设备的内部存储单元,例如终端设备的硬盘或内存。存储器在另一些实施例中也可以是终端设备的外部存储设备,例如,终端设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。存储器还可以既包括终端设备的内部存储单元也包括外部存储设备。存储器用于存储操作系统、应用程序、引导装载程序(Boot Loader)、数据以及其他程序等,例如计算机程序的程序代码等。存储器还可以用于暂时存储已经输出或者将要输出的数据。

本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。

本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到终端设备的任何实体或设备、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的设备及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

在本申请所提供的实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,设备间接耦合或通讯连接,可以是电性,机械或其它的形式。

以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

技术分类

06120115631466