CN113110891B - 固态硬盘的固件加载方法、装置、计算机设备及存储介质 - Google Patents
固态硬盘的固件加载方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN113110891B CN113110891B CN202110431701.0A CN202110431701A CN113110891B CN 113110891 B CN113110891 B CN 113110891B CN 202110431701 A CN202110431701 A CN 202110431701A CN 113110891 B CN113110891 B CN 113110891B
- Authority
- CN
- China
- Prior art keywords
- program
- bootloader
- full
- firmware
- sram
- 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中的全***管理信息到SRAM指定的第一地址处;从所述全***管理信息中找到BootLoader程序在NandFlash中的位置,并将所述BootLoader程序加载到SRAM指定的第二地址处;BootRom程序跳转到SRAM指定的第二地址处并运行BootLoader程序;BootLoader程序从SRAM指定的第一地址处的全***管理信息找到***数据全***固件程序在NandFlash中的存储位置,并将所述全***固件程序加载到SRAM指定的第三地址处;BootLoader程序跳转到SRAM指定的第三地址处,并运行所述全***固件程序。本发明避免了因加载BootLoader失败而使SSD成为废盘的风险。
Description
技术领域
本发明涉及固态硬盘技术领域,特别是涉及一种固态硬盘的固件加载方法、装置、计算机设备及存储介质。
背景技术
计算机设备已经成为当今人们最具备生成力的实用工具,随着固态硬盘价格的下跌,固态硬盘越来越普及,NVMe SSD简称SSD(Solid State Disk或Solid State Drive)以其优越的性能更是发展迅猛,各大电脑厂商纷纷将计算机设备中的硬盘做成SSD。
目前,传统技术中实现SSD固件加载过程为:SSD上电运行BootRom程序,BootRom从NandFlash固定block/page地址处读取BootLoader程序,并运行BootLoader程序,BootLoader程序运行起来以后再加载全***固件,从而实现全***固件的加载。在上述实现过程中,要求NandFlash中保存BootLoader的固定block/page具有良好的稳定性,加上BootRom程序是固化在ROM中不可更改的特性,一旦读取BootLoader失败很容易造成SSD因加载固件失败而成为废盘。同时,由于不同协议不同型号的NandFlash颗粒稳定性较好的block一般不是统一的,这就要求SSD厂家应尽量选择对于不同颗粒都是稳定性较好的block用来存储BootLoader程序,以保证BootRom从这些固定block中能够正确读取BootLoader程序,即当前SSD的BootRom程序对NandFlash颗粒的兼容性较差。
发明内容
基于此,有必要针对上述技术问题,提供一种固态硬盘的固件加载方法、装置、计算机设备及存储介质。
一种固态硬盘的固件加载方法,所述方法包括:
固态硬盘上电启动后运行BootRom程序,并通过BootRom程序对NandFlash控制器进行初始化;
读取NandFlash中的全***管理信息到SRAM指定的第一地址处;
从所述全***管理信息中找到BootLoader程序在NandFlash中的位置,并将所述BootLoader程序加载到SRAM指定的第二地址处;
对所述BootLoader程序进行CRC校验;
若所述BootLoader程序校验成功,则BootRom程序跳转到SRAM指定的第二地址处并运行BootLoader程序;
BootLoader程序从SRAM指定的第一地址处的全***管理信息找到***数据全***固件程序在NandFlash中的存储位置,并将所述全***固件程序加载到SRAM指定的第三地址处;
对所述全***固件程序进行CRC校验;
若所述全***固件程序校验成功,则BootLoader程序跳转到SRAM指定的第三地址处,并运行所述全***固件程序。
在其中一个实施例中,在所述读取NandFlash中的全***管理信息到SRAM指定的第一地址处的步骤之后还包括:
判断读取NandFlash中的全***管理信息是否成功;
若读取失败,则BootRom程序输出第一错误信息到内部指定寄存器并进入到BootRom下载模式;
若读取成功,则从所述全***管理信息中找到BootLoader程序在NandFlash中的位置并将所述BootLoader程序加载到SRAM指定的第二地址处。
在其中一个实施例中,在所述对所述BootLoader程序进行CRC校验的步骤之后还包括:
若读取BootLoader程序失败或者校验失败,则BootRom程序输出第二错误信息到内部指定寄存器并进入到BootRom下载模式。
在其中一个实施例中,在所述对所述全***固件程序进行CRC校验的步骤之后还包括:
若读取全***固件的过程失败或者校验失败,则BootLoader程序输出第三错误信息到内部指定寄存器并进入到BootLoader下载模式。
在其中一个实施例中,所述方法还包括:
固态硬盘上电启动后运行BootRom程序,并等待进入下载模式;
将量产程序下载到SRAM指定地址处,并跳转到所述指定地址以使所述量产程序运行起来;
量产程序执行低格命令,对全***管理信息进行初始化;
量产程序执行下载BootLoader程序命令,在NandFlash内部申请存储位置将BootLoader程序进行保存,并将所述BootLoader程序保存的位置信息更新到全***管理信息中;
量产程序执行下载全***固件的命令,在NandFlash内部申请存储位置将全***固件进行保存,并将所述全***固件保存的位置信息更新到全***管理信息中。
一种固态硬盘的固件加载装置,所述装置包括:
初始化模块,所述初始化模块用于固态硬盘上电启动后运行BootRom程序,并通过BootRom程序对NandFlash控制器进行初始化;
信息读取模块,所述信息读取模块用于读取NandFlash中的全***管理信息到SRAM指定的第一地址处;
第一加载模块,所述第一加载模块用于从所述全***管理信息中找到BootLoader程序在NandFlash中的位置,并将所述BootLoader程序加载到SRAM指定的第二地址处;
第一校验模块,所述第一校验模块用于对所述BootLoader程序进行CRC校验;若所述BootLoader程序校验成功,则BootRom程序跳转到SRAM指定的第二地址处并运行BootLoader程序;
第二加载模块,所述第二加载模块用于BootLoader程序从SRAM指定的第一地址处的全***管理信息找到***数据全***固件程序在NandFlash中的存储位置,并将所述全***固件程序加载到SRAM指定的第三地址处;
第二校验模块,所述第二校验模块用于对所述全***固件程序进行CRC校验;若所述全***固件程序校验成功,则BootLoader程序跳转到SRAM指定的第三地址处,并运行所述全***固件程序。
在其中一个实施例中,所述装置还包括判断模块,所述判断模块用于:
判断读取NandFlash中的全***管理信息是否成功;
若读取失败,则BootRom程序输出第一错误信息到内部指定寄存器并进入到BootRom下载模式;
若读取成功,则从所述全***管理信息中找到BootLoader程序在NandFlash中的位置并将所述BootLoader程序加载到SRAM指定的第二地址处。
在其中一个实施例中,所述第一校验模块还用于:
若读取BootLoader程序失败或者校验失败,则BootRom程序输出第二错误信息到内部指定寄存器并进入到BootRom下载模式。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。
上述固态硬盘的固件加载方法、装置、计算机设备及存储介质中,在SSD量产阶段中,由于保存BootLoader程序的block/page地址是动态申请的,并将地址信息更新到***管理信息中,这样BootRom程序运行起来后,不再从NandFlash固定block/page地址处读取BootLoader程序,而是先读取***管理信息中存储BootLoader的block/page地址信息,然后再从这些NandFlash的block/page读取BootLoader并运行。因此,当SSD一旦读取BootLoader失败,可以回到量产阶段重新下载BootLoader程序到NandFlash其它block/page地址处,有效避免了因加载BootLoader失败而使SSD成为废盘的风险。同时,由于下载地址不再固定,从而实现了BootRom对不同协议不同NandFlash颗粒的良好兼容性。
附图说明
图1为一个实施例中固态硬盘的固件加载方法的流程示意图;
图2为另一个实施例中固态硬盘的固件加载方法的流程示意图;
图3为再一个实施例中固态硬盘的固件加载方法的流程示意图;
图4为一个实施例中实现固态硬盘固件加载方法的流程示意图;
图5为一个实施例中实现量产阶段下载BootLoader程序和全***固件加载方法的流程示意图;
图6为一个实施例中固态硬盘的固件加载装置的结构框图;
图7为另一个实施例中固态硬盘的固件加载装置的结构框图;
图8为再一个实施例中固态硬盘的固件加载装置的结构框图;
图9为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
目前,当前SSD实现固件加载的方法如下:SSD上电运行BootRom程序,BootRom从NandFlash固定block/page地址处读取BootLoader程序,并运行BootLoader程序,BootLoader程序运行起来以后再加载全***固件,从而实现全***固件的加载。这就要求NandFlash中保存BootLoader的固定block/page具有良好的稳定性,加上BootRom程序是固化在ROM中不可更改的特性,一旦读取BootLoader失败很容易造成SSD因加载固件失败而成为废盘。同时,由于不同协议不同型号的NandFlash颗粒稳定性较好的block一般不是统一的,这就要求SSD厂家应尽量选择对于不同颗粒都是稳定性较好的block用来存储BootLoader程序,以保证BootRom从这些固定block中能够正确读取BootLoader程序,即当前SSD的BootRom程序对NandFlash颗粒的兼容性较差。。
基于此,本发明提供了一种固态硬盘的固件加载方法,该方法在SSD***上电运行后,BootRom程序先将***管理信息读取到SRAM1地址处,从***管理信息中得到BootLoader在NandFlash中存储地址信息,将NandFlash中保存的BootLoader程序读取到SRAM2地址处,然后CPU跳转到SRAM2地址开始运行BootLoader程序。BootLoader程序根据SRAM1处的管理信息中的全***固件在NandFlash中存储地址信息,将全***固件读取到SRAM3地址处,然后CPU跳转到SRAM3地址处开始执行全***固件,从而完成全***固件的加载流程。
在量产阶段,运行量产程序时通过低格命令完成***管理信息的初始化,在执行下载BootLoader和全***固件命令过程中,会首先在NandFlash保存***数据的块中动态申请存储地址信息,然后将BootLoader和全***固件保存到相应的NandFlash当中,最后将存储地址信息更新到***管理信息中。
在一个实施例中,如图1所示,提供了一种固态硬盘的固件加载,该方法包括:
步骤102,固态硬盘上电启动后运行BootRom程序,并通过BootRom程序对NandFlash控制器进行初始化;
步骤104,读取NandFlash中的全***管理信息到SRAM指定的第一地址处;
步骤106,从所述全***管理信息中找到BootLoader程序在NandFlash中的位置,并将所述BootLoader程序加载到SRAM指定的第二地址处;
步骤108,对所述BootLoader程序进行CRC校验;
步骤110,若所述BootLoader程序校验成功,则BootRom程序跳转到SRAM指定的第二地址处并运行BootLoader程序;
步骤112,BootLoader程序从SRAM指定的第一地址处的全***管理信息找到***数据全***固件程序在NandFlash中的存储位置,并将所述全***固件程序加载到SRAM指定的第三地址处;
步骤114,对所述全***固件程序进行CRC校验;
步骤116,若所述全***固件程序校验成功,则BootLoader程序跳转到SRAM指定的第三地址处,并运行所述全***固件程序。
在本实施例中,提供了一种固态硬盘固件加载的方法,其具体的实现过程如下:
首先,固态硬盘上电启动后运行BootRom程序,并通过BootRom程序对NandFlash控制器进行初始化。BootRom是嵌入处理器芯片内的一小块掩模ROM或写保护闪存。它包含处理器在上电或复位时执行的第一个代码。根据某些带式引脚或内部保险丝的配置,它可以决定从哪里加载要执行的代码的下一部分以及如何验证其正确性或有效性。
接着,通过BootRom程序读取NandFlash中的全***管理信息到SRAM指定的第一地址处。若读取成功,则直接从全***管理信息中找到BootLoader程序在NandFlash中的位置,并将BootLoader程序加载到SRAM(Static Random-Access Memory,静态随机存取存储器)指定的第二地址处。Bootloader程序负责查找和加载应该在芯片上运行的最终操作***或固件。
然后,对BootLoader程序进行CRC校验。循环冗余校验码(CRC),简称循环码,是一种常用的、具有检错、纠错能力的校验码,循环冗余校验码可用于外存储器和计算机同步通信的数据校验。
若BootLoader程序校验成功,则BootRom程序跳转到SRAM指定的第二地址处并运行BootLoader程序。BootLoader程序从SRAM指定的第一地址处的全***管理信息找到***数据全***固件程序在NandFlash中的存储位置,并将全***固件程序加载到SRAM指定的第三地址处。
最后,再对全***固件程序进行CRC校验。若全***固件程序校验成功,则BootLoader程序跳转到SRAM指定的第三地址处,并运行全***固件程序。
在本实施例中,在SSD量产阶段中,由于保存BootLoader程序的block/page地址是动态申请的,并将地址信息更新到***管理信息中,这样BootRom程序运行起来后,不再从NandFlash固定block/page地址处读取BootLoader程序,而是先读取***管理信息中存储BootLoader的block/page地址信息,然后再从这些NandFlash的block/page读取BootLoader并运行。因此,当SSD一旦读取BootLoader失败,可以回到量产阶段重新下载BootLoader程序到NandFlash其它block/page地址处,有效避免了因加载BootLoader失败而使SSD成为废盘的风险。同时,由于下载地址不再固定,从而实现了BootRom对不同协议不同NandFlash颗粒的良好兼容性。
在一个实施例中,如图2所示,提供了一种固态硬盘的固件加载,该方法在读取NandFlash中的全***管理信息到SRAM指定的第一地址处的步骤之后还包括:
步骤202,判断读取NandFlash中的全***管理信息是否成功;
步骤204,若读取失败,则BootRom程序输出第一错误信息到内部指定寄存器并进入到BootRom下载模式;
步骤206,若读取成功,则从所述全***管理信息中找到BootLoader程序在NandFlash中的位置并将所述BootLoader程序加载到SRAM指定的第二地址处。
在本实施例中,在执行对BootLoader程序的校验之前,需要先判断读取NandFlash中的全***管理信息是否成功。如果读取失败,则需要通过BootRom程序输出第一错误信息到内部指定寄存器并进入到BootRom下载模式。如果读取成功则可继续执行后续的步骤。
在一个实施例中,提供了一种固态硬盘的固件加载,该方法在对所述BootLoader程序进行CRC校验的步骤之后还包括:若读取BootLoader程序失败或者校验失败,则BootRom程序输出第二错误信息到内部指定寄存器并进入到BootRom下载模式。
在一个实施例中,提供了一种固态硬盘的固件加载,该方法在对所述全***固件程序进行CRC校验的步骤之后还包括:若读取全***固件的过程失败或者校验失败,则BootLoader程序输出第三错误信息到内部指定寄存器并进入到BootLoader下载模式。
在一个实施例中,参考图4,提供了一个具体地实现固态硬盘固件加载的方法,包括:
1、固态硬盘上电重新启动,运行BootRom程序。
2、BootRom程序对NandFlash控制器进行初始化操作。
3、BootRom程序读取保存在NandFlash中的全***管理信息到SRAM指定地址1处,如果读取失败,则跳转到步骤4。如果读取成功则跳转到步骤5。
4、BootRom程序输出错误信息1到内部指定寄存器,并进入到BootRom下载模式。
5、BootRom程序从全***管理信息,找到***数据BootLoader在NandFlash中的存储位置。
6、BootRom程序将BootLoader程序加载到SRAM指定地址2处,并对BootLoader程序进行CRC校验,如果读取BootLoader程序失败或者校验失败,则跳转到步骤7。如果成功,跳转到步骤8。
7、BootRom程序输出错误信息2到内部指定寄存器,并进入到BootRom下载模式
8、BootRom程序跳转到SRAM指定地址2处,使BootLoader程序运行起来。
9、BootLoader程序从SRAM指定地址1处的全***管理信息,找到***数据全***固件在NandFlash中的存储位置。
10、BootLoader程序将全***固件程序加载到SRAM指定地址3处,并对全***固件程序进行CRC校验,如果读取全***固件的过程失败,或者校验失败,则跳转到步骤11。否则进入步骤12。
11、BootLoader程序输出错误信息3到内部指定寄存器,并进入到BootLoader下载模式。
12、BootLoader程序跳转到SRAM指定地址3处,使全***固件程序正常运行起来,从而完成全***固件的加载过程。
在本实施例中,***上电运行后,BootRom程序先将***管理信息读取到SRAM1地址处,从***管理信息中得到BootLoader存储地址信息,将NandFlash中保存的BootLoader程序读取到SRAM2地址处,然后CPU跳转到SRAM2地址开始运行BootLoader程序。BootLoader程序根据SRAM1处的管理信息中的全***固件在NandFlash中存储地址信息,将全***固件读取到SRAM3地址处,然后CPU跳转到SRAM3地址处开始执行全***固件,从而完成全***固件的加载流程。
在一个实施例中,如图3所示,提供了一种固态硬盘的固件加载,该方法还包括:
步骤302,固态硬盘上电启动后运行BootRom程序,并等待进入下载模式;
步骤304,将量产程序下载到SRAM指定地址处,并跳转到所述指定地址以使所述量产程序运行起来;
步骤306,量产程序执行低格命令,对全***管理信息进行初始化;
步骤308,量产程序执行下载BootLoader程序命令,在NandFlash内部申请存储位置将BootLoader程序进行保存,并将所述BootLoader程序保存的位置信息更新到全***管理信息中;
步骤310,量产程序执行下载全***固件的命令,在NandFlash内部申请存储位置将全***固件进行保存,并将所述全***固件保存的位置信息更新到全***管理信息中。
在一个实施例中,参考图5,提供了一个实现量产阶段下载BootLoader程序和全***固件加载方法,包括:
1、固态硬盘上电重新启动,运行BootRom程序,等待BootRom进入下载模式。
2、BootRom程序将量产程序下载到指定地址处,并跳转到该地址处,使量产程序运行起来。
3、量产程序执行低格命令,对全***管理信息进行初始化。
4、量产程序执行下载BootLoader命令,在NandFlash内部保存***数据的空间内申请BootLoader程序的存储位置。将BootLoader程序保存后,将该位置信息更新到全***管理信息中。
5、量产程序执行下载全***固件的命令,在NandFlash内部保存***数据的空间内申请全***固件的存储位置。将全***固件保存后,将该位置信息更新到全***管理信息中。
在本实施例中,***管理信息是在量产阶段运行量产程序时通过低格命令生成的。且在下载BootLoader和全***固件之后,会将BootLoader和全***固件在NandFlash存储的地址信息更新到***管理信息中。其中,BootLoader和全***固件在NandFlash存储的地址信息不是固定的,而是在每次下载过程中,从NandFlash中用来保存***数据的块中随机选取的,从而实现了BootRom对不同协议不同NandFlash颗粒的良好兼容性。
应该理解的是,虽然图1-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图6所示,提供了一种固态硬盘的固件加载装置600,该装置包括:
初始化模块601,用于固态硬盘上电启动后运行BootRom程序,并通过BootRom程序对NandFlash控制器进行初始化;
信息读取模块602,用于读取NandFlash中的全***管理信息到SRAM指定的第一地址处;
第一加载模块603,用于从所述全***管理信息中找到BootLoader程序在NandFlash中的位置,并将所述BootLoader程序加载到SRAM指定的第二地址处;
第一校验模块604,用于对所述BootLoader程序进行CRC校验;若所述BootLoader程序校验成功,则BootRom程序跳转到SRAM指定的第二地址处并运行BootLoader程序;
第二加载模块605,用于BootLoader程序从SRAM指定的第一地址处的全***管理信息找到***数据全***固件程序在NandFlash中的存储位置,并将所述全***固件程序加载到SRAM指定的第三地址处;
第二校验模块606,用于对所述全***固件程序进行CRC校验;若所述全***固件程序校验成功,则BootLoader程序跳转到SRAM指定的第三地址处,并运行所述全***固件程序。
在一个实施例中,如图7所示,提供了一种固态硬盘的固件加载装置600,该装置还包括判断模块607,用于:
判断读取NandFlash中的全***管理信息是否成功;
若读取失败,则BootRom程序输出第一错误信息到内部指定寄存器并进入到BootRom下载模式;
若读取成功,则从所述全***管理信息中找到BootLoader程序在NandFlash中的位置并将所述BootLoader程序加载到SRAM指定的第二地址处。
在一个实施例中,第一校验模块604还用于:
若读取BootLoader程序失败或者校验失败,则BootRom程序输出第二错误信息到内部指定寄存器并进入到BootRom下载模式。
在一个实施例中,第二校验模块606还用于:
若读取全***固件的过程失败或者校验失败,则BootLoader程序输出第三错误信息到内部指定寄存器并进入到BootLoader下载模式。
在一个实施例中,如图8所示,提供了一种固态硬盘的固件加载装置600,该装置还包括量产执行模块608,用于:
固态硬盘上电启动后运行BootRom程序,并等待进入下载模式;
将量产程序下载到SRAM指定地址处,并跳转到所述指定地址以使所述量产程序运行起来;
量产程序执行低格命令,对全***管理信息进行初始化;
量产程序执行下载BootLoader程序命令,在NandFlash内部申请存储位置将BootLoader程序进行保存,并将所述BootLoader程序保存的位置信息更新到全***管理信息中;
量产程序执行下载全***固件的命令,在NandFlash内部申请存储位置将全***固件进行保存,并将所述全***固件保存的位置信息更新到全***管理信息中。
关于固态硬盘的固件加载装置的具体限定可以参见上文中对于固态硬盘的固件加载方法的限定,在此不再赘述。
在一个实施例中,提供了一种计算机设备,其内部结构图可以如图9所示。该计算机设备包括通过装置总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作装置、计算机程序和数据库。该内存储器为非易失性存储介质中的操作装置和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种固态硬盘的固件加载方法。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种固态硬盘的固件加载方法,其特征在于,所述方法包括:
固态硬盘上电启动后运行BootRom程序,并通过BootRom程序对NandFlash控制器进行初始化;
读取NandFlash中的全***管理信息到SRAM指定的第一地址处;
从所述全***管理信息中找到BootLoader程序在NandFlash中的位置,并将所述BootLoader程序加载到SRAM指定的第二地址处;
对所述BootLoader程序进行CRC校验;
若所述BootLoader程序校验成功,则BootRom程序跳转到SRAM指定的第二地址处并运行BootLoader程序;
BootLoader程序从SRAM指定的第一地址处的全***管理信息找到***数据全***固件程序在NandFlash中的存储位置,并将所述全***固件程序加载到SRAM指定的第三地址处;
对所述全***固件程序进行CRC校验;
若所述全***固件程序校验成功,则BootLoader程序跳转到SRAM指定的第三地址处,并运行所述全***固件程序。
2.根据权利要求1所述的固态硬盘的固件加载方法,其特征在于,在所述读取NandFlash中的全***管理信息到SRAM指定的第一地址处的步骤之后还包括:
判断读取NandFlash中的全***管理信息是否成功;
若读取失败,则BootRom程序输出第一错误信息到内部指定寄存器并进入到BootRom下载模式;
若读取成功,则从所述全***管理信息中找到BootLoader程序在NandFlash中的位置并将所述BootLoader程序加载到SRAM指定的第二地址处。
3.根据权利要求2所述的固态硬盘的固件加载方法,其特征在于,在所述对所述BootLoader程序进行CRC校验的步骤之后还包括:
若读取BootLoader程序失败或者校验失败,则BootRom程序输出第二错误信息到内部指定寄存器并进入到BootRom下载模式。
4.根据权利要求3所述的固态硬盘的固件加载方法,其特征在于,在所述对所述全***固件程序进行CRC校验的步骤之后还包括:
若读取全***固件的过程失败或者校验失败,则BootLoader程序输出第三错误信息到内部指定寄存器并进入到BootLoader下载模式。
5.根据权利要求1-4任一项所述的固态硬盘的固件加载方法,其特征在于,所述方法还包括:
固态硬盘上电启动后运行BootRom程序,并等待进入下载模式;
将量产程序下载到SRAM指定地址处,并跳转到所述指定地址以使所述量产程序运行起来;
量产程序执行低格命令,对全***管理信息进行初始化;
量产程序执行下载BootLoader程序命令,在NandFlash内部申请存储位置将BootLoader程序进行保存,并将所述BootLoader程序保存的位置信息更新到全***管理信息中;
量产程序执行下载全***固件的命令,在NandFlash内部申请存储位置将全***固件进行保存,并将所述全***固件保存的位置信息更新到全***管理信息中。
6.一种固态硬盘的固件加载装置,其特征在于,所述装置包括:
初始化模块,所述初始化模块用于固态硬盘上电启动后运行BootRom程序,并通过BootRom程序对NandFlash控制器进行初始化;
信息读取模块,所述信息读取模块用于读取NandFlash中的全***管理信息到SRAM指定的第一地址处;
第一加载模块,所述第一加载模块用于从所述全***管理信息中找到BootLoader程序在NandFlash中的位置,并将所述BootLoader程序加载到SRAM指定的第二地址处;
第一校验模块,所述第一校验模块用于对所述BootLoader程序进行CRC校验;若所述BootLoader程序校验成功,则BootRom程序跳转到SRAM指定的第二地址处并运行BootLoader程序;
第二加载模块,所述第二加载模块用于BootLoader程序从SRAM指定的第一地址处的全***管理信息找到***数据全***固件程序在NandFlash中的存储位置,并将所述全***固件程序加载到SRAM指定的第三地址处;
第二校验模块,所述第二校验模块用于对所述全***固件程序进行CRC校验;若所述全***固件程序校验成功,则BootLoader程序跳转到SRAM指定的第三地址处,并运行所述全***固件程序。
7.根据权利要求6所述的固态硬盘的固件加载装置,其特征在于,所述装置还包括判断模块,所述判断模块用于:
判断读取NandFlash中的全***管理信息是否成功;
若读取失败,则BootRom程序输出第一错误信息到内部指定寄存器并进入到BootRom下载模式;
若读取成功,则从所述全***管理信息中找到BootLoader程序在NandFlash中的位置并将所述BootLoader程序加载到SRAM指定的第二地址处。
8.根据权利要求7所述的固态硬盘的固件加载装置,其特征在于,所述第一校验模块还用于:
若读取BootLoader程序失败或者校验失败,则BootRom程序输出第二错误信息到内部指定寄存器并进入到BootRom下载模式。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110431701.0A CN113110891B (zh) | 2021-04-21 | 2021-04-21 | 固态硬盘的固件加载方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110431701.0A CN113110891B (zh) | 2021-04-21 | 2021-04-21 | 固态硬盘的固件加载方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113110891A CN113110891A (zh) | 2021-07-13 |
CN113110891B true CN113110891B (zh) | 2022-03-29 |
Family
ID=76719148
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110431701.0A Active CN113110891B (zh) | 2021-04-21 | 2021-04-21 | 固态硬盘的固件加载方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113110891B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114253619A (zh) * | 2021-12-21 | 2022-03-29 | 苏州忆联信息***有限公司 | SSD多级Boot的方法、装置、计算机设备及存储介质 |
CN114356455B (zh) * | 2022-01-06 | 2023-12-05 | 深圳忆联信息***有限公司 | 提升芯片启动可靠性的方法及装置 |
CN116628767B (zh) * | 2023-07-20 | 2023-10-17 | 常州楠菲微电子有限公司 | 一种预防***启动后flash***固件攻击方法及flash控制器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102122531A (zh) * | 2011-01-27 | 2011-07-13 | 浪潮电子信息产业股份有限公司 | 一种提高大容量固态硬盘使用稳定性的方法 |
CN109901890A (zh) * | 2019-03-07 | 2019-06-18 | 深圳忆联信息***有限公司 | 一种控制器加载多核固件的方法、装置、计算机设备及存储介质 |
CN111428233A (zh) * | 2020-03-18 | 2020-07-17 | 西安电子科技大学 | 一种嵌入式设备固件的安全性分析方法 |
CN111625199A (zh) * | 2020-05-28 | 2020-09-04 | 深圳忆联信息***有限公司 | 提升固态硬盘数据通路可靠性的方法、装置、计算机设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI494849B (zh) * | 2013-05-06 | 2015-08-01 | Phison Electronics Corp | 韌體碼載入方法、記憶體控制器與記憶體儲存裝置 |
-
2021
- 2021-04-21 CN CN202110431701.0A patent/CN113110891B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102122531A (zh) * | 2011-01-27 | 2011-07-13 | 浪潮电子信息产业股份有限公司 | 一种提高大容量固态硬盘使用稳定性的方法 |
CN109901890A (zh) * | 2019-03-07 | 2019-06-18 | 深圳忆联信息***有限公司 | 一种控制器加载多核固件的方法、装置、计算机设备及存储介质 |
CN111428233A (zh) * | 2020-03-18 | 2020-07-17 | 西安电子科技大学 | 一种嵌入式设备固件的安全性分析方法 |
CN111625199A (zh) * | 2020-05-28 | 2020-09-04 | 深圳忆联信息***有限公司 | 提升固态硬盘数据通路可靠性的方法、装置、计算机设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
LXI仪器固件远程升级设计与实现;刘兆庆 等;《测控技术》;20120722;第31卷(第7期);第1-4页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113110891A (zh) | 2021-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113110891B (zh) | 固态硬盘的固件加载方法、装置、计算机设备及存储介质 | |
US7275153B2 (en) | Booting and boot code update system using boot strapper code to select between a loader and a duplicate backup loader | |
KR101375992B1 (ko) | 불휘발성 메모리로부터의 디바이스 부트업 동안 에러들의 핸들링 | |
US7908469B2 (en) | Method for executing power on self test on a computer system and updating SMBIOS information partially | |
CN111813428A (zh) | 终端固件的升级方法、装置、电子设备及存储介质 | |
CN110737481A (zh) | 基于多重备份引导程序的嵌入式linux操作***的启动方法 | |
CN112433769A (zh) | 一种bmc启动方法、装置、计算机设备及存储介质 | |
CN109634781A (zh) | 一种基于嵌入式程序双区备份映像***及启动方法 | |
CN111857882B (zh) | 可扩展的ssd开卡固件加载方法、装置、计算机设备及存储介质 | |
CN117130672A (zh) | 服务器启动流程控制方法、***、终端及存储介质 | |
US7490321B2 (en) | Method for updating firmware via determining program code | |
CN116700765A (zh) | 伺服驱动器的固件升级方法及装置、伺服驱动器 | |
CN113114730B (zh) | 升级方法、装置、终端设备及存储介质 | |
CN114741091A (zh) | 固件加载方法、装置、电子设备及计算机可读存储介质 | |
US7490232B2 (en) | Disk device using disk to rewrite firmware and firmware determination method | |
US11768669B2 (en) | Installing application program code on a vehicle control system | |
CN112667444A (zh) | 一种***升级方法、存储介质及终端设备 | |
CN113760623A (zh) | 固态硬盘tcg协议功能测试方法、装置及计算机设备 | |
CN118092989B (zh) | 一种存储器的固件升级方法、***、设备及介质 | |
CN116719567A (zh) | 芯片程序更新方法、装置、计算机设备及存储介质 | |
CN110018968B (zh) | 一种数据读取方法、电子设备及计算机存储介质 | |
CN117453239A (zh) | 一种基于底层镜像文件的双冗余设计方法 | |
CN113064608A (zh) | 一种ota升级方法、装置、设备和介质 | |
CN117932625A (zh) | 一种嵌入式设备的升级方法、装置、电子设备及存储介质 | |
CN118276985A (zh) | Risc-v芯片启动方法、设备及介质 |
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 |