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

固件存储方法、固件查找方法、设备及介质

文献发布时间:2024-01-17 01:17:49


固件存储方法、固件查找方法、设备及介质

技术领域

本申请实施例涉及但不限于存储器领域,尤其涉及固件存储方法、固件查找方法、设备及介质。

背景技术

目前的闪存芯片设有多个闪存块,闪存块具有多个数据页。固件以二进制文件的形式存储在闪存块的连续的数据页中,并且存储在多个闪存块的相同页码的数据页中。但是限于闪存的特性,如果闪存块不稳定,那么多个闪存块的相同页码的数据页所存储的数据都会丢失,则虽然固件存储在多个闪存块中,但多个闪存块的相同页码的数据页所存储的固件也会丢失,导致该固件丢失且无法找回的情况。

发明内容

以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。

本申请的目的在于至少一定程度上解决相关技术中存在的技术问题之一,本申请实施例提供了固件存储方法、固件查找方法、设备及介质,通过将待存储的目标固件存储在多个闪存块的不同页码的数据页中,能减少固件丢失的风险。

本申请的第一方面的实施例,一种固件存储方法,应用于闪存芯片,所述闪存芯片设有多个闪存块,每个所述闪存块具有多个数据页;所述固件存储方法,包括:

从每个所述闪存块的多个数据页中确定目标数据页,并使每个所述闪存块的目标数据页的页码均不相同;

将待存储的目标固件从每个所述闪存块的所述目标数据页的初始位置开始存储,以将所述目标固件存储在每个所述闪存块中。

本申请的第一方面的某些实施例,所述从每个所述闪存块的多个数据页中确定目标数据页,并使每个所述闪存块的目标数据页的页码均不相同,包括:

根据目标固件的标识码和预设的固件引导表获取合法的数据页的全局数据页号;

根据所述全局数据页号从每个所述闪存块的多个数据页中确定目标数据页,并使每个所述闪存块的目标数据页的页码均不相同。

本申请的第一方面的某些实施例,所述全局数据页号为范围系数与自定义常数的乘积,同一所述闪存块的每个所述数据页对应的范围系数均不相同,每个所述闪存块对应的范围系数区间均不相同,每个所述闪存块对应的自定义常数均不相同。

本申请的第一方面的某些实施例,所述自定义常数表示为:A*bk+ck;其中,A为固定常数值;bk为第k个闪存块对应的b值,bk为预设阈值内的素数;ck为第k个闪存块对应的c值,ck为预设阈值内的素数。

本申请的第一方面的某些实施例,所述将待存储的目标固件从所述闪存块的目标数据页的初始位置开始存储,以将所述目标固件存储在每个所述闪存块中,包括:

将待存储的目标固件从所述闪存块的目标数据页的初始位置开始存储,并依次存储在所述闪存块的连续页面中,以将所述目标固件存储在每个所述闪存块中。

本申请的第二方面的实施例,一种固件查找方法,应用于闪存芯片,所述闪存芯片设有多个闪存块,每个所述闪存块具有多个数据页;所述固件按照如上所述的固件存储方法存储在所述闪存芯片中;所述固件查找方法包括:

根据待查找的目标固件的标识码和预设的固件引导表得到全局数据页号;

根据所述全局数据页号从所述闪存块的多个数据页确定目标数据页;

从所述目标数据页的初始位置开始读取,以查找得到目标固件。

本申请的第二方面的某些实施例,所述全局数据页号为范围系数与自定义常数的乘积,同一所述闪存块的每个所述数据页对应的范围系数均不相同,每个所述闪存块对应的范围系数区间均不相同,每个所述闪存块对应的自定义常数均不相同。

本申请的第二方面的某些实施例,所述自定义常数表示为:A*bk+ck;其中,A为固定常数值;bk为第k个闪存块对应的b值,bk为预设阈值内的素数;ck为第k个闪存块对应的c值,ck为预设阈值内的素数。

本申请的第三方面的实施例,一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的固件存储方法或者固件查找方法。

本申请的第四方面的实施例,一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行如上所述的固件存储方法或者固件查找方法。

上述方案至少具有以下的有益效果:通过将待存储的目标固件存储在多个闪存块的不同页码的数据页中,则如果闪存块不稳定导致多个闪存块的相同页码的数据页所存储的数据丢失,也不会导致所有闪存块中所存储的固件的数据都丢失,能够保证部分闪存块的数据页依然保存有固件的数据,从而解决了将同一个固件从各个闪存块的相同页码的数据页开始存储,而导致的固件丢失且无法找回的情况。

附图说明

附图用来提供对本申请技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。

图1是利用现有的固件存储方法存储固件的示意图;

图2是本申请的实施例所提供的固件存储方法的步骤图;

图3是本申请的实施例所提供的固件查找方法的步骤图;

图4是利用本申请的实施例所提供的固件存储方法存储固件的示意图。

具体实施方式

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

需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书、权利要求书或上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

下面结合附图,对本申请实施例作进一步阐述。

本申请的实施例,提供了一种固件存储方法,应用于闪存芯片,闪存芯片设有多个闪存块,每个闪存块具有多个数据页。闪存块为bolck,数据页为page。

闪存芯片为嵌入式多媒体存储卡(Embedded Multi Media Card,eMMC)或者通用闪存存储器(Universal Flash Storage,UFS)。

其中,嵌入式多媒体存储卡包括控制接口(Control Interface)、存储芯片(FlashMemory Chip)、Boot区(Boot Partition)及嵌入式多媒体主控制器(eMMC Controller)。嵌入式多媒体主控制器控制着整个嵌入式多媒体存储卡的读写操作,包括命令解码、数据传输和错误检测等功能。存储芯片负责实际的数据存储和读取,可以使用单层或多层闪存。控制接口连接主板和eMMC芯片,用于数据传输和电源管理等操作。Boot区用于存储设备引导程序,确保设备正常启动。嵌入式多媒体存储卡具有低功耗、小尺寸、高可靠性、易于集成等特点,可以提供快速、稳定的数据传输和存储功能。嵌入式多媒体存储卡可支持高速数据读写操作,例如视频、音频和图像等多媒体数据的播放和录制。

通用闪存存储器主要包括存储芯片、控制器芯片和高速串行接口。存储芯片用于存储数据和代码;控制器芯片用于处理来自主机设备的指令,并操作闪存存储器;高速串行接口用于连接主机设备和控制器芯片,以实现快速数据传输。它发展了统一的快闪存储卡格式,在提供高数据传输速度和稳定性的同时,也可以减少消费者对于市面上各种存储卡格式的混淆和不同存储卡转接器的使用。UFS相较eMMC最大的不同是并行信号改为了更加先进的串行信号,从而可以迅速提高频率;同时半双工改为全双工;UFS基于小型电脑系统接口结构模型(SCSI architectural model)以及支持SCSI标记指令序列(SCSI TaggedCommand Queuing)。

目前的闪存芯片设有多个闪存块,闪存块具有多个数据页。固件以二进制文件的形式存储在闪存块的连续的数据页中。具体地,闪存的固件通常是以数据页为单位存储在闪存块中。每个数据页通常由多个字节或扇区组成,这些字节或扇区按照特定的格式排列。固件通常被拆分成多个数据页,并依次存储在闪存块的连续数据页中。在写入固件时,闪存控制器将固件数据逐页写入闪存块中。如果需要更新固件,则可以使用类似的方式将新的固件数据写入相应的数据页。

参照图1,固件可以存储在多个闪存块中,但对于同一个固件,各个闪存块均从相同页码的数据页开始存储。例如,一个闪存芯片包括闪存块block0、闪存块block1、闪存块block2;对于一个固件A,闪存块block0将固件A从闪存块block0的数据页page0开始存储,同样地,闪存块block1将固件A从闪存块block1的数据页page0开始存储,闪存块block2将固件A从闪存块block2的数据页page0开始存储。

但是限于闪存的特性,如果闪存块不稳定,那么多个闪存块的相同页码的数据页所存储的数据都会丢失,则虽然固件存储在多个闪存块中,但多个闪存块的相同页码的数据页所存储的固件也会丢失,导致该固件丢失且无法找回的情况。

例如,限于闪存的特性,闪存块的数据不稳定,闪存块block0的数据页page0、闪存块block1的数据页page0、闪存块block2的数据页page0的数据均丢失,则该闪存芯片中存储的固件A丢失且无法找回。

本申请的实施例,通过以下的固件存储方法,解决了以上的将同一个固件从各个闪存块的相同页码的数据页开始存储,而导致的固件丢失且无法找回的情况。

参照图2,固件存储方法,包括但不限于以下步骤:

步骤S100,从每个闪存块的多个数据页中确定目标数据页,并使每个闪存块的目标数据页的页码均不相同;

步骤S200,将待存储的目标固件从每个闪存块的目标数据页的初始位置开始存储,以将目标固件存储在每个闪存块中。

在该实施例中,通过将待存储的目标固件存储在多个闪存块的不同页码的数据页中,则如果闪存块不稳定导致多个闪存块的相同页码的数据页所存储的数据丢失,也不会导致所有闪存块中所存储的固件的数据都丢失,能够保证部分闪存块的数据页依然保存有固件的数据,从而解决了将同一个固件从各个闪存块的相同页码的数据页开始存储,而导致的固件丢失且无法找回的情况。

对于步骤S100,从每个闪存块的多个数据页中确定目标数据页,并使每个闪存块的目标数据页的页码均不相同,包括但不限于以下步骤:

步骤S110,根据目标固件的标识码和预设的固件引导表获取合法的数据页的全局数据页号;

步骤S120,根据全局数据页号从每个闪存块的多个数据页中确定目标数据页,并使每个闪存块的目标数据页的页码均不相同。

可以理解的是,全局数据页号为行地址,即Ppage。每个数据页都有一个唯一的全局数据页号,全局数据页号用于标识数据页,指定数据页的位置,与物理地址映射。全局数据页号通常由芯片的控制器生成。

固件引导表如下:

全局数据页号为范围系数与自定义常数的乘积,同一闪存块的每个数据页对应的范围系数均不相同,每个闪存块对应的范围系数区间均不相同,每个闪存块对应的自定义常数均不相同。

自定义常数表示为:A*bk+ck;其中,A为固定常数值,例如2;bk为第k个闪存块对应的b值,bk为预设阈值内的素数;ck为第k个闪存块对应的c值,ck为预设阈值内的素数。

具体地,预设阈值为100,则bk为100内的素数,ck为100内的素数;当然,本申请的实施例虽然给出了预设阈值为100,但这并不能对本申请实施例中确定预设阈值的数值进行限制。在其他实施例中,预设阈值的数值也可以其他数值,例如500等。

由固件引导表可得:

对应第一个固件的多个Ppage分别为:Ppage0=0*(A*b0+c0);Ppage1=1*(A*b0+c0);Ppage2=2*(A*b0+c0);...;Ppagen=a0*(A*b0+c0)。

对应第二个固件的多个Ppage分别为:Ppage0=1*(A*b1+c1);Ppage1=2*(A*b1+c1);Ppage2=3*(A*b1+c1);...;Ppagen=a1*(A*b1+c1)。

如此类推,可以得到第三个固件、第四个固件直至第k个固件对应的Ppage。

根据Ppage可以确定固件存储的位置,即固件所对应的block和page。

通过以上的配置方式,能够使得同一个固件存储在不同闪存块的不同数据页中。

可以理解的是,本申请的实施例虽然给出了以上的确定目标数据页的方式,但这并不能对本申请实施例中确定目标数据页的方式进行限制。在其他实施例中,也可以其他方式确定目标数据页,以使每个闪存块的目标数据页的页码均不相同,例如键值索引表等。

对于步骤S200,将待存储的目标固件从每个闪存块的目标数据页的初始位置开始存储,以将目标固件存储在每个闪存块中。

具体地,闪存芯片的固件通常是以数据页为单位存储在闪存块中。每个数据页通常由多个字节或扇区组成,这些字节或扇区按照特定的格式排列。固件通常被拆分成多个数据页,并依次存储在闪存块的连续数据页中。在写入固件时,固件烧录程序会根据固件引导表从上到下寻找合法的block、page进行烧录,将固件数据逐页写入闪存块中。则闪存芯片将待存储的目标固件从闪存块的目标数据页的初始位置开始存储,并依次存储在闪存块的连续页面中,以将目标固件存储在每个闪存块中。

参照图4,例如,对于第一个闪存块block0,将数据页page1确定为第一个闪存块block0的目标页码,则将待存储的固件A从闪存块block0的数据页page1的初始位置开始存储,并依次存储在闪存块的连续页面中。若固件A需要两个数据页才能写完,则第一个闪存块block0的数据页page1和数据页page2存储有固件A。

对于第二个闪存块block1,将数据页page5确定为第二个闪存块block1的目标页码,则将待存储的固件A从第二个闪存块block1的数据页page5的初始位置开始存储,并依次存储在闪存块的连续页面中。若固件A需要两个数据页才能写完,则第二个闪存块block1的数据页page5和数据页page6存储有固件A。

对于第三个闪存块block2,将数据页page4确定为第三个闪存块block2的目标页码,则将待存储的固件A从第二个闪存块block1的数据页page4的初始位置开始存储,并依次存储在闪存块的连续页面中。若固件A需要两个数据页才能写完,则第三个闪存块block2的数据页page4和数据页page5存储有固件A。

当闪存芯片的闪存块block0的数据页page1、闪存块block1的数据页page1和闪存块block2的数据页page1的数据发生丢失,则可以读取第二个闪存块block1的数据页page5和数据页page6,或者读取第三个闪存块block2的数据页page4和数据页page5,以提取得到固件A。进而保证部分闪存块的数据页依然保存有固件的数据,从而解决了将同一个固件从各个闪存块的相同页码的数据页开始存储,而导致的固件丢失且无法找回的情况。

对应地,本申请的实施例,提供了一种固件查找方法。固件查找方法应用于闪存芯片,闪存芯片设有多个闪存块,每个闪存块具有多个数据页;固件按照如上的固件存储方法存储在闪存芯片中。

在固件引导的时候,通过闪存芯片的BROM负责读操作,从闪存块、数据页中读取固件。

参照图3,固件查找方法,包括但不限于以下步骤:

步骤S300,根据待查找的目标固件的标识码和预设的固件引导表得到全局数据页号;

步骤S400,根据全局数据页号从闪存块的多个数据页确定目标数据页;

步骤S500,从目标数据页的初始位置开始读取,以查找得到目标固件。

对于步骤S300,固件引导表如下:

全局数据页号为范围系数与自定义常数的乘积,同一闪存块的每个数据页对应的范围系数均不相同,每个闪存块对应的范围系数区间均不相同,每个闪存块对应的自定义常数均不相同。

自定义常数表示为:A*bk+ck;其中,A为固定常数值,例如2;bk为第k个闪存块对应的b值,bk为预设阈值内的素数;ck为第k个闪存块对应的c值,ck为预设阈值内的素数。

具体地,预设阈值为100,则bk为100内的素数,ck为100内的素数;当然,本申请的实施例虽然给出了预设阈值为100,但这并不能对本申请实施例中确定预设阈值的数值进行限制。在其他实施例中,预设阈值的数值也可以其他数值,例如500等。

由固件引导表可得:

对应第一个固件的多个Ppage分别为:Ppage0=0*(A*b0+c0);Ppage1=1*(A*b0+c0);Ppage2=2*(A*b0+c0);...;Ppagen=a0*(A*b0+c0)。

对应第二个固件的多个Ppage分别为:Ppage0=1*(A*b1+c1);Ppage1=2*(A*b1+c1);Ppage2=3*(A*b1+c1);...;Ppagen=a1*(A*b1+c1)。

如此类推,可以得到第三个固件、第四个固件直至第k个固件对应的Ppage。

根据Ppage可以确定固件存储的位置,即固件所对应的block和page。

根据待查找的目标固件的标识码和固件引导表得到全局数据页号;例如,根据固件引导表可以知道固件A的多个全局数据页号。

对于步骤S400,由于每个数据页都有一个唯一的全局数据页号,根据全局数据页号从闪存块的多个数据页确定目标数据页;例如,根据固件A的多个全局数据页号可以知道存储有固件A的目标数据页为对应标识码A的闪存块block0的数据页page1、闪存块block1的数据页page5、闪存块block2的数据页page4。

对于步骤S500,从目标闪存块的目标数据页的初始位置开始读取,以查找得到目标固件。

例如,从闪存块block0的数据页page1的初始位置开始读取,并逐页读取数据,直至读取到固件的结束标识则停止。如果在数据页page2读取到固件A的结束标识,即是读取闪存块block0的数据页page1和数据页page2,得到固件A。

或者,从闪存块block1的数据页page5的初始位置开始读取,并逐页读取数据,直至读取到固件的结束标识则停止。如果在数据页page6读取到固件A的结束标识,即是读取闪存块block1的数据页page5和数据页page6,得到固件A。

或者,从闪存块block2的数据页page4的初始位置开始读取,并逐页读取数据,直至读取到固件的结束标识则停止。如果在数据页page5读取到固件A的结束标识,即是读取闪存块block2的数据页page4和数据页page5,得到固件A。

本申请的实施例,提供了一种电子设备。电子设备包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的固件存储方法或者如上所述的固件查找方法。

该电子设备可以为包括电脑等任意智能终端。

总体而言,对于电子设备的硬件结构,处理器可以采用通用的CPU(CentralProcessingUnit,中央处理器)、微处理器、应用专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请实施例所提供的技术方案。

存储器可以采用只读存储器(ReadOnlyMemory,ROM)、静态存储设备、动态存储设备或者随机存取存储器(RandomAccessMemory,RAM)等形式实现。存储器可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器中,并由处理器来调用执行本申请实施例的方法。

输入/输出接口用于实现信息输入及输出。

通信接口用于实现本设备与其他设备的通信交互,可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。

总线在设备的各个组件(例如处理器、存储器、输入/输出接口和通信接口)之间传输信息。处理器、存储器、输入/输出接口和通信接口通过总线实现彼此之间在设备内部的通信连接。

本申请的实施例,提供了一种计算机可读存储介质。计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于执行如上所述的固件存储方法或者如上所述的固件查找方法。

应当认识到,本申请实施例中的方法步骤可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。方法可以使用标准编程技术。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。

此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。计算机程序包括可由一个或多个处理器执行的多个指令。

进一步,方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、智能手机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文步骤的指令或程序时,本文的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明的方法和技术编程时,本发明还包括计算机本身。

计算机程序能够应用于输入数据以执行本文的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。

尽管已经示出和描述了本申请的实施方式,本领域的普通技术人员可以理解:在不脱离本申请的原理和宗旨的情况下可以对这些实施方式进行多种变化、修改、替换和变型,本申请的范围由权利要求及其等同物限定。

以上是对本申请的较佳实施进行了具体说明,但本申请并不限于实施例,熟悉本领域的技术人员在不违背本申请精神的前提下可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

技术分类

06120116113081