CN113568579B - 一种存储器、数据存储方法以及数据读取方法 - Google Patents

一种存储器、数据存储方法以及数据读取方法 Download PDF

Info

Publication number
CN113568579B
CN113568579B CN202110855717.4A CN202110855717A CN113568579B CN 113568579 B CN113568579 B CN 113568579B CN 202110855717 A CN202110855717 A CN 202110855717A CN 113568579 B CN113568579 B CN 113568579B
Authority
CN
China
Prior art keywords
data
storage area
information storage
memory
mapping information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110855717.4A
Other languages
English (en)
Other versions
CN113568579A (zh
Inventor
聂强
钟龙华
杨照辉
欧超光
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Gao Chuan Automation Technology Co ltd
Original Assignee
Shenzhen Gao Chuan Automation Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Gao Chuan Automation Technology Co ltd filed Critical Shenzhen Gao Chuan Automation Technology Co ltd
Priority to CN202110855717.4A priority Critical patent/CN113568579B/zh
Publication of CN113568579A publication Critical patent/CN113568579A/zh
Application granted granted Critical
Publication of CN113568579B publication Critical patent/CN113568579B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Abstract

本发明公开了一种存储器、数据存储方法以及数据读取方法,其中,上述存储器包括:至少一个擦除块,各上述擦除块分别包括一个映射信息存储区域和至少一个与上述映射信息存储区域对应的数据信息存储区域;上述数据信息存储区域用于存储数据信息,上述映射信息存储区域用于存储映射信息,上述映射信息体现与上述映射信息存储区域对应的所有数据信息存储区域的数据写入状态,上述数据信息是需要存进上述存储器中的信息。与现有技术相比,本发明方案无需在每次写入数据时都擦除整个擦除块的内容,避免存储器的反复擦除,有利于提高存储器的使用寿命。

Description

一种存储器、数据存储方法以及数据读取方法
技术领域
本发明涉及计算机技术领域,尤其涉及的是一种存储器、数据存储方法以及数据读取方法。
背景技术
随着计算机技术的迅速发展,对于数据的处理和存储越来越受到重视。目前通常采用Flash存储器等存储介质来进行数据存储。在嵌入式系统中,通常需要保存一些参数等信息到控制器中,因此通常在控制器中设置存储器以进行数据存储。
具体的,现有技术中,通常在存储器中分出一整块区域专门用来存储数据,在进行数据存储时,先将整块存储区域擦除,再将数据写入,在数据读取时,从固定位置进行读取。现有技术的问题在于,无法获知该区域是否存满数据,因此每次写入数据时都需要擦除整块区域,影响存储器使用寿命。
因此,现有技术还有待改进和发展。
发明内容
本发明的主要目的在于提供一种存储器、数据存储方法以及数据读取方法,旨在解决现有技术中直接通过存储器中一整块区域存储数据,无法获知该区域是否存满数据,因此每次写入数据时都需要擦除整块区域,影响存储器使用寿命的问题。
为了实现上述目的,本发明第一方面提供一种存储器,上述存储器包括:
至少一个擦除块,各上述擦除块分别包括一个映射信息存储区域和至少一个与上述映射信息存储区域对应的数据信息存储区域;
上述数据信息存储区域用于存储数据信息,上述映射信息存储区域用于存储映射信息,上述映射信息体现与上述映射信息存储区域对应的所有数据信息存储区域的数据写入状态,上述数据信息是需要存进上述存储器中的信息。
可选的,各上述映射信息存储区域分别设置于各上述擦除块的头部区域。
可选的,上述存储器为Flash存储器。
可选的,上述存储器还包括:分别与各上述擦除块对应的备份块,各上述备份块分别用于对对应擦除块存储的数据进行备份。
本发明第二方面提供一种数据存储方法,上述数据存储方法应用于上述存储器,且上述数据存储方法包括:
获取待存储数据信息;
基于所有上述擦除块中的映射信息,获取最新写入位置,其中,上述最新写入位置是上述存储器中未写入数据信息且地址最前的数据信息存储区域;
将上述待存储数据信息写入上述最新写入位置,并更新上述最新写入位置对应的映射信息。
可选的,上述数据写入状态包括数据未写入、数据正在写入和数据已写入。
可选的,上述基于所有上述擦除块中的映射信息,获取最新写入位置,其中,上述最新写入位置是上述存储器中未写入数据信息且地址最前的数据信息存储区域,包括:
按照各上述擦除块的地址依次获取各上述擦除块中的映射信息;
基于获取的上述映射信息依次确定各上述擦除块中各上述数据信息存储区域的数据写入状态,将数据写入状态为数据未写入且地址最前的数据信息存储区域作为最新写入位置。
可选的,各上述映射信息中包括预设数目个标志数据,每个上述标志数据用于体现一个与上述映射信息对应的数据信息存储区域的数据写入状态。
可选的,每个上述标志数据的大小为2字节。
本发明第三方面提供一种数据读取方法,上述数据读取方法应用于上述存储器,且上述数据读取方法包括:
基于所有上述擦除块中的映射信息,获取最新读取位置,其中,上述最新读取位置是上述存储器中已写入数据信息且地址最后的数据信息存储区域;
读取上述最新读取位置存储的数据信息。
由上可见,本发明方案中提供的存储器包括:至少一个擦除块,各上述擦除块分别包括一个映射信息存储区域和至少一个与上述映射信息存储区域对应的数据信息存储区域;上述数据信息存储区域用于存储数据信息,上述映射信息存储区域用于存储映射信息,上述映射信息体现与上述映射信息存储区域对应的所有数据信息存储区域的数据写入状态,上述数据信息是需要存进上述存储器中的信息。与现有技术中直接通过存储器中一整块区域存储数据相比,本发明方案中将一个擦除块分为映射信息存储区域和数据信息存储区域,且在映射信息存储区域中存储用于体现对应的各数据信息存储区域的数据写入状态的映射信息。因此,在写入数据时可以根据映射信息确定该擦除块中是否还有未写入数据的数据信息存储区域,从而可以实现将新的数据信息直接写入未写入数据的数据信息存储区域中,无需在每次写入数据时都擦除整个擦除块的内容,避免存储器的反复擦除,有利于提高存储器的使用寿命。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例提供的一种存储器的结构示意图;
图2是本发明实施例提供的另一种存储器的结构示意图;
图3是本发明实施例提供的一种数据存储方法的流程示意图;
图4是本发明实施例图3中步骤S200的具体流程示意图;
图5是本发明实施例提供的一种数据读取方法的流程示意图;
图6是本发明实施例提供的一种擦除后的擦除块的部分数据示意图;
图7是本发明实施例提供的一种擦除块写入部分数据的示意图;
图8是本发明实施例提供的一种擦除块写入部分数据的示意图;
图9是本发明实施例提供的一种擦除块写入部分数据的示意图;
图10是本发明实施例提供的一种擦除块示意图;
图11是本发明实施例提供的另一种擦除块示意图;
图12是本发明实施例提供的一种参数写入流程示意图;
图13是本发明实施例提供的一种参数读取流程示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况下,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当…时”或“一旦”或“响应于确定”或“响应于检测到”。类似的,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述的条件或事件]”或“响应于检测到[所描述条件或事件]”。
下面结合本发明实施例的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但本发明还可以采用其它不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面的具体实施例的限制。
随着科学技术的进步,尤其是计算机技术的迅速发展,对于数据的处理和存储越来越受到重视。目前通常采用Flash存储器等存储介质来进行数据存储。在嵌入式系统中,一般会使用Flash存储器作为存储介质,在上面保存非易失性数据。在嵌入式系统中,通常需要保存一些参数等信息到控制器中,因此通常在控制器中设置存储器以进行数据存储。一般的控制器都板载有Flash芯片(MCU芯片自带的Flash,或SPI Flash芯片)。由于Flash的特性是先擦除才能再写入,并且擦除时,必须是在Flash的某些特定的地址处(擦除对齐地址,即每个擦除块的首地址)整块(例如32KB,64KB,128KB或256KB大小)擦除。然后才可以在刚刚擦除的区域写入数据。
鉴于Flash这种特性,对于数据的存储,现有技术中,通常在Flash存储器中分出一整块区域专门用来存储数据,在进行数据存储时,先将整块存储区域擦除,再将数据写入,在数据读取时,从固定位置进行读取。现有技术的问题在于,无法获知该区域是否存满数据,因此每次写入数据时都需要擦除整块区域,影响存储器使用寿命,且数据写入速度慢。在一种应用场景中,在Flash存储器中划分出一块区域专门用来存储参数等数据,但在存储参数数据时按照各参数数据的大小进行顺序写入,后写入的参数即为最新的参数,在参数读取时,需要依赖对应的搜索算法找到最新的参数。该方案读取速度取决于搜索算法的效率,且算法的时间复杂度会随参数存储次数而变化,在系统掉电导致参数存储不完整的情况下会影响读取的参数的准确性。在另一种应用场景中,可以在Flash存储器上构建文件系统,然后将参数等数据以文件的形式进行存储,参数在Flash上的存储位置由文件系统进行管理。该方案中,参数的读取也涉及到搜索算法问题,读取速度和写入速度都慢,并且对于大部分嵌入式系统来说,构建文件系统会导致系统过于臃肿,并会拖慢系统速度。
为了解决现有技术的问题,本发明方案提供一种存储器、数据存储方法以及数据读取方法,其中,上述存储器包括:至少一个擦除块,各上述擦除块分别包括一个映射信息存储区域和至少一个与上述映射信息存储区域对应的数据信息存储区域;上述数据信息存储区域用于存储数据信息,上述映射信息存储区域用于存储映射信息,上述映射信息体现与上述映射信息存储区域对应的所有数据信息存储区域的数据写入状态,上述数据信息是需要存进上述存储器中的信息。与现有技术中直接通过存储器中一整块区域存储数据相比,本发明方案中将一个擦除块分为映射信息存储区域和数据信息存储区域,且在映射信息存储区域中存储用于体现对应的各数据信息存储区域的数据写入状态的映射信息。因此,在写入数据时可以根据映射信息确定该擦除块中是否还有未写入数据的数据信息存储区域,从而可以实现将新的数据信息直接写入未写入数据的数据信息存储区域中,无需在每次写入数据时都擦除整个擦除块的内容,避免存储器的反复擦除,有利于提高存储器的使用寿命。
如图1所示,本发明实施例提供一种存储器1,上述存储器1包括:至少一个擦除块11,各上述擦除块11分别包括一个映射信息存储区域111和至少一个与上述映射信息存储区域111对应的数据信息存储区域112;
上述数据信息存储区域112用于存储数据信息,上述映射信息存储区域111用于存储映射信息,上述映射信息体现与上述映射信息存储区域111对应的所有数据信息存储区域112的数据写入状态,上述数据信息是需要存进上述存储器1中的信息。
具体的,本实施例中,上述存储器1为Flash存储器,Flash的存储区域都是按块擦除的,本实施例中,即按擦除块11进行擦除,每一次擦除时,在各擦除块11的擦除对齐地址处(例如32KB,64KB,128KB或256KB大小处)对整个擦除块11进行擦除。其中,上述数据信息是需要存储到上述存储器1中的信息,本实施例中,上述数据信息可以是参数信息,如系统参数信息或加工参数信息,实际使用过程中,上述数据信息还可以是其它信息,在此不作具体限定。具体的,本实施例中,将一组需要保存的参数组成一个结构体(或数组)的形式,形成参数信息。具体的,一个数据信息(或参数信息)可以是一个字节的数据,也可以是多个字节的数据,可根据对应数据的实际大小进行预设和调整,在此不作具体限定。
由上可见,本发明实施例提供的存储器1包括:至少一个擦除块11,各上述擦除块11分别包括一个映射信息存储区域111和至少一个与上述映射信息存储区域111对应的数据信息存储区域112;上述数据信息存储区域112用于存储数据信息,上述映射信息存储区域111用于存储映射信息,上述映射信息体现与上述映射信息存储区域111对应的所有数据信息存储区域112的数据写入状态,上述数据信息是需要存进上述存储器1中的信息。与现有技术中直接通过存储器1中一整块区域存储数据相比,本发明方案中将一个擦除块11分为映射信息存储区域111和数据信息存储区域112,且在映射信息存储区域111中存储用于体现对应的各数据信息存储区域112的数据写入状态的映射信息。因此,在写入数据时可以根据映射信息确定该擦除块11中是否还有未写入数据的数据信息存储区域112,从而可以实现将新的数据信息直接写入未写入数据的数据信息存储区域112中,无需在每次写入数据时都擦除整个擦除块11的内容,避免存储器1的反复擦除,有利于提高存储器1的使用寿命。
本实施例图1中,以一个存储器1包括两个擦除块11,每个擦除块11中包括一个映射信息存储区域111和两个数据信息存储区域112为例进行说明,但不作具体限定。实际使用过程中,一个存储器中可以包括一个或多个擦除块11,每个擦除块11中可以包括一个或多个数据信息存储区域112。进一步的,在一种应用场景中,每个擦除块11中还可以设置多个映射信息存储区域111,每个擦除块11中映射信息存储区域111的数目与数据信息存储区域112的数目相等,一个映射信息存储区域111与一个数据信息存储区域112对应。本实施例中,一个映射信息存储区域111与多个数据信息存储区域112对应。
具体的,上述存储器1中的多个擦除块11按地址顺序进行排列,例如,第一个擦除块11在上述存储器1的前32KB处,第二个擦除块11在上述存储器1的第二个32KB处。
在一种应用场景中,上述存储器1包括一个或多个数据存储区域(图中未示出),各数据存储区域用于专门进行数据存储(例如,不同的数据存储区域可以用于存储不同来源或类型的参数),每个数据存储区域中包括多个擦除块11,每个上述擦除块11中分别包括一个映射信息存储区域111和至少一个与上述映射信息存储区域111对应的数据信息存储区域112。在各个数据存储区域中进行数据擦除时按照擦除块进行整块擦除的。
本实施例中,各上述映射信息存储区域111分别设置于各对应擦除块11的头部区域,即地址靠前的区域。如此,可以直接从各擦除块11的起始地址处快速读取各擦除块11中的映射信息,从而获得该擦除块11中各数据信息存储区域112对应的数据写入状态,进而在写入数据信息时快速获知未写入数据信息的数据信息存储区域112,在读取数据信息时快速获知最新写入的数据信息。有利于提高存储器1的数据处理效率,且有利于保护存储器1的使用寿命。具体的,上述各数据信息存储区域112中的数据信息是依次写入的。
具体的,本实施例中,如图2所示,上述存储器1还包括:分别与各上述擦除块11对应的备份块12,各上述备份块12分别用于对对应擦除块11存储的数据进行备份。
其中,一个上述备份块12作为一个上述擦除块11的备份,上述备份块的12结构与上述擦除块11的结构相同,即上述备份块12包括一个映射信息存储区域121和至少一个与上述映射信息存储区域121对应的数据信息存储区域122,且上述备份块12用于对对应擦除块11中的信息进行备份,以提高存储的数据信息的正确性。
在一种应用场景中,当一个擦除块11的所有数据信息存储区域112都已经存储数据信息,而还有数据信息需要进行存储时,可以将该擦数块11对应的备份块12中已经存储的数据擦除,并继续在上述备份块12中存储剩下的数据信息。
本发明实施例中,还提供一种数据存储方法,图3是本发明实施例提供的一种数据存储方法的流程示意图,上述数据存储方法应用于上述存储器,具体的,上述存储器包括至少一个擦除块,各上述擦除块分别包括一个映射信息存储区域和至少一个与上述映射信息存储区域对应的数据信息存储区域;上述数据信息存储区域用于存储数据信息,上述映射信息存储区域用于存储映射信息,上述映射信息体现与上述映射信息存储区域对应的所有数据信息存储区域的数据写入状态,上述数据信息是需要存进上述存储器中的信息。如图3所示,上述数据存储方法包括如下步骤:
步骤S100,获取待存储数据信息。
其中,上述数据信息是需要存储到上述存储器中的信息,本实施例中,上述数据信息可以是参数信息,如系统参数信息或加工参数信息,实际使用过程中,上述数据信息还可以是其它信息,在此不作具体限定。本实施例中,上述存储器为Flash存储器,Flash的存储区域都是按块擦除的,本实施例中,即按擦除块进行擦除,每一次擦除时,在各擦除块的擦除对齐地址处(例如32KB,64KB,128KB或256KB大小处)对整个擦除块进行擦除。
步骤S200,基于所有上述擦除块中的映射信息,获取最新写入位置,其中,上述最新写入位置是上述存储器中未写入数据信息且地址最前的数据信息存储区域。
具体的,依次读取各擦除块的映射信息存储区域中的映射信息,确定各擦除块中各数据信息存储区域的数据写入状态,从而获得上述最新写入位置。其中,上述最新写入位置是要写入待存储数据信息的目标位置。
步骤S300,将上述待存储数据信息写入上述最新写入位置,并更新上述最新写入位置对应的映射信息。
由上可见,本发明实施例提供的数据存储方法包括:获取待存储数据信息;基于所有上述擦除块中的映射信息,获取最新写入位置,其中,上述最新写入位置是上述存储器中未写入数据信息且地址最前的数据信息存储区域;将上述待存储数据信息写入上述最新写入位置,并更新上述最新写入位置对应的映射信息。与现有技术中直接通过存储器中一整块区域存储数据相比,本发明方案中将一个擦除块分为映射信息存储区域和数据信息存储区域,且在映射信息存储区域中存储用于体现对应的各数据信息存储区域的数据写入状态的映射信息。因此,在写入数据时可以根据映射信息确定该擦除块中是否还有未写入数据的数据信息存储区域,从而可以实现将新的数据信息直接写入未写入数据的数据信息存储区域中,无需在每次写入数据时都擦除整个擦除块的内容,避免存储器的反复擦除,有利于提高存储器的使用寿命,且有利于提高数据存储的效率。
其中,上述数据信息存储区域的数据写入状态包括数据未写入、数据正在写入和数据已写入。具体的,上述步骤S300包括,当开始将待存储数据信息写入上述最新写入位置时,将上述最新写入位置对应的映射信息更新为数据正在写入。当待存储数据信息全部成功写入上述最新写入位置时,将上述最新写入位置对应的映射信息更新为数据已写入。
数据未写入代表该数据信息存储区域在整个擦除块擦除之后还未写入过数据,数据正在写入代表对应的数据信息存储区域正在进行数据写入的操作,数据已写入代表对应的数据信息存储区域已经成功完成数据写入的操作。本实施例中,只有数据完全写入成功,对应的数据写入状态才会更新为数据已写入。因此,如果在数据写入过程中因断电等原因导致数据未能完全写入,则对应的数据写入状态并不会更新为数据已写入,在用户读取数据时可以明确获知该数据是未写入完成(错误)的,有利于提高数据的正确性。
具体的,本实施例中,如图4所示,上述步骤S200包括:
步骤S201,按照各上述擦除块的地址依次获取各上述擦除块中的映射信息。
步骤S202,基于获取的上述映射信息依次确定各上述擦除块中各上述数据信息存储区域的数据写入状态,将数据写入状态为数据未写入且地址最前的数据信息存储区域作为最新写入位置。
具体的,本实施例中,先获取存储器中地址最靠前(如起始地址为0)的第一个擦除块的映射信息,根据上述映射信息判断第一个擦除块的数据信息存储区域是否存满,如果已经存满,则获取第二个擦除块的映射信息进行判断(或获取对应的备份块,将对应的待存储信息存入对应的备份块中)。如果未存满,则获取上述擦除块中位置最靠前的数据信息存储区域作为最新写入位置,用于写入上述待存储数据信息。如此,可以快速找到最新写入位置,且无需在每次写入数据时都擦除整个擦除块的内容,避免存储器的反复擦除,有利于提高存储器的使用寿命和存储器的数据写入效率。
本实施例中,各上述映射信息中包括预设数目个标志数据,每个上述标志数据用于体现一个与上述映射信息对应的数据信息存储区域的数据写入状态。其中,上述预设数目不小于与上述映射信息对应的数据信息存储区域的个数,本实施例中,上述预设数目的个数等于与上述映射信息对应的数据信息存储区域的个数,通过映射信息中的每一个标志数据可以直接获取对应数据信息存储区域的数据写入状态。
具体的,可以基于预设的数值表示各数据信息存储区域的数据写入状态。例如,本实施例中,每个上述标志数据的大小为2字节,则可以预先设置标志数据等于0xffff时表示对应数据信息存储区域的数据写入状态为数据未写入,标志数据等于0xff00时表示对应数据信息存储区域的数据写入状态为数据正在写入,标志数据等于0x0000时表示对应数据信息存储区域的数据写入状态为数据已写入。
实际使用过程中,各上述标志数据的大小和各状态对应的数值可以根据实际需求进行设置和调整,在此不做具体限定。具体的,存储器中擦除块的数目、各擦除块的大小、各擦除块中数据信息存储区域的数目等也可以根据实际需求进行设置和调整,各擦除块、各数据信息存储区域和各映射信息存储区域的大小可以相等也可以不相等,在此不做具体限定。
具体的,本实施例中还提供一种数据读取方法,图5是本发明实施例提供的一种数据读取方法的流程示意图,上述数据读取方法应用于上述存储器,具体的,上述存储器包括至少一个擦除块,各上述擦除块分别包括一个映射信息存储区域和至少一个与上述映射信息存储区域对应的数据信息存储区域;上述数据信息存储区域用于存储数据信息,上述映射信息存储区域用于存储映射信息,上述映射信息体现与上述映射信息存储区域对应的所有数据信息存储区域的数据写入状态,上述数据信息是需要存进上述存储器中的信息。如图5所示,上述数据读取方法包括如下步骤:
步骤A100,基于所有上述擦除块中的映射信息,获取最新读取位置,其中,上述最新读取位置是上述存储器中已写入数据信息且地址最后的数据信息存储区域。
步骤A200,读取上述最新读取位置存储的数据信息。
具体的,先获取存储器中地址最靠前(如起始地址为0)的第一个擦除块的映射信息,根据上述映射信息判断第一个擦除块的数据信息存储区域是否存满,如果未存满,则获取地址最靠后的一个已写入数据信息(即数据写入状态为数据已写入)的数据信息存储区域,作为最新读取位置。如果已经存满,则数据信息可能跨越擦除块进行存储,获取第二个擦除块的映射信息进行判断(或获取对应的备份块的映射信息进行判断),当第二个擦除块(或对应备份块)的所有数据信息存储区域都未成功写入数据信息,则将第一个擦除块的最后一个数据信息存储区域作为最新读取位置。反之则基于对第二个擦除块(或对应备份块)进行判断,获取最新读取位置,具体判断流程可以参照对第一个擦除块进行判断的流程。获取到的最新读取位置是最后一次成功存储数据信息(即参数信息)的数据信息存储区域,读取最新读取位置存储的数据信息即可获得最新的数据信息(参数信息)。
由上可见,本发明实施例提供的数据读取方法包括:基于所有上述擦除块中的映射信息,获取最新读取位置,其中,上述最新读取位置是上述存储器中已写入数据信息且地址最后的数据信息存储区域;读取上述最新读取位置存储的数据信息。与现有技术中直接通过存储器中一整块区域存储数据相比,本发明方案中将一个擦除块分为映射信息存储区域和数据信息存储区域,且在映射信息存储区域中存储用于体现对应的各数据信息存储区域的数据写入状态的映射信息。因此,在读取数据时可以根据映射信息快速读取到最新存储的数据信息(参数信息),满足系统需求,有利于提升存储器的数据读取效率。
进一步的,具体的数据读取过程还可以参照上述数据写入过程,例如,上述数据写入状态包括数据未写入、数据正在写入和数据已写入,上述映射信息中包括预设数目个标志数据,每个上述标志数据用于体现一个与上述映射信息对应的数据信息存储区域的数据写入状态,每个上述标志数据的大小为2字节等,在此不再赘述。
本实施例中,还基于一种具体应用场景对上述数据存储方法和上述数据读取方法进行说明。具体的,Flash存储器是按块进行擦除的,比如32KB,64KB,128KB或256KB等。本实施例中,设置上述Flash存储器的每个擦除块的大小为64KB,且在上述Flash存储器中划分128KB的区域用于存储对应参数,即上述Flash存储器包括两个64KB的擦除块,用两个擦除块来存储参数,防止掉电等引起数据损坏,提高参数的正确性。图6是本发明实施例提供的一种擦除后的擦除块的部分数据示意图,如图6所示,当一个擦除块被擦除时,每个字节的数据值都为0xFF(图6中仅列出了前256个字节),图中的FF表示的是十六进制的值,实际场景中是对应的二进制值。因为FLASH特性是通过擦除来给每个单元充电,充电后该单元值为1,即每个bit位是1。每个字节有8个位,所以是十六进制的FF。如果此时向首地址写入一组数据,如写入数字1,2,3,则写入后的存储器如图7所示,图7中数字1,2,3仅作为示例,实际上也是二进制的形式。而Flash存储器中数据写入可以是不连续的,例如在写入1,2之后,空一个位置写3,如图8所示。然后在2和3之间的位置还可以继续写入,如图9所示。如此,则可以将每个擦除块分成数据信息存储区域和映射信息存储区域,在每一个数据信息存储区域完成数据写入时更新映射信息存储区域中对应字节的标志数据。
进一步的,本实施例中,在每个擦除块的头部区域设置映射信息存储区域,用于存储映射信息(如映射表),用来表示该擦除块中已写区域和未写区域。其中,需要根据实际情况提前计划好要保留多少字节用于映射(即作为映射信息存储区域)。具体的,设置一个标志数据的大小为2个字节,即用2个字节来表示一个参数对应的数据信存储区域的状态。每个数据信息存储区域的大小也是预先设定好的(一般嵌入式中的系统参数的数量不会动态改变)。每个数据信息存储区域大小是相同的(大小根据实际情况,需要能容纳下当前要保存的参数,以及保留一定余量为后续可能的扩充提供空间)。在进行数据信息的存数时,是按照数据信息存储区域的位置按顺序存储的。具体的,有如下几种状态:当标志数据等于0xffff时表示对应数据信息存储区域的数据写入状态为数据未写入(刚擦除),标志数据等于0xff00时表示对应数据信息存储区域的数据写入状态为数据正在写入(在写入参数时,先写该映射,防止写入的参数过大时掉电,参数只存储了一部分),标志数据等于0x0000时表示对应数据信息存储区域的数据写入状态为数据已写入(参数全部存储完毕时,才修改该映射)。
图10是本发明实施例提供的一种擦除块示意图,其中前64个字节代表映射信息存储区域,后192字节代表6个数据信息存储区域,每个数据信息存储区域的大小为32字节。则图10表示有两个数据信息存储区域已经写入了数据信息(参数数组)。图11是本发明实施例提供的另一种擦除块示意图,在图11所示的擦除块中,第三个数据信息存储区域对应的标志数据为0xFF00,表示第三个数据信息存储区域正在写入数据。图12是本发明实施例提供的一种参数写入流程示意图,图13是本发明实施例提供的一种参数读取流程示意图。如图12所示,在写入参数时,先读取擦除块的映射信息,根据各个数据信息存储区域对应的标志数据的值确定最新写入位置。具体的,如果映射信息中所有标志数据都等于0x0000,则说明当前擦除块已经存满,此时最新写入位置跨越擦除块,可以擦除备份块,并将备份块作为工作的擦除块,即第一个擦除块写完了,需要使用第二个擦除块写入参数,此时擦除第二个擦除块(备份块),然后顺序写入,原先的擦除块可以作为当前工作的擦除块的备份块。在一种应用场景中,最新写入位置是在系统上电时扫描映射信息时确定的最靠前的0xffff对应的位置,一个映射信息对应的位置之中会存在跨越擦除对齐地址的情况。这里考虑的是用户定义的每个参数结构的大小不能被一个擦除块整除的情况。一个擦除块的最后不能容纳一个参数结构的部分需要跳过,即最新写入地址跨越擦除对齐地址时参数结构需要写入到下一个可擦除块中。如图13所示,在读取参数时,先读取擦除块的映射信息存储区域的映射信息,根据映射信息确定最新读取位置。具体的,当一个擦除块的映射信息存储区域是最后一个标志数据是0xFF时表示该映射信息存储区域对应的擦除块是工作的擦除块(非备份擦除块),此时根据折半查找算法找到最后一个值等于0x0000的标志数据,从而确定对应的最新读取位置,读取对应的参数。当读取位置跨越擦除块(擦除对齐地址)时,读取备份块,并重新确定最新读取位置。此处考虑了用户定义的参数结构无法被一个擦除块的大小整除时,需要跳过不能被整除的部分,从下个可擦除块开始读取。进一步的,如果用户向寻找更早写入的参数,可以依次向前找0x0000对应的参数结构即可。但系统参数一般是使用最后保存的有效参数。在一种应用场景中,如果正在写一组参数,但还没有写完,此时断电了。那么此时的参数并没有完整保存到Flash上,对应的标志数据为0x00FF(正在写入数据)。那么再次上电时,搜索到最后一个标志数据为0x00 FF,表示这个参数在上次存储时不完整,那么继续向前寻找0x0000对应的数据信息存储区域,该区域存储的参数才是最后有效的参数。
如此,在读取参数时,可以不用搜索整个存储器找出哪个是最后存入的参数。而是通过映射信息即可快速确定最后写入的参数位置,从而读出该参数。并且可以有效杜绝系统掉电导致的参数存储不完整的情况,该方法在保证了Flash寿命的同时,又提高了参数读取速度,并且参数读取速度不会因为参数存储的多少而降低。
应理解,上述实施例中各步骤的序号大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将上述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟是以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,上述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以由另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
上述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,上述计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,上述计算机程序包括计算机程序代码,上述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读介质可以包括:能够携带上述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,上述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不是相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

Claims (8)

1.一种存储器,其特征在于,所述存储器包括:
一个或多个数据存储区域,各所述数据存储区域用于专门进行数据存储,每个所述数据存储区域中包括多个擦除块,各所述擦除块分别包括一个映射信息存储区域和多个与所述映射信息存储区域对应的数据信息存储区域;所述存储器为Flash存储器,所述Flash存储器的存储区域都按块擦除,在各所述数据存储区域中进行数据擦除时按照所述擦除块进行整块擦除;所述擦除块每一次擦除时在其擦除对齐地址处对整个擦除块进行擦除;
所述数据信息存储区域用于存储数据信息,所述映射信息存储区域用于存储映射信息,所述映射信息体现与所述映射信息存储区域对应的所有数据信息存储区域的数据写入状态,所述数据信息是需要存进所述存储器中的信息;一个所述映射信息存储区域与多个所述数据信息存储区域对应,一个所述映射信息中包括多个标志数据,通过每一个所述标志数据直接体现对应的各所述数据信息存储区域的数据写入状态,各所述标志数据通过预设的数值表示各所述数据信息存储区域的数据写入状态;所述数据信息为参数信息,所述参数信息是将一组需要保存的参数组成一个结构体的形式所形成的;
各所述映射信息存储区域分别设置于各所述擦除块的头部区域,以直接从所述擦除块的起始地址处快速读取所述擦除块中的所述映射信息,获得所述擦除块中所述数据信息存储区域对应的数据写入状态,在写入数据信息时快速获知未写入数据信息的数据信息存储区域,在读取数据信息时快速获知最新写入的数据信息,提高所述存储器的数据处理效率和使用寿命。
2.根据权利要求1所述的存储器,其特征在于,所述存储器还包括:分别与各所述擦除块对应的备份块,各所述备份块分别用于对对应擦除块存储的数据进行备份。
3.一种数据存储方法,其特征在于,所述数据存储方法应用于如权利要求1或2所述的存储器中,所述数据存储方法包括:
获取待存储数据信息;
基于所有所述擦除块中的映射信息,获取最新写入位置,其中,所述最新写入位置是所述存储器中未写入数据信息且地址最前的数据信息存储区域;
将所述待存储数据信息写入所述最新写入位置,并更新所述最新写入位置对应的映射信息。
4.根据权利要求3所述的数据存储方法,其特征在于,所述数据写入状态包括数据未写入、数据正在写入和数据已写入。
5.根据权利要求4所述的数据存储方法,其特征在于,所述基于所有所述擦除块中的映射信息,获取最新写入位置,其中,所述最新写入位置是所述存储器中未写入数据信息且地址最前的数据信息存储区域,包括:
按照各所述擦除块的地址依次获取各所述擦除块中的映射信息;
基于获取的所述映射信息依次确定各所述擦除块中各所述数据信息存储区域的数据写入状态,将数据写入状态为数据未写入且地址最前的数据信息存储区域作为最新写入位置。
6.根据权利要求3所述的数据存储方法,其特征在于,各所述映射信息中包括预设数目个标志数据,每个所述标志数据用于体现一个与所述映射信息对应的数据信息存储区域的数据写入状态。
7.根据权利要求6所述的数据存储方法,其特征在于,每个所述标志数据的大小为2字节。
8.一种数据读取方法,其特征在于,所述数据读取方法应用于如权利要求1或2所述的存储器中,所述数据读取方法包括:
基于所有所述擦除块中的映射信息,获取最新读取位置,其中,所述最新读取位置是所述存储器中已写入数据信息且地址最后的数据信息存储区域;
读取所述最新读取位置存储的数据信息。
CN202110855717.4A 2021-07-28 2021-07-28 一种存储器、数据存储方法以及数据读取方法 Active CN113568579B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110855717.4A CN113568579B (zh) 2021-07-28 2021-07-28 一种存储器、数据存储方法以及数据读取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110855717.4A CN113568579B (zh) 2021-07-28 2021-07-28 一种存储器、数据存储方法以及数据读取方法

Publications (2)

Publication Number Publication Date
CN113568579A CN113568579A (zh) 2021-10-29
CN113568579B true CN113568579B (zh) 2022-05-03

Family

ID=78168428

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110855717.4A Active CN113568579B (zh) 2021-07-28 2021-07-28 一种存储器、数据存储方法以及数据读取方法

Country Status (1)

Country Link
CN (1) CN113568579B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114428588A (zh) * 2021-12-17 2022-05-03 深圳市拔超科技股份有限公司 一种Flash掉电数据存储方法及系统
CN114527934A (zh) * 2022-01-12 2022-05-24 珠海泰芯半导体有限公司 闪存的控制方法、装置、存储介质和电子设备

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1348191A (zh) * 2000-10-11 2002-05-08 三星电子株式会社 闪速存储器中驱动再映射的方法及其闪速存储器体系结构
CN1376980A (zh) * 2001-03-22 2002-10-30 松下电器产业株式会社 存储器
CN101923516A (zh) * 2009-05-15 2010-12-22 旺宏电子股份有限公司 以区块为基础的快闪存储装置及其操作方法
CN102541753A (zh) * 2011-12-29 2012-07-04 上海爱信诺航芯电子科技有限公司 一种嵌入式存储器的读写优化方法
CN102841851A (zh) * 2012-07-19 2012-12-26 深圳市江波龙电子有限公司 闪存管理方法和闪存设备
CN104461401A (zh) * 2014-12-25 2015-03-25 珠海煌荣集成电路科技有限公司 Spi闪速存储器的数据读写管理方法及数据读写管理装置
CN106502928A (zh) * 2016-09-29 2017-03-15 华为技术有限公司 一种存储系统掉电保护方法、存储控制器及电子设备
CN107256197A (zh) * 2017-05-18 2017-10-17 深圳市晟碟半导体有限公司 一种数据存储方法、存储装置及智能终端
CN107797765A (zh) * 2017-09-26 2018-03-13 昆明理工大学 一种延长电可擦除存储元件使用寿命的方法
CN111061649A (zh) * 2019-10-28 2020-04-24 宁波三星智能电气有限公司 一种存储器的存储空间自适应分配方法
CN111078128A (zh) * 2018-10-22 2020-04-28 浙江宇视科技有限公司 数据管理方法、装置及固态硬盘
CN112181303A (zh) * 2020-09-29 2021-01-05 广东艾科技术股份有限公司 数据存储方法、装置、计算机设备和存储介质
CN112416242A (zh) * 2019-08-22 2021-02-26 爱思开海力士有限公司 数据存储设备及其操作方法
CN112817527A (zh) * 2021-01-21 2021-05-18 深圳市显控科技股份有限公司 掉电数据存储方法、单片机及计算机可读存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103294615B (zh) * 2012-02-24 2017-09-22 北京四达时代软件技术股份有限公司 一种存储机顶盒用户信息的方法
US11024390B1 (en) * 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
KR102419036B1 (ko) * 2017-12-18 2022-07-11 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1348191A (zh) * 2000-10-11 2002-05-08 三星电子株式会社 闪速存储器中驱动再映射的方法及其闪速存储器体系结构
CN1376980A (zh) * 2001-03-22 2002-10-30 松下电器产业株式会社 存储器
CN101923516A (zh) * 2009-05-15 2010-12-22 旺宏电子股份有限公司 以区块为基础的快闪存储装置及其操作方法
CN102541753A (zh) * 2011-12-29 2012-07-04 上海爱信诺航芯电子科技有限公司 一种嵌入式存储器的读写优化方法
CN102841851A (zh) * 2012-07-19 2012-12-26 深圳市江波龙电子有限公司 闪存管理方法和闪存设备
CN104461401A (zh) * 2014-12-25 2015-03-25 珠海煌荣集成电路科技有限公司 Spi闪速存储器的数据读写管理方法及数据读写管理装置
CN106502928A (zh) * 2016-09-29 2017-03-15 华为技术有限公司 一种存储系统掉电保护方法、存储控制器及电子设备
CN107256197A (zh) * 2017-05-18 2017-10-17 深圳市晟碟半导体有限公司 一种数据存储方法、存储装置及智能终端
CN107797765A (zh) * 2017-09-26 2018-03-13 昆明理工大学 一种延长电可擦除存储元件使用寿命的方法
CN111078128A (zh) * 2018-10-22 2020-04-28 浙江宇视科技有限公司 数据管理方法、装置及固态硬盘
CN112416242A (zh) * 2019-08-22 2021-02-26 爱思开海力士有限公司 数据存储设备及其操作方法
CN111061649A (zh) * 2019-10-28 2020-04-24 宁波三星智能电气有限公司 一种存储器的存储空间自适应分配方法
CN112181303A (zh) * 2020-09-29 2021-01-05 广东艾科技术股份有限公司 数据存储方法、装置、计算机设备和存储介质
CN112817527A (zh) * 2021-01-21 2021-05-18 深圳市显控科技股份有限公司 掉电数据存储方法、单片机及计算机可读存储介质

Also Published As

Publication number Publication date
CN113568579A (zh) 2021-10-29

Similar Documents

Publication Publication Date Title
US10552311B2 (en) Recovery for non-volatile memory after power loss
US8046530B2 (en) Process and method for erase strategy in solid state disks
US8041884B2 (en) Controller for non-volatile memories and methods of operating the memory controller
EP2306321B1 (en) Increasing memory performance in flash memory devices by performing simultaneous write operation to multiple devices
US6381176B1 (en) Method of driving remapping in flash memory and flash memory architecture suitable therefor
EP1909184B1 (en) Mapping information managing apparatus and method for non-volatile memory supporting different cell types
US7680977B2 (en) Page and block management algorithm for NAND flash
US6865658B2 (en) Nonvolatile data management system using data segments and link information
CN113568579B (zh) 一种存储器、数据存储方法以及数据读取方法
JPH09185551A (ja) 半導体記憶装置
JP3421581B2 (ja) 不揮発性半導体メモリを用いた記憶装置
CN109918024B (zh) 存储管理方法、装置、单片机设备和可读存储介质
CN107045423B (zh) 存储器装置及其数据存取方法
CN112596668A (zh) 一种存储器的坏块处理方法及系统
CN112988611A (zh) 非易失性存储器的数据写入方法、终端和可读存储介质
US7500081B2 (en) Power-up implementation for block-alterable memory with zero-second erase time
CN113885808A (zh) 映射信息记录方法以及存储器控制电路单元与存储装置
CN116185563B (zh) 一种基于车规级微控制器数据闪存的软件模拟算法
CN112347001A (zh) 闪存垃圾回收的校验方法、装置及电子设备
JP3826115B2 (ja) 記憶装置、メモリ管理方法及びプログラム
CN115328851A (zh) 一种数据保护方法、装置、设备及介质
US10559359B2 (en) Method for rewriting data in nonvolatile memory and semiconductor device
CN112347524A (zh) 闪存编程方法、装置及电子设备
CN112988037A (zh) 静态磨损均衡方法、终端和计算机可读存储介质
US6898680B2 (en) Minimization of overhead of non-volatile memory operation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant