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

非易失性存储器的数据写入方法、终端和可读存储介质

文献发布时间:2023-06-19 11:29:13


非易失性存储器的数据写入方法、终端和可读存储介质

技术领域

本申请涉及数据存储技术领域,尤其涉及一种非易失性存储器的数据写入方法、终端和计算机可读存储介质。

背景技术

非易失性存储器是存储芯片的一种,由于结合了ROM(只读存储器)和RAM(随机存储器)的优点,可以快速的实现数据的读写。虽然非易失性存储器有着其他存储器不可比例的优势,但是同样也有着不可避免的问题。

目前,当有些应用的有些情景下,对非易失性存储进行数据擦除也是一种特殊的数据写入,也就是写入空白数据。而在对非易失性存储器进行数据擦除时,将会首先对需要进行擦除的数据进行存储,然后再使用相应的物理地址将空白数据进行写入,最后通过改变逻辑区域所关联的物理地址实现数据的擦除。

对于上述方式,在需要进行擦除的页数较少时在实现时不会很麻烦,但是在需要进行擦除的页数的数量较多时,由于需要预先进行数据的存储,保证在出现异常时不会导致原始数据的丢失,很大程度的减慢了数据擦除的速度,使得擦除效率极低。

发明内容

基于此,有必要针对现行非易失性存储器进行数据擦除的弊端,提供一种非易失性存储器的数据写入方法、终端和计算机可读存储介质,用于提升非易失性存储器数据擦除的效率。

第一方面,为实现上述目的,本申请提供的一种非易失性存储器的数据写入方法,所述非易失性存储器的数据写入方法包括:

接收输入的待写入数据以及其逻辑地址;

若所述待写入数据为空白且所述逻辑地址包含有整页逻辑区域,则获取管理表中所述逻辑地址所记录的物理地址,并将所述物理地址变更为空白;

若所述待写入数据为空白且所述逻辑地址包含有非整页逻辑区域,则按照预设数据写入规则将所述待写入数据写入至所述非整页逻辑区域中。

第二方面,为实现上述目的,本申请还提供一种终端,所述终端包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如上述所述的非易失性存储器的数据写入方法的步骤。

第三方面,为实现上述目的,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被一个或多个处理器执行时,使得一个或多个处理器执行如上述所述的非易失性存储器的数据写入方法的步骤。

上述非易失性存储器的数据写入方法、终端和计算机可读存储介质,在接收到输入的待写入数据以及逻辑地址时,确定当前是否需要启动非易失性存储器的逻辑擦功能,在待写入数据为空白,且逻辑地址包含有整页逻辑区域时,将会启动相应的逻辑擦功能,然后获取逻辑地址所包含的整页逻辑区域,以读取整页逻辑区域对应的管理表所包含的逻辑区域中所记录的物理地址,并将此物理地址更新为空白,同时还将获取逻辑地址所包含的非整页逻辑区域,以将待写入数据写入至非整页逻辑区域中。实现了在非易失性存储器所写入的数据为空白时,直接对所包含的整页逻辑区域对应的管理表进行处理,避免对所有的数据进行重新的写入,提高了数据擦除的效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

图1为本申请一个实施例中非易失性存储器的数据写入方法的流程示意图;

图2为本申请一个实施例中管理表的常规界面状态图;

图3为本申请一个实施例中确定是否包含有整页逻辑区域的步骤的流程示意图;

图4为本申请一个实施例中写入数据至非整页逻辑区域中的步骤的流程示意图;

图5为一个实施例中提供的终端的示意性框图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。

下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。

参照图1,图1为本申请一个实施例中非易失性存储器的数据写入方法的流程示意图。

对于一个非易失性存储器而言,所包含的用于存储记录数据的逻辑区域的字节数是固定的,只是对于不同的非易失性存储器来说会有不同。在本申请各实施例中,设定非易失性存储器为Flash,且以512字节为一页的Flash进行解释说明,此时整页逻辑区域为一页Flash,但是在实际应用时,以其他字节为一页的Flash也是可以适用的,比如256字节为一页的Flash,再比如1024字节为一页的Flash等。

具体地,该非易失性存储器的数据写入方法包括:

步骤S101、接收输入的待写入数据以及其逻辑地址。

在数据处理过程中,当接收到输入的数据写入指令时,将会接收所上传的进行数据写入的待写入数据,同时还会接收对待写入数据进行写入的逻辑地址。

具体地,在需要进行数据写入时用户通过相应的操作触发数据写入指令,此时可以在相应的界面上进行反馈,以使得用户通过相应的操作将需要进行写入的数据进行上传。

逻辑地址是当前进行数据写入的地址信息,比如逻辑地址为0x301fe到0x30403时,也就是将待写入数据写入在此逻辑地址中。在以512字节为一页的Flash中,一整页Flash的逻辑地址可以是0x00000至0x001ff、0x00200至0x003ff以及0x00400至0x005ff等,以此类推可以得到各整页Flash所包含的逻辑地址。

在进行数据写入时,通过输入逻辑地址确定当前需要将待写入数据写入的逻辑地址。在实际应用中,所输入的逻辑地址可以已经存储记录了相关的信息,也可以没有存储记录相关的信息,其中相关的信息为与逻辑地址对应关联的物理地址信息。

步骤S102、若所述待写入数据为空白且所述逻辑地址包含有整页逻辑区域,则获取管理表中所述逻辑地址所记录的物理地址,并将所述物理地址变更为空白。

管理表,是用于记录非易失性存储器中各Flash页(各整页逻辑区域)的使用状态的表,其中,Flash页的使用状态主要包括哪一个或者哪几个物理页已经写入了数据,还包括其他相关的信息。

在实际应用过程中,管理表中所记录的信息包括有逻辑页-物理页对应关系(PNM)、该页的CRC校验值、当前搜索页的页号(DCP)、剩余页数/可用空间(AUS)、总擦除次数(ETC)、管理表新旧状态的标记(NOF)以及物理页是否可用的真位图(RBM)。需要说明的是,CRC校验值是根据记录的所有数据计算得到的,是数据通信领域中最常用的一种查错校验码。用于确定所记录数据的准确性。

以512字节一页的Flash来举例说明,但是在实际应用时并不局限于为512字节一页的Flash,还可以是1024字节或者2048字节一页的Flash,同样还可以是256字节一页的Flash。参照图2,图2为本申请一个实施例中管理表的常规界面状态图,具体地,在管理表中具体所记录的信息如下:

CRC:占用2字节,存储管理页从第三个字节到页末尾之间所有数据计算的CRC16的值;

PNM:共有236个,每个占用2字节,代表用户可以写入236页数据,且每个2字节代表对应逻辑页号所映射到的物理页号。

DCP:占用2字节,代表当前搜索指针指向哪一物理页。

AUS:占用2字节,代表当前还有多少可用页,该值时刻等于RBM中bit为1的个数。

ETC:占用2字节,代表当前一共进行了多少次的页擦写操作(对某页的擦+写算一次)。

NOF:占用1字节,代表管理表的新旧状态,当由于掉电出现两张管理表时,用于标明哪张管理表是新的,哪张是旧的。

RBM:占用31字节,每个占用1字节,共248bit。其中236bit对应236个PNM,10bit用于极限状态下掉电备份,2bit用于存储管理表。极限状态指用户写满236页后,继续更新时此时可以写10页。RBM中的bit为1代表对应的Flash页当前处于空闲状态,为0代表对应的Flash页当前处于已用状态或坏页状态。已用状态分为两种,一种是被用户数据占用,一种是被管理表占用。RBM的第一个字节的最高位bit7代表实际物理页的第一页,以此类推。

需要说明的是,实际的管理表中,随着不断的被使用,可以使用的物理页与已经被使用的物理页可能是交叉的。另外,上述描述的物理页与物理区域等同,逻辑页与逻辑区域等同。

在接收到输入的待写入数据以及逻辑地址之后,将会确定当前需要进行的操作是进行普通的数据写入还是启动非易失性存储器的逻辑擦功能。具体地,在待写入数据为空白,且所接收到的逻辑地址包含有整页逻辑区域时,将会启动非易失性存储器的逻辑擦功能,以根据所接收到的逻辑地址在管理表中得到此逻辑地址所记录的物理地址,并将此物理地址变更为空白。

数据擦除是一种特殊的数据写入,一般在进行数据写入时,是将与逻辑地址关联的物理地址清除,比如逻辑地址1中记录着物理地址1的地址信息,在需要将存储在逻辑地址1所对应的非易失性存储器中的数据进行擦除时,可以将物理地址1中所存储的数据删除,还可以是将物理地址1与逻辑地址1的关联关系清除,也就是将记录在逻辑地址1中的物理地址1的地址信息清除。对应所提及的两种方式,都是可以使用数据写入来完成,也就是写入一个空的数据到物理地址1或者逻辑地址1中。

然而,启动非易失性存储器的逻辑擦功能是有一定的条件的,只有在所输入的待写入数据为空白,且输入的逻辑地址大到一定的程度时,才会启动逻辑擦功能,以便捷的进行数据的擦除。

在一些实施例中,在确定启动非易失性存储器的逻辑擦功能之前,还包括:读取所述待写入数据,以确定所述待写入数据是否为空白;根据所述逻辑地址得到对应的目标逻辑区域,以确定所述逻辑地址是否包含有整页逻辑区域。

进行上述的操作是用于准确的得到相应的启动条件,包括:待写入数据是否为空白,以及逻辑地址是否包含有整页逻辑区域。

实际上,逻辑擦是一种特殊的数据写入,但是实质上还是进行数据的擦除,也就是将原本已存在的数据进行清除。因此在接收到待写入数据以及逻辑地址之后,将会确定是进行普通的数据写入,还是需要使用逻辑擦功能进行数据的擦除。

在确定非易失性存储器的对待写入数据的处理方式时,首先对待写入数据进行读取,确定是否为空白,同时根据所输入的逻辑地址的得到对应的目标逻辑区域,以确定逻辑地址是否包含有整页Flash。

在待写入数据为空白时,说明当前可能需要进行启动逻辑擦进行对非易失性存储器中的相关Flash页进行处理,此时如果逻辑地址包含有整页Flash,则需要利用逻辑擦功能进行处理。

在待写入数据不为空白时,就确定待写入数据包含有准确的数据,此时无论逻辑地址是否包含有整页Flash,都将会进行数据的写入,将待写入数据按照逻辑地址完整的写入至非易失性存储器中。

在实际根据逻辑地址确定是否需要使用逻辑擦功能进行处理时,此时假定待写入数据为空白,若一页Flash是0x200,也就是以512字节为一页Flash,且此时所输入的逻辑地址为0x301fe到0x30403,在按照Flash页对逻辑地址进行划分时,此逻辑地址将会被分为三个部分,且分别为:0x301fe-0x301ff、0x30200-0x303ff以及0x30400-0x30403,显然中间的部分“0x30200-0x303ff”为一整页Flash,那么此时将会启动非易失性存储器的逻辑擦功能进行处理。

在一些实施例中,该方法还包括:若所述待写入数据不为空白或所述逻辑地址不包含有整页逻辑区域,则确定不启动所述非易失性存储器的逻辑擦功能。也就是在所输入的待写入数据和逻辑地址不满足逻辑擦的启动条件时,将会直接进行相应的数据写入,以将待写入数据写入至非易失性存储器中。

根据上述描述,每一个Flash页都会对应着一个管理表,因此在启动逻辑擦功能时,由于是对逻辑地址所包含的整页Flash进行处理,此时首先会获取逻辑地址所包含的整页Flash,然后读取所得到的整页Flash所对应的管理表,以及获取管理表中所记录的相关信息,其中所得到的整页Flash的数量不限,通过对管理表中所记录的相关信息进行更新,完成对所得到的整页Flash的数据擦除。

在对整页Flash进行数据写入0xFF时,也就是进行数据擦除,在得到管理表时,由于管理表所包含的逻辑区域所记录了相关的物理地址,为了实现数据的擦除,将会将逻辑区域所关联的物理地址进行更新处理,而为了做到数据的擦除,将会将逻辑区域所记录的物理地址变为空白状态,使用字节信息表示即为0xffff,使得在进行数据查询时所返回的信息为0xffff,也就是没有任何数据返回。

需要说明的是,由于数据存储的特性,在逻辑区域中记录着相应的物理地址时,使得在用户进行数据查询查找到此逻辑区域时,所反馈的数据将会是此物理地址所存储的数据。因此在进行数据清除时,将管理表中所有逻辑区域中所记录的物理地址均清空,也就是写成0xffff,同时对于管理表中的其他信息也会进行相应的同步更新。

步骤S103、若所述待写入数据为空白且所述逻辑地址包含有非整页逻辑区域,则按照预设数据写入规则将所述待写入数据写入至所述非整页逻辑区域中。

其中,非整页逻辑区域是指所输入的逻辑地址中只存在部分逻辑地址在某一页Flash中,此某一页Flash为非整页Flash。比如一页Flash是0x200,且此时所输入的逻辑地址为0x301fe到0x30403,由于此时逻辑地址将会被分为三个部分,且分别为:0x301fe-0x301ff、0x30200-0x303ff以及0x30400-0x30403,此时“0x301fe-0x301ff”和“0x30400-0x30403”所在的Flash页为所描述的非整页Flash。

对于整页Flash将会按照逻辑擦功能对应的处理方式进行相应的处理,而对于非整页Flash,将会将待写入数据写入到非整页Flash所包含的逻辑地址中。在获取非整页Flash时,根据逻辑地址确定非整页Flash中需要进行数据写入的逻辑地址,包括首部非整页Flash和尾部非整页Flash分别对应的逻辑地址,然后将待写入数据根据所得到的逻辑地址进行写入。

在对非整页Flash进行数据写入时,也会获取此页Flash对应的管理表,同时会根据数据写入信息对管理表进行相应的更新。

需要说明的是,步骤S102与步骤S103之间没有固定的先后顺序,同时也可以在同一时刻发生。

在上述描述的非易失性存储器的数据写入方法中,在接收到输入的待写入数据以及逻辑地址时,对所接收到的待写入数据以及逻辑地址进行信息读取,在待写入数据为空白,且逻辑地址包含有整页逻辑区域时,将获取管理表中逻辑地址所包含的整页逻辑区域,以读取整页逻辑区域对应的管理表所包含的逻辑区域中所记录的物理地址,并将此物理地址更新为空白,同时还将获取逻辑地址所包含的非整页逻辑区域,以将待写入数据写入至非整页逻辑区域中。实现了在非易失性存储器所写入的数据为空白时,直接对所包含的整页逻辑区域对应的管理表进行处理,避免对所有的数据进行重新的写入,提高了数据擦除的效率。

进一步地,参照图3,图3为本申请一个实施例中确定是否包含有整页逻辑区域的步骤的流程示意图。

具体地,根据所述逻辑地址得到对应的目标逻辑区域,并确定所述逻辑地址是否包含有整页逻辑区域,包括:

步骤S301、读取所述逻辑地址的逻辑首地址以及逻辑尾地址;

步骤S302、获取所述非易失性存储器所包含的各逻辑区域页的逻辑尾地址;

步骤S303、根据所述逻辑首地址、所述逻辑尾地址以及所述逻辑区域的逻辑尾地址确定所述目标逻辑区域是否包含有整页逻辑区域。

在确定是否启动非易失性存储器的逻辑擦功能时,除了需要确定待写入数据是否为空白,还需要确定所输入的逻辑地址是否包含有整页Flash。在确定逻辑地址是否包含有整页Flash时,首先读取所接收到的逻辑地址中所包含的逻辑首地址以及逻辑尾地址,然后根据非易失性存储器的特性得到所包含的各Flash页的逻辑尾地址,最后根据所得到的逻辑地址的逻辑首地址、逻辑尾地址以及各Flash页的逻辑尾地址确定逻辑地址对应的目标逻辑区域是否包含有整页Flash。

在输入逻辑地址时,所输入的逻辑地址可以是一个逻辑地址区间,比如为:0x301fe至0x30403,还可以是一个逻辑地址加上一个地址长度,两种方式均可以得到进行数据写入的逻辑地址的相关信息。

在判断是否存在整页Flash时,可根据数据的区间特性进行判断。对于一个非易失性存储器而言,不同的属性对应的Flash页的字节信息也是不同的,可以是以512字节为一页的Flash,也可以是以1024或者2048字节为一页的Flash,因此还需要获取非易失性存储器的相关特性,以确定非易失性存储器中一页Flash的字节数,进而可以确定个Flash页分别包含的逻辑地址。

以512字节为一页的Flash为例,一整页Flash的逻辑地址可以是0x00000至0x001ff、0x00200至0x003ff以及0x00400至0x005ff等,以此类推可以得到各整页Flash所包含的逻辑地址。因此,可以准确的得到非易失性存储器中各Flash页分别对应的逻辑尾地址,或者得到所包含的逻辑尾地址的变化规律。

在得到逻辑地址所对应的逻辑首地址和逻辑尾地址之后,将会进行相应的对比确定,以判断所接收到的逻辑地址对应的目标逻辑区域是否包含有整页Flash。

在一些实施例中,在确定是否包含有整页逻辑区域时,包括:确定所述各逻辑区域页的逻辑尾地址中是否存在处于所述逻辑首地址和所述逻辑尾地址之间的逻辑尾地址;若确定所述各逻辑区域页的逻辑尾地址中存在两个处于所述逻辑首地址和所述逻辑尾地址之间的逻辑尾地址,则确定所述目标逻辑区域包含有整页逻辑区域;若确定所述各逻辑区域页的逻辑尾地址中不存在两个处于所述逻辑首地址和所述逻辑尾地址之间的逻辑尾地址,则确定所述目标逻辑区域不包含有整页逻辑区域。

对于一段数据来说,若每10个数为一段,即各段可以为:1-10、11-20、21-30、31-40以此类推,在根据一段数据确定是否包含有某一个完整段时,可以利用此段数据的收尾数值和各段的分段数值进行相应的判断。比如某一段数据为5-33,直观判断5-33可以分为的分段为:5-10、11-20、21-30以及31-33,此时对应的包含有两个数据整段。按照数据特征进行判断时,5-33数据段对应的收尾数值为5和33,收尾数值所包含的分段尾值有10、20以及30,可知包含有两个数据分段。

根据实际判断可知,存在3个分段尾值时存在有两个数据分段,因此在确定某一数据分段包含有整段数据分段时,至少包含有两个分段尾值。因此在根据逻辑地址确定是否包含有整页Flash时,确定所得到的各Flash页的逻辑尾地址中是否存在两个逻辑地址处于逻辑尾地址和逻辑首地址之间,也就是确定逻辑地址对应的目标逻辑区域之间是否包含有两个以以上的逻辑尾地址。

具体地,在确定各Flash页的逻辑尾地址中存在两个处于逻辑首地址和逻辑尾地址之间的逻辑尾地址时,确定所述目标逻辑区域包含有整页Flash;在确定各Flash页的逻辑尾地址中不存在两个处于逻辑首地址和逻辑尾地址之间的逻辑尾地址时,确定所述目标逻辑区域不包含有整页Flash。

进一步地,参照图4,图4为本申请一个实施例中写入数据至非整页逻辑区域中的步骤的流程示意图。

具体地,按照预设数据写入规则将所述待写入数据写入至所述非整页逻辑区域中,包括:

步骤S401、获取所述非易失性存储器的当前可使用物理区域,得到进行数据写入的目标物理地址;

步骤S402、建立所述目标物理地址与所述非整页逻辑区域所包含的逻辑地址的映射关系,并将所述映射关系存储至管理表;

步骤S403、根据所述非整页逻辑区域所包含的逻辑区域将所述待写入数据存储在对应的缓存区域中,以将所述待写入数据写入至所述目标物理区域。

在对待写入数据进行写入时,除了整页Flash完成数据的写入之外,还将对非整页Flash进行数据写入。具体地,获取非易失性存储器的当前可使用物理区域,进而得到进行数据写入的目标物理地址,然后建立目标物理地址与非整页Flash所包含的逻辑地址的映射关系,并将所得到的映射关系存储在管理表中,最后根据非整页Flash所包含的逻辑区域,将待写入数据存储在相应的缓存区域,以使得将待写入数据写入至目标物理区域。

当前可使用物理区域是非易失性存储器中所有可以进行数据存储的物理区域,在当前可使用物理区域中获取当前进行数据写入的目标物理地址,用于进行数据的写入。在从当前可使用物理区域中得到进行数据写入的目标物理地址时,目标物理地址的获取方式不限制,可以是随机的在当前可使用物理区域中得到相应的进行数据写入的目标物理地址,也可以按照相应的规则进行获取。

根据管理表的特性,在按照相应的规则进行获取时,可以利用代表当前指针指向哪一物理页的DCP,即当前搜索页的页号,根据DCP所记录的信息在当前可使用物理区域中进行物理地址的查找,以得到相应数量的物理地址对应的物理页进行数据的写入。

非整页Flash中有一定的逻辑区域需要将数据进行写入,也就是写入空白状态,因此在得到对应的进行数据写入的物理地址时,将会需要使用等同改数量的物理页进行数据的写。

在使用过程中,非整页Flash包括有首部非整页Flash和尾部非整页Flash,每一个部分中都有相应数量的逻辑页需要进行数据的写入,在进行数据写入时,将进行数据写入的物理地址与对应的逻辑区域进行关联,比如,初始时候,逻辑页1中所记录的物理地址为a,而在进行此时的数据写入之后,逻辑页1中所记录的物理地址将会变成b,且b对应的物理页中所记录的数据为当前所写入的待写入数据,由于待写入数据为空白,因此此时b对应的物理页中没有记录有任何数据,也可以说所记录的数据为空白。在进行数据查询时,若查询到b对应的物理页时,所返回的数据将会是空白。

在一些实施例中,在进行数据的写入时,是重新建立逻辑区域与物理地址之间的关联关系,在进行数据的写入时,首先将数据写入在相应的缓存区域,然后将存储在缓存区域中的数据进行提交,以完成将待写入数据的写入。具体地,在此步骤之后还包括:当接收到数据提交指令时,将存储在所述缓存区域中的待写入数据写入至所述非易失性存储器中,并更新所述管理表。

在完成整个数据的写入,需要将进行相应的数据提交,由于缓存区域不存在于非易失性存储器中,只是一个数据的缓存区域,因此只有将存储在缓存区域中的所有数据都写入至非易失性存储器中之后,在完成整个数据处理过程。

在进行数据提交时,主要是将非整页Flash所写入的数据以及进行更新的管理表进行更新。非整页Flash所写入的数据是新的数据,而管理表进行更新时是将所记录的数据进行变更,其中最明显的便是部分逻辑区域所记录的物理地址的信息会发生改变,变为完成数据写入之后的地址信息,在完成非整页Flash以及管理表的提交之后,在再次进行数据的查找时,将会使用更新之后的管理表进行数据的读取和反馈,由于此时是将数据进行清除,因此在进行数据读取时,虽然相应的逻辑区域中写入的相关联的物理地址,但是由于物理地址对应的物理区域中所写入的数据为空白数据,使得所返回的信息为空白,即完成了数据的清除。

需要说明的是,对应中间使用逻辑擦功能进行数据擦数的整页Flash而言,是对整页Flash对相应的管理表进行相应的处理,不存在实际的数据写入,使得整个处理效率更高。

进一步地,在一些实施例中,在确定此时所写入的数据不为空白时,也会按照预设的数据写入规则完成对待写入数据的写入,具体包括:若所述待写入数据不为空白,则获取所述非易失性存储器的当前可使用物理区域,以得到进行数据写入的目标物理地址;建立所述目标物理地址与所述逻辑地址的映射关系,并将所述映射关系存储至管理表;根据所述逻辑区域将所述待写入数据存储在对应的缓存区域中,以将所述待写入数据写入至所述目标物理区域。

进一步地,在一些实施例中,若所述待写入数据为空白且所述逻辑地址不包含有整页逻辑区域,也将按照预设的数据写入规则将待写入数据写入至非易失性存储器中。

对于上述两种情况:第一种为待写入数据不为空白数据;第二种为待写入数据为空白数据,但是根据逻辑地址确定不包含有整页逻辑区域。对于此两种情况,在对待写入数据进行写入时,将会按照正常的数据写入的方式来处理。

对于第一种情况,是一种简单的数据写入,不会考虑待写入数据的大小以及进行数据写入的逻辑地址的大小,而是根据实际情况进行数据的写入,此时可能需要考虑的问题将会是非易失性存储器是否有足够的存储空间完成待写入数据的写入。在实际的处理手段上,与对非整页Flash的处理方式相同,其中最主要的需要点在于,对非整页Flash进行数据写入时,所待写入数据为空白,而在此种情况下,待写入数据中包含有相应的数据。

对于第二种情况,实际的处理过程与上述描述的步骤S401至步骤S403所描述的实现方式相同,具体可参照上述描述,在此不重复说明。

此时在进行数据写入时,将不是考虑部分逻辑区域,而是对所有的逻辑区域进行数据写入,在完成数据写入时将重新建立逻辑区域与相应的物理地址之间的关联关系,以实现对相关数据的更新等。

参阅图5,图5为本申请一个实施例中提供的终端的示意性框图。本实施例的终端10能够实现上述的非易失性存储器的数据写入方法中的步骤,相关内容的详细说明请参见上述方法部分,在此不再赘叙。

在一个实施例中,所述终端10包括智能卡、USBKEY或手环,当然也可以包括其他设备。

如图5所示,该终端10包括存储器11和处理器12,处理器11和存储器12通过系统总线13连接,其中,存储器11可以包括非易失性存储介质和内存储器。

非易失性存储介质可存储计算机程序。该计算机程序包括程序指令,该程序指令被执行时,可使得处理器11执行任意一种非易失性存储器的数据写入方法。

处理器11用于提供计算和控制能力,支撑整个计算机设备的运行。

内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行任意一种非易失性存储器的数据写入方法。

本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的终端的限定,具体的终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

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

其中,存储器12可以是Flash芯片、只读存储器、磁盘、光盘、U盘或者移动硬盘等等。

其中,存储器中存储有计算机程序,计算机程序被处理器11执行时,使得处理器执行所述计算机程序时实现以下步骤:

接收输入的待写入数据以及其逻辑地址;若所述待写入数据为空白且所述逻辑地址包含有整页逻辑区域,则获取管理表中所述逻辑地址所记录的物理地址,并将所述物理地址变更为空白;若所述待写入数据为空白且所述逻辑地址包含有非整页逻辑区域,则按照预设数据写入规则将所述待写入数据写入至所述非整页逻辑区域中。

在一个实施例中,所述处理器执行所述计算机程序时还实现以下步骤:

读取所述待写入数据,以确定所述待写入数据是否为空白;根据所述逻辑地址得到对应的目标逻辑区域,并确定所述逻辑地址是否包含有整页逻辑区域。

在一个实施例中,所述处理器执行所述计算机程序时还实现以下步骤:

若所述待写入数据不为空白或所述逻辑地址不包含有整页逻辑区域,则确定不启动所述非易失性存储器的逻辑擦功能。

在一个实施例中,所述处理器执行所述计算机程序时还实现以下步骤:

读取所述逻辑地址的逻辑首地址以及逻辑尾地址;获取所述非易失性存储器所包含的各逻辑区域页的逻辑尾地址;根据所述逻辑首地址、所述逻辑尾地址以及所述逻辑区域的逻辑尾地址确定所述目标逻辑区域是否包含有整页逻辑区域。

在一个实施例中,所述处理器执行所述计算机程序时还实现以下步骤:

确定所述各逻辑区域页的逻辑尾地址中是否存在处于所述逻辑首地址和所述逻辑尾地址之间的逻辑尾地址;若确定所述各逻辑区域页的逻辑尾地址中存在两个处于所述逻辑首地址和所述逻辑尾地址之间的逻辑尾地址,则确定所述目标逻辑区域包含有整页逻辑区域;若确定所述各逻辑区域页的逻辑尾地址中不存在两个处于所述逻辑首地址和所述逻辑尾地址之间的逻辑尾地址,则确定所述目标逻辑区域不包含有整页逻辑区域。

在一个实施例中,所述处理器执行所述计算机程序时还实现以下步骤:

获取所述非易失性存储器的当前可使用物理区域,得到进行数据写入的目标物理地址;建立所述目标物理地址与所述非整页逻辑区域所包含的逻辑地址的映射关系并将所述映射关系存储至管理表;根据所述非整页逻辑区域所包含的逻辑区域将所述待写入数据存储在对应的缓存区域中,以将所述待写入数据写入至所述目标物理区域。

在一个实施例中,所述处理器执行所述计算机程序时还实现以下步骤:

若所述待写入数据不为空白,则获取所述非易失性存储器的当前可使用物理区域,以得到进行数据写入的目标物理地址;建立所述目标物理地址与所述逻辑地址的映射关系,并将所述映射关系存储至管理表;根据所述逻辑区域将所述待写入数据存储在对应的缓存区域中,以将所述待写入数据写入至所述目标物理区域。

在一个实施例中,所述处理器执行所述计算机程序时还实现以下步骤:

当接收到数据提交指令时,将存储在所述对应的缓存区域中的待写入数据写入至所述非易失性存储器中,并更新所述管理表。

本申请的实施例中还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序中包括程序指令,所述处理器执行所述程序指令,实现本申请实施例提供的任一项非易失性存储器的数据写入方法。

其中,所述计算机可读存储介质可以是前述实施例所述的计算机设备的内部存储单元,例如所述计算机设备的硬盘或内存。所述计算机可读存储介质也可以是所述计算机设备的外部存储设备,例如所述计算机设备上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。

上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,这些均属于本申请的保护之内。

相关技术
  • 非易失性存储器的数据写入方法、终端和可读存储介质
  • 终端及闪存数据写入方法和计算机可读存储介质
技术分类

06120112942511