CN110109714B - 提升固件加载效率的方法、装置、计算机设备及存储介质 - Google Patents
提升固件加载效率的方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN110109714B CN110109714B CN201910339257.2A CN201910339257A CN110109714B CN 110109714 B CN110109714 B CN 110109714B CN 201910339257 A CN201910339257 A CN 201910339257A CN 110109714 B CN110109714 B CN 110109714B
- Authority
- CN
- China
- Prior art keywords
- loading
- reading
- detection reliability
- firmware
- processing
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及提升固件加载效率的方法、装置、计算机设备及存储介质,该方法包括从NandFlash中读取用于加载多核固件的工程,以得到读取结果;判断读取结果是否为读取成功;若否,则从NandFlash中重读用于加载多核固件的工程,以得到重读结果;获取检测可靠性标志位以及从NandFlash中重读用于加载多核固件的工程的过程中所出现的错误检查和纠正信息;对错误检查和纠正信息以及检测可靠性标志位进行处理,以得到处理结果;若是,则运行用于加载多核固件的工程;获取检测可靠性标志位;判断检测可靠性标志位是否为设定值;若是,则根据处理结果对相关的块以及检测可靠性标志位进行处理。本发明提升固件加载效率。
Description
技术领域
本发明涉及固态硬盘,更具体地说是指提升固件加载效率的方法、装置、计算机设备及存储介质。
背景技术
对于固态硬盘控制器而言,目前固化在控制器内部且用于控制器正常启动的代码加载运行的流程如图1所示,固态硬盘控制器芯片上电之后,嵌入在芯片内部且用于控制器正常启动的代码运行,该代码根据外部GPIO(通用型之输入输出,General-purpose input/output)配置,选择运行从NorFlash中加载用于加载多核固件的工程模式或者从NandFlash中加载用于加载多核固件的工程模式,考虑到加载速度的关系,通常上述的代码默认会选择从NandFlash中加载用于加载多核固件的工程的方式。从NandFlash中加载用于加载多核固件的工程的模式下,控制器从NandFlash中读取用于加载多核固件的工程,如果用于加载多核固件的工程读取失败,便会出发重读,重新从NandFlash中读取用于加载多核固件的工程。如果读取失败,上述的代码便会自动切换到下载模式,控制器无法正常加载运行用于加载多核固件的工程和固件。如果用于加载多核固件的工程读取成功,便运行用于加载多核固件的工程,用于加载多核固件的工程运行后再加载全系统固件运行。
由于NandFlash不稳定的特性,上述从NandFlash中读取用于加载多核固件的工程的加载流程有以下弊端:
一旦从NandFlash中读取用于加载多核固件的工程的模式触发了重读流程,说明该字节的数据已处于不可靠的状态,再次上电时,极有可能再次触发重读流程,加载时间变长;没有一种可靠的机制,确保从NandFlash中读取用于加载多核固件的工程的过程可以一次性成功,可能存在从NandFlash中读取用于加载多核固件的工程的失败情况。固态硬盘低功耗状态唤醒时,对固件加载运行的时间有严格的要求,一旦多次触发重读,必然会影响整体加载的时间。
因此,有必要设计一种新的方法,实现保证NandFlash中数据的稳定性,减少从NandFlash中读取用于加载多核固件的工程的加载时间,以提升固件加载效率。
发明内容
本发明的目的在于克服现有技术的缺陷,提供提升固件加载效率的方法、装置、计算机设备及存储介质。
为实现上述目的,本发明采用以下技术方案:提升固件加载效率的方法,包括:
从NandFlash中读取用于加载多核固件的工程,以得到读取结果;
判断所述读取结果是否为读取成功;
若否,则从NandFlash中重读用于加载多核固件的工程,以得到重读结果;
获取检测可靠性标志位以及从NandFlash中重读用于加载多核固件的工程的过程中所出现的错误检查和纠正信息;
对所述错误检查和纠正信息以及检测可靠性标志位进行处理,以得到处理结果;
若是,则运行用于加载多核固件的工程;
获取检测可靠性标志位;
判断检测可靠性标志位是否为设定值;
若是,则根据处理结果对相关的块以及检测可靠性标志位进行处理。
其进一步技术方案为:所述错误检查和纠正信息包括UECC和/或CECC所在的位置信息。
其进一步技术方案为:所述对所述错误检查和纠正信息以及检测可靠性标志位进行处理,以得到处理结果,包括:
将所述错误检查和纠正信息保存在控制器内部的静态随机存取存储器的固定区域内;
将检测可靠性标志位设置为准确;
将设置后的检测可靠性标志位存储于控制器内部的静态随机存取存储器的固定区域内,以得到处理结果。
其进一步技术方案为:所述根据处理结果对相关的块以及检测可靠性标志位进行处理,包括:
根据处理结果擦除所述错误检查和纠正信息对应的块;
从NorFlash中读取所擦除的块对应位置的数据信息,并写入NandFlash所擦除的块内;
将检测可靠性标志为设置为错误。
其进一步技术方案为:所述根据处理结果对相关的块以及检测可靠性标志位进行处理之后,还包括:
利用用于加载多核固件的工程加载固件;
运行全系统的固件。
其进一步技术方案为:所述对所述错误检查和纠正信息以及检测可靠性标志位进行处理,以得到处理结果之后,还包括:
判断所述重读结果是否为重读成功;
若是,则进入所述运行用于加载多核固件的工程;
若否,则输出芯片加载失败通知。
其进一步技术方案为:所述输出芯片加载失败通知之后,还包括:
将固化在控制器内部且用于控制器正常启动的代码的工作模式切换至下载模式。
本发明还提供了提升固件加载效率的装置,包括:
读取单元,用于从NandFlash中读取用于加载多核固件的工程,以得到读取结果;
第一判断单元,用于判断所述读取结果是否为读取成功;
重读单元,用于若否,则从NandFlash中重读用于加载多核固件的工程,以得到重读结果;
信息获取单元,用于获取检测可靠性标志位以及从NandFlash中重读用于加载多核固件的工程的过程中所出现的错误检查和纠正信息;
第一处理单元,用于对所述错误检查和纠正信息以及检测可靠性标志位进行处理,以得到处理结果;
运行单元,用于若是,则运行用于加载多核固件的工程;
标志位获取单元,用于获取检测可靠性标志位;
第二判断单元,用于判断检测可靠性标志位是否为设定值;
第二处理单元,用于若是,则根据处理结果对相关的块以及检测可靠性标志位进行处理。
本发明还提供了一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法。
本发明还提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现上述的方法。
本发明与现有技术相比的有益效果是:本发明通过在读取用于加载多核固件的工程时,当读取失败且进入重读操作时,将错误检查和纠正信息以及检测可靠性标志位进行存储,并在读取成功且运行用于加载多核固件的工程时,当检测可靠性标志位为TRUE,对错误检查和纠正信息对应的块进行数据刷新,以刷新NandFlash中数据,将处于不可靠状态的NandFlash数据变为可靠状态,确保固态硬盘控制器利用固化在控制器内部且用于控制器正常启动的代码从NandFlash中加载用于加载多核固件的工程时能够以最快的速度加载运行用于加载多核固件的工程,减少从NandFlash中读取用于加载多核固件的工程的加载时间,以提升固件加载效率。
下面结合附图和具体实施例对本发明作进一步描述。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术的固化在控制器内部且用于控制器正常启动的代码加载运行的流程示意图;
图2为本发明实施例提供的提升固件加载效率的方法的流程示意图;
图3为本发明实施例提供的提升固件加载效率的方法的子流程示意图;
图4为本发明实施例提供的提升固件加载效率的方法的子流程示意图;
图5为本发明实施例提供的提升固件加载效率的装置的示意性框图;
图6为本发明实施例提供的提升固件加载效率的装置的第一处理单元的示意性框图;
图7为本发明实施例提供的提升固件加载效率的装置的第二处理单元的示意性框图;
图8为本发明实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图2,图2为本发明实施例提供的提升固件加载效率的方法的示意性流程图。该提升固件加载效率的方法应用于带有固态硬盘的设备中,从固态硬盘内读取用于加载多核固件的工程后,对该工程进行运行以加载固件,实现保证NandFlash中数据的稳定性,减少从NandFlash中读取用于加载多核固件的工程的加载时间,以提升固件加载效率。
图2是本发明实施例提供的提升固件加载效率的方法的流程示意图。如图2所示,该方法包括以下步骤S110至S240。
S110、从NandFlash中读取用于加载多核固件的工程,以得到读取结果。
在本实施例中,读取结果包括是否读取成功的标识,且在读取成功时还包括所读取的用于加载多核固件的工程。
具体地,先对芯片进行上电后,运行固化在控制器内部且用于控制器正常启动的代码,以使其进入从NandFlash中读取用于加载多核固件的工程的模式,进而进行读取用于多核固件的工程。
S120、判断所述读取结果是否为读取成功。
当读取结果的标识为读取成功,则读取结果为读取成功,且该读取结果内包括有用于加载多核固件的工程;当读取结果的标识为读取失败,则读取结果不是读取成功。
S130、若读取结果不是读取成功,则从NandFlash中重读用于加载多核固件的工程,以得到重读结果。
当读取不成功时,需要进行重读,该重读结果是指从NandFlash中重读用于加载多核固件的工程的结果,若该结果是成功,则包括重读成功的标识以及用于加载多核固件的工程,若该结果是失败,则包括重读失败的标识。
S140、获取检测可靠性标志位以及从NandFlash中重读用于加载多核固件的工程的过程中所出现的错误检查和纠正信息。
在本实施例中,错误检查和纠正信息是指UECC(不可校正的纠错码,Uncorrectable Error Correction Code)和/或CECC(可校正的纠错码,CorrectableError Correction Code)所在的位置信息,其中,该位置信息包括具体系统、CE(可修正的错误,Correctable Error)、块和页信息。
固件系统设计中需要对NandFlash端的数据作可靠性辨别,常见的将数据的可靠性分类为Pass,CECC和UECC。正常读取失败,触发重读,且在重读等级≥CECC等级时数据被正确读取,状态标记为CECC。正常读取失败,重读失败,状态标记为UECC。
检测可靠性标志位是指当前字节的数据的可靠性。
S150、对所述错误检查和纠正信息以及检测可靠性标志位进行处理,以得到处理结果。
在本实施例中,处理结果是指存储后的错误检查和纠正信息以及设置后的检测可靠性标志位的集成。
在一实施例中,请参阅图3,上述的步骤S150可包括步骤S151~S153。
S151、将所述错误检查和纠正信息保存在控制器内部的静态随机存取存储器的固定区域内;
S152、将检测可靠性标志位设置为准确;
S153、将设置后的检测可靠性标志位存储于控制器内部的静态随机存取存储器的固定区域内,以得到处理结果。
固态硬盘在利用固化在控制器内部且用于控制器正常启动的代码从NandFlash中加载用于加载多核固件的工程的加载过程中,一旦出现重读操作,固化在控制器内部且用于控制器正常启动的代码会将出现UECC或者CECC所在的位置信息写入控制器内部的静态随机存取存储器ISRAM的固定区域中,并将检测可靠性标志位FLAG置为TRUE,供后续用于加载多核固件的工程使用,该段固定区域为位置信息和检测可靠性标志位FLAG的专属区域,控制器的运行程序从固化在控制器内部且用于控制器正常启动的代码切换到用于加载多核固件的工程的过程中,该段固定区域的数据不会被改变。进而通过刷新NandFlash中数据的方式,将处于不可靠状态的NandFlash数据变为可靠状态,确保固态硬盘控制器利用固化在控制器内部且用于控制器正常启动的代码从NandFlash中加载用于加载多核固件的工程时能够以最快的速度加载运行用于加载多核固件的工程。
S160、判断所述重读结果是否为重读成功。
在本实施中,当重读结果包括重读成功的标识以及用于加载多核固件的工程,则重读结果为重读成功,若重读结果包括重读失败的标识,则重读结果不是重读成功。
若是,则进入所述步骤S190;
S170、若否,则输出芯片加载失败通知。
S180、将固化在控制器内部且用于控制器正常启动的代码的工作模式切换至下载模式。
S190、若读取结果是读取成功,则运行用于加载多核固件的工程;
S200、获取检测可靠性标志位;
S210、判断检测可靠性标志位是否为设定值。
在本实施例中,设定值是指准确TRUE或者失败FALSE。
用于加载多核固件的工程运行后,首先会检测可靠性标志位FLAG是否为TRUE,如果检测可靠性标志位FLAG为TRUE,说明NandFlash中部分比特位处于数据不可靠的状态。
S220、若是,则根据处理结果对相关的块以及检测可靠性标志位进行处理。
在一实施例中,请参阅图4,上述的步骤S220可包括步骤S221~S223。
S221、根据处理结果擦除所述错误检查和纠正信息对应的块;
S222、从NorFlash中读取所擦除的块对应位置的数据信息,并写入NandFlash所擦除的块内;
S223、将检测可靠性标志为设置为错误。
在本实施例中,上述的数据信息是指用于加载多核固件的工程文件数据。
根据固定区域中的处理结果,擦除UECC和/或CECC所在的位置信息所对应的块,以使得该块内没有出错的数据。从NorFlash中获取用于加载多核固件的工程文件数据,重新将用于加载多核固件的工程文件数据写到Nandflash该块中,并将可靠性标志位FLAG置为错误FALSE。便可保证Nandflash中的用于加载多核固件的工程文件数据都处于可靠状态,再次上电Nandboot启动时,控制器可以以最快的速度加载用于加载多核固件的工程运行,不再触发重读机制,减少利用固化在控制器内部且用于控制器正常启动的代码从NandFlash中加载用于加载多核固件的工程的加载时间。
S230、利用用于加载多核固件的工程加载固件。
该用于加载多核固件的工程可以是读取结果或者重读结果中的加载多核固件的工程,也可以是对相关的块以及检测可靠性标志位进行处理过程中,从NorFlash中获取用于加载多核固件的工程文件数据,依据不同的情况而定。
S240、运行全系统的固件。
若否,则进入所述步骤S230。
上述的提升固件加载效率的方法,通过在读取用于加载多核固件的工程时,当读取失败且进入重读操作时,将错误检查和纠正信息以及检测可靠性标志位进行存储,并在读取成功且运行用于加载多核固件的工程时,当检测可靠性标志位为TRUE,对错误检查和纠正信息对应的块进行数据刷新,以刷新NandFlash中数据,将处于不可靠状态的NandFlash数据变为可靠状态,确保固态硬盘控制器利用固化在控制器内部且用于控制器正常启动的代码从NandFlash中加载用于加载多核固件的工程时能够以最快的速度加载运行用于加载多核固件的工程,减少从NandFlash中读取用于加载多核固件的工程的加载时间,以提升固件加载效率。
图5是本发明实施例提供的一种提升固件加载效率的装置300的示意性框图。如图5所示,对应于以上提升固件加载效率的方法,本发明还提供一种提升固件加载效率的装置300。该提升固件加载效率的装置300包括用于执行上述提升固件加载效率的方法的单元,该装置可以被配置于带有固态硬盘的设备中。
具体地,请参阅图5,该提升固件加载效率的装置300包括:
读取单元301,用于从NandFlash中读取用于加载多核固件的工程,以得到读取结果;
第一判断单元302,用于判断所述读取结果是否为读取成功;
重读单元303,用于若否,则从NandFlash中重读用于加载多核固件的工程,以得到重读结果;
信息获取单元304,用于获取检测可靠性标志位以及从NandFlash中重读用于加载多核固件的工程的过程中所出现的错误检查和纠正信息;
第一处理单元305,用于对所述错误检查和纠正信息以及检测可靠性标志位进行处理,以得到处理结果;
第三判断单元306,用于判断所述重读结果是否为重读成功;若是,则进入所述运行用于加载多核固件的工程;
通知输出单元307,用于若否,则输出芯片加载失败通知;
切换单元308,用于将固化在控制器内部且用于控制器正常启动的代码的工作模式切换至下载模式;
运行单元309,用于若是,则运行用于加载多核固件的工程;
标志位获取单元310,用于获取检测可靠性标志位;
第二判断单元311,用于判断检测可靠性标志位是否为设定值;
第二处理单元312,用于若是,则根据处理结果对相关的块以及检测可靠性标志位进行处理;
加载单元313,用于利用用于加载多核固件的工程加载固件;
固件运行单元314,用于运行全系统的固件。
在一实施例中,如图6所示,所述第一处理单元305包括:
保存子单元3051,用于将所述错误检查和纠正信息保存在控制器内部的静态随机存取存储器的固定区域内;
第一设置子单元3052,用于将检测可靠性标志位设置为准确;
存储子单元3053,用于将设置后的检测可靠性标志位存储于控制器内部的静态随机存取存储器的固定区域内,以得到处理结果。
在一实施例中,如图7所示,所述第二处理单元312包括:
擦除子单元3121,用于根据处理结果擦除所述错误检查和纠正信息对应的块;
数据信息读取子单元3122,用于从NorFlash中读取所擦除的块对应位置的数据信息,并写入NandFlash所擦除的块内;
第二设置子单元3123,用于将检测可靠性标志为设置为错误。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述提升固件加载效率的装置300和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
上述提升固件加载效率的装置300可以实现为一种计算机程序的形式,该计算机程序可以在如图8所示的计算机设备上运行。
请参阅图8,图8是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备500可以是带有固态硬盘的服务器。
参阅图8,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504。
该非易失性存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032包括程序指令,该程序指令被执行时,可使得处理器502执行一种提升固件加载效率的方法。
该处理器502用于提供计算和控制能力,以支撑整个计算机设备500的运行。
该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行一种提升固件加载效率的方法。
该网络接口505用于与其它设备进行网络通信。本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现如下步骤:
从NandFlash中读取用于加载多核固件的工程,以得到读取结果;
判断所述读取结果是否为读取成功;
若否,则从NandFlash中重读用于加载多核固件的工程,以得到重读结果;
获取检测可靠性标志位以及从NandFlash中重读用于加载多核固件的工程的过程中所出现的错误检查和纠正信息;
对所述错误检查和纠正信息以及检测可靠性标志位进行处理,以得到处理结果;
若是,则运行用于加载多核固件的工程;
获取检测可靠性标志位;
判断检测可靠性标志位是否为设定值;
若是,则根据处理结果对相关的块以及检测可靠性标志位进行处理。
其中,所述错误检查和纠正信息包括UECC和/或CECC所在的位置信息。
在一实施例中,处理器502在实现所述对所述错误检查和纠正信息以及检测可靠性标志位进行处理,以得到处理结果步骤时,具体实现如下步骤:
将所述错误检查和纠正信息保存在控制器内部的静态随机存取存储器的固定区域内;
将检测可靠性标志位设置为准确;
将设置后的检测可靠性标志位存储于控制器内部的静态随机存取存储器的固定区域内,以得到处理结果。
在一实施例中,处理器502在实现所述根据处理结果对相关的块以及检测可靠性标志位进行处理步骤时,具体实现如下步骤:
根据处理结果擦除所述错误检查和纠正信息对应的块;
从NorFlash中读取所擦除的块对应位置的数据信息,并写入NandFlash所擦除的块内;
将检测可靠性标志为设置为错误。
在一实施例中,处理器502在实现所述根据处理结果对相关的块以及检测可靠性标志位进行处理步骤之后,还实现如下步骤:
利用用于加载多核固件的工程加载固件;
运行全系统的固件。
在一实施例中,处理器502在实现所述对所述错误检查和纠正信息以及检测可靠性标志位进行处理,以得到处理结果步骤之后,还实现如下步骤:
判断所述重读结果是否为重读成功;
若是,则进入所述运行用于加载多核固件的工程;
若否,则输出芯片加载失败通知。
在一实施例中,处理器502在实现所述输出芯片加载失败通知步骤之后,还实现如下步骤:
将固化在控制器内部且用于控制器正常启动的代码的工作模式切换至下载模式。
应当理解,在本申请实施例中,处理器502可以是中央处理单元(CentralProcessing Unit,CPU),该处理器502还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
因此,本发明还提供一种存储介质。该存储介质可以为计算机可读存储介质。该存储介质存储有计算机程序,其中该计算机程序被处理器执行时使处理器执行如下步骤:
从NandFlash中读取用于加载多核固件的工程,以得到读取结果;
判断所述读取结果是否为读取成功;
若否,则从NandFlash中重读用于加载多核固件的工程,以得到重读结果;
获取检测可靠性标志位以及从NandFlash中重读用于加载多核固件的工程的过程中所出现的错误检查和纠正信息;
对所述错误检查和纠正信息以及检测可靠性标志位进行处理,以得到处理结果;
若是,则运行用于加载多核固件的工程;
获取检测可靠性标志位;
判断检测可靠性标志位是否为设定值;
若是,则根据处理结果对相关的块以及检测可靠性标志位进行处理。
其中,所述错误检查和纠正信息包括UECC和/或CECC所在的位置信息。
在一实施例中,所述处理器在执行所述计算机程序而实现所述对所述错误检查和纠正信息以及检测可靠性标志位进行处理,以得到处理结果步骤时,具体实现如下步骤:
将所述错误检查和纠正信息保存在控制器内部的静态随机存取存储器的固定区域内;
将检测可靠性标志位设置为准确;
将设置后的检测可靠性标志位存储于控制器内部的静态随机存取存储器的固定区域内,以得到处理结果。
在一实施例中,所述处理器在执行所述计算机程序而实现所述根据处理结果对相关的块以及检测可靠性标志位进行处理步骤时,具体实现如下步骤:
根据处理结果擦除所述错误检查和纠正信息对应的块;
从NorFlash中读取所擦除的块对应位置的数据信息,并写入NandFlash所擦除的块内;
将检测可靠性标志为设置为错误。
在一实施例中,所述处理器在执行所述计算机程序而实现所述根据处理结果对相关的块以及检测可靠性标志位进行处理步骤之后,还实现如下步骤:
利用用于加载多核固件的工程加载固件;
运行全系统的固件。
在一实施例中,所述处理器在执行所述计算机程序而实现所述对所述错误检查和纠正信息以及检测可靠性标志位进行处理,以得到处理结果步骤之后,还实现如下步骤:
判断所述重读结果是否为重读成功;
若是,则进入所述运行用于加载多核固件的工程;
若否,则输出芯片加载失败通知。
在一实施例中,所述处理器在执行所述计算机程序而实现所述输出芯片加载失败通知步骤之后,还实现如下步骤:
将固化在控制器内部且用于控制器正常启动的代码的工作模式切换至下载模式。
所述存储介质可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (8)
1.提升固件加载效率的方法,其特征在于,包括:
从NandFlash中读取用于加载多核固件的工程,以得到读取结果;
判断所述读取结果是否为读取成功;
若否,则从NandFlash中重读用于加载多核固件的工程,以得到重读结果;
获取检测可靠性标志位以及从NandFlash中重读用于加载多核固件的工程的过程中所出现的错误检查和纠正信息;
对所述错误检查和纠正信息以及检测可靠性标志位进行处理,以得到处理结果;
若是,则运行用于加载多核固件的工程;
获取检测可靠性标志位;
判断检测可靠性标志位是否为设定值;
若是,则根据处理结果对相关的块以及检测可靠性标志位进行处理;
所述对所述错误检查和纠正信息以及检测可靠性标志位进行处理,以得到处理结果,包括:
将所述错误检查和纠正信息保存在控制器内部的静态随机存取存储器的固定区域内;
将检测可靠性标志位设置为准确;
将设置后的检测可靠性标志位存储于控制器内部的静态随机存取存储器的固定区域内,以得到处理结果;
所述根据处理结果对相关的块以及检测可靠性标志位进行处理,包括:
根据处理结果擦除所述错误检查和纠正信息对应的块;
从NorFlash中读取所擦除的块对应位置的数据信息,并写入NandFlash所擦除的块内;
将检测可靠性标志位 设置为错误。
2.根据权利要求1所述的提升固件加载效率的方法,其特征在于,所述错误检查和纠正信息包括UECC和/或CECC所在的位置信息。
3.根据权利要求1至2任一项所述的提升固件加载效率的方法,其特征在于,
所述根据处理结果对相关的块以及检测可靠性标志位进行处理之后,还包括:
利用用于加载多核固件的工程加载固件;
运行全系统的固件。
4.根据权利要求3所述的提升固件加载效率的方法,其特征在于,所述对所述错误检查和纠正信息以及检测可靠性标志位进行处理,以得到处理结果之后,还包括:
判断所述重读结果是否为重读成功;
若是,则进入所述运行用于加载多核固件的工程;
若否,则输出芯片加载失败通知。
5.根据权利要求4所述的提升固件加载效率的方法,其特征在于,所述输出芯片加载失败通知之后,还包括:
将固化在控制器内部且用于控制器正常启动的代码的工作模式切换至下载模式。
6.提升固件加载效率的装置,其特征在于,包括:
读取单元,用于从NandFlash中读取用于加载多核固件的工程,以得到读取结果;
第一判断单元,用于判断所述读取结果是否为读取成功;
重读单元,用于若否,则从NandFlash中重读用于加载多核固件的工程,以得到重读结果;
信息获取单元,用于获取检测可靠性标志位以及从NandFlash中重读用于加载多核固件的工程的过程中所出现的错误检查和纠正信息;
第一处理单元,用于对所述错误检查和纠正信息以及检测可靠性标志位进行处理,以得到处理结果;
运行单元,用于若是,则运行用于加载多核固件的工程;
标志位获取单元,用于获取检测可靠性标志位;
第二判断单元,用于判断检测可靠性标志位是否为设定值;
第二处理单元,用于若是,则根据处理结果对相关的块以及检测可靠性标志位进行处理;
所述第一处理单元包括:
保存子单元,用于将所述错误检查和纠正信息保存在控制器内部的静态随机存取存储器的固定区域内;
第一设置子单元,用于将检测可靠性标志位设置为准确;
存储子单元,用于将设置后的检测可靠性标志位存储于控制器内部的静态随机存取存储器的固定区域内,以得到处理结果;
所述第二处理单元包括:
擦除子单元,用于根据处理结果擦除所述错误检查和纠正信息对应的块;
数据信息读取子单元,用于从NorFlash中读取所擦除的块对应位置的数据信息,并写入NandFlash所擦除的块内;
第二设置子单元,用于将检测可靠性标志位 设置为错误。
7.一种计算机设备,其特征在于,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至5中任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现如权利要求1至5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910339257.2A CN110109714B (zh) | 2019-04-25 | 2019-04-25 | 提升固件加载效率的方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910339257.2A CN110109714B (zh) | 2019-04-25 | 2019-04-25 | 提升固件加载效率的方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110109714A CN110109714A (zh) | 2019-08-09 |
CN110109714B true CN110109714B (zh) | 2022-03-29 |
Family
ID=67486696
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910339257.2A Active CN110109714B (zh) | 2019-04-25 | 2019-04-25 | 提升固件加载效率的方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110109714B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113791930A (zh) * | 2021-09-14 | 2021-12-14 | 浙江大华存储科技有限公司 | 读命令的处理方法和装置、存储介质及电子装置 |
CN114185620B (zh) * | 2021-12-14 | 2023-10-10 | 深圳忆联信息系统有限公司 | 加速ssd固件加载实现方法、装置、计算机设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101908023A (zh) * | 2010-08-06 | 2010-12-08 | 四川长虹电器股份有限公司 | NandFlash存储器中数据存储方法 |
CN103473098A (zh) * | 2013-09-10 | 2013-12-25 | 华为技术有限公司 | 一种boot程序的启动方法和相关装置 |
CN104598169A (zh) * | 2012-12-31 | 2015-05-06 | 苏州国芯科技有限公司 | 用于flash存储器的高可靠性数据读取方法 |
CN107153507A (zh) * | 2016-03-03 | 2017-09-12 | 北京兆易创新科技股份有限公司 | 一种基于NAND Flash的数据读取装置和方法 |
CN108108129A (zh) * | 2017-12-19 | 2018-06-01 | 深圳忆联信息系统有限公司 | 一种动态量化固态硬盘数据可靠性的方法及固态硬盘 |
CN109491820A (zh) * | 2018-11-06 | 2019-03-19 | 湖南国科微电子股份有限公司 | 一种固态硬盘读错误处理方法 |
CN109582488A (zh) * | 2018-12-03 | 2019-04-05 | 郑州云海信息技术有限公司 | 一种固态硬盘的错误预防方法及相关装置 |
CN109583189A (zh) * | 2018-12-13 | 2019-04-05 | 深圳忆联信息系统有限公司 | 固件安全加载方法、装置、计算机设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110252289A1 (en) * | 2010-04-08 | 2011-10-13 | Seagate Technology Llc | Adjusting storage device parameters based on reliability sensing |
CN109598105B (zh) * | 2018-12-03 | 2020-09-29 | 深圳忆联信息系统有限公司 | 一种微控制器安全加载固件的方法、装置、计算机设备及存储介质 |
CN109657504B (zh) * | 2018-12-12 | 2020-09-22 | 深圳忆联信息系统有限公司 | 芯片与固件的绑定方法、装置、计算机设备及存储介质 |
-
2019
- 2019-04-25 CN CN201910339257.2A patent/CN110109714B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101908023A (zh) * | 2010-08-06 | 2010-12-08 | 四川长虹电器股份有限公司 | NandFlash存储器中数据存储方法 |
CN104598169A (zh) * | 2012-12-31 | 2015-05-06 | 苏州国芯科技有限公司 | 用于flash存储器的高可靠性数据读取方法 |
CN103473098A (zh) * | 2013-09-10 | 2013-12-25 | 华为技术有限公司 | 一种boot程序的启动方法和相关装置 |
CN107153507A (zh) * | 2016-03-03 | 2017-09-12 | 北京兆易创新科技股份有限公司 | 一种基于NAND Flash的数据读取装置和方法 |
CN108108129A (zh) * | 2017-12-19 | 2018-06-01 | 深圳忆联信息系统有限公司 | 一种动态量化固态硬盘数据可靠性的方法及固态硬盘 |
CN109491820A (zh) * | 2018-11-06 | 2019-03-19 | 湖南国科微电子股份有限公司 | 一种固态硬盘读错误处理方法 |
CN109582488A (zh) * | 2018-12-03 | 2019-04-05 | 郑州云海信息技术有限公司 | 一种固态硬盘的错误预防方法及相关装置 |
CN109583189A (zh) * | 2018-12-13 | 2019-04-05 | 深圳忆联信息系统有限公司 | 固件安全加载方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110109714A (zh) | 2019-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8589730B2 (en) | Handling errors during device bootup from a non-volatile memory | |
EP2245542B1 (en) | Semiconductor storage device | |
TWI421679B (zh) | 錯誤校正裝置及方法 | |
CN111880736B (zh) | 一种固态硬盘访问方法、装置、设备及介质 | |
US8176387B2 (en) | Error detection control system | |
CN110109714B (zh) | 提升固件加载效率的方法、装置、计算机设备及存储介质 | |
US8856614B2 (en) | Semiconductor memory device detecting error | |
CN106021002B (zh) | 一种嵌入式设备数据读写方法及装置 | |
US20050081090A1 (en) | Method for automatically and safely recovering BIOS memory circuit in memory device including double BIOS memory circuits | |
JP4201629B2 (ja) | 誤書込み防止回路および該誤書込み防止回路を含む半導体装置 | |
TWI534707B (zh) | 電腦系統及其開關機方法 | |
US10915388B2 (en) | Data storage device and associated operating method capable of detecting errors and effectively protecting data | |
US7447943B2 (en) | Handling memory errors in response to adding new memory to a system | |
JP2010067098A (ja) | 情報処理装置、情報処理方法および情報処理プログラム | |
US10691569B2 (en) | System and method for testing a data storage device | |
US9778981B2 (en) | Microcontroller | |
CN112114752A (zh) | 提升固态存储设备可靠性的方法、装置、计算机设备及存储介质 | |
TWI816418B (zh) | 半導體儲存裝置及其操作方法 | |
JP4950214B2 (ja) | データ記憶装置における停電を検出する方法、およびデータ記憶装置を復旧する方法 | |
JP2014075078A (ja) | 電子制御装置 | |
CN108255633B (zh) | 存储控制方法、存储装置 | |
CN111506460B (zh) | 内存故障的处理方法、装置、移动终端及存储介质 | |
CN115269256A (zh) | 闪存的数据刷新方法及相关装置 | |
CN110838314A (zh) | 一种存储数据的加固方法及装置 | |
US20040153783A1 (en) | Circuit for detecting abnormal operation of memory and integrated circuit and method for detectiing abnormal 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 |