本发明涉及到固态硬盘领域,特别是涉及到一种提升固件测试效率的方法、装置及存储介质。
背景技术:
fw,英文全称:firmware,中文名称:固件,fw对固态硬盘的性能发挥有着极其重要的影响,不同的版本的fw对固态硬盘性能起到直接的影响。一个全新的fw可以是对之前固态硬盘的fw的优化和改进,例如弥补前一个fw存在的bug或性能不够优秀的问题,也可能是两个不同版本的fw间存在不同的优劣势。
固态硬盘研发设计阶段,需要配置不同版本或参数配置的fw去测试固态硬盘性能。如图1所示,在当前测试环境,现有的解决方案是每次更换新版本fw都会覆盖之前版本的fw信息,且需要掉电重启使用专门工具下载新版本fw并覆盖原fw信息,若再想测试之前某版本fw,则需要用专门工具重新下载,比较费时费力。
因此,有必要提出一种提升固件测试效率的方法、装置及存储介质,用于提高固态硬盘的固件测试效率。
技术实现要素:
为了解决上述现有技术的缺陷,本发明的目的是提供一种提升固件测试效率的方法、装置及存储介质。
为达到上述目的,本发明的技术方案是:
一种提升固件测试效率的方法,包括以下步骤:
芯片上电,运行bootloader;
bootloader读取内存中存放的固件版本编号信息;
根据待加载固件版本编号选择并加载对应固件。
进一步地,所述根据待加载固件版本编号选择并加载固件步骤之后,包括,
判断固件是否正常启动;
若启动失败,则自动轮询固件版本编号,选择下一个固件版本编号;
若启动成功,则判断是否增加新版本固件;
若增加,则下载新版本固件,存放于内存中。
进一步地,所述将新版本固件关联唯一对应的固件版本编号步骤之后,包括,
将新版本固件关联唯一对应的固件版本编号;
动态绑定固件版本编号和固件存放内存基地址。
进一步地,所述芯片上电,运行bootloader步骤,包括,
芯片上电,启动bootrom;
bootrom从nor内存中读取并运行bootloader。
进一步地,所述根据待加载固件版本编号选择并加载对应固件步骤之后,包括,
判断是否更换固件版本;
若更换,则选择要更换的固件版本编号,根据固件版本编号选择并加载对应固件。
本发明还提出了一种提升固件测试效率的装置,包括:
上电运行单元,用于芯片上电,运行bootloader;
编号获取单元,用于bootloader读取内存中存放的固件版本编号信息;
选择加载单元,用于根据待加载固件版本编号选择并加载对应固件。
进一步地,还包括:启动判断单元,用于判断固件是否正常启动;
编号轮询单元,用于在固件启动失败时,自动轮询固件版本编号,选择下一个固件版本编号;
新增判断单元,用于在固件启动成功,判断是否增加新版本固件;
新增存放单元,用于在增加新版本固件时,下载新版本固件,存放于内存中。
进一步地,还包括:编号关联单元,用于将新版本固件关联唯一对应的固件版本编号;
地址绑定单元,用于动态绑定固件版本编号和固件存放的内存基地址。
进一步地,还包括:更换判断单元,用于判断是否更换固件版本;在更换时,选择要更换的固件版本编号,并根据固件版本编号选择并加载对应固件。
本发明一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上任一项所述的提升固件测试效率的方法。
本发明的有益效果是:本方案将已经测试过的固件存放在ssd中连续的内存空间,并不覆盖之前使用的固态信息,而是存放在其后连续的内存空间并对其进行编号,可以根据不同测试环境和测试要求,便捷选择之前所有使用过的固件,无需重新下载,提高了ssd的固件测试效率。
附图说明
图1为现有的固态硬盘加载固件的方法流程图;
图2为本发明一种提升固件测试效率的方法的流程图;
图3为本发明一种提升固件测试效率的方法的另一流程图;
图4为本发明一种判断是否更换固件版本步骤的流程图;
图5为本发明芯片上电,运行bootloader步骤的流程图;
图6为本发明一种提升固件测试效率的方法的诗句应用流程图;
图7为本发明一种提升固件测试效率的装置的结构原理框图。
具体实施方式
为阐述本发明的思想及目的,下面将结合附图和具体实施例对本发明做进一步的说明。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明,本发明实施例中所有方向性指示(诸如上、下、左、右、前、后等)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变,所述的连接可以是直接连接,也可以是间接连接。
另外,在本发明中如涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
如无特别说明,本文中的“/”代表含义为“或”。
bootrom是指用于从nor中加载bootloader的一段程序。
nor内存是一种非易失闪存技术。
bootloader是嵌入式系统在加电后执行的第一段代码,在它完成cpu和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行。
fw(英文全称:firmware,中文:固件),固件版本是影响硬盘性能的一个方面,一个全新的fw就是对之前硬盘fw的优化和改进,可能是弥补前一个fw存在的bug或性能不够优秀的问题,也有可能是两个不同的fw间有不同的优劣势,比如一个fw版本性能很好但是耗能很高,另一版本的fw就可能是性能没有那么突出但是耗能很低,可以说每个fw版本都有自己的特色所在。
pcie为peripheralcomponentinterconnectexpress,是一种高速串行计算机扩展总线标准。
参照图2-6,本发明提出一种提升固件测试效率的方法,包括以下步骤:
s10、芯片上电,运行bootloader;
s20、bootloader读取内存中存放的固件版本编号信息;
s30、根据待加载固件版本编号选择并加载对应固件。
对于步骤s10,为芯片上电,启动bootrom,bootrom从nor内存中读取并运行bootloader,bootloader可以用于后续读取并加载不同版本的固件对ssd进行测试。
参考图5,步骤s10包括以下步骤:
s11、芯片上电,启动bootrom。
s12、bootrom从nor内存中读取并运行bootloader。
对于步骤s20,在当前测试环境,现有的解决方案是每次更换新版本固件都会覆盖之前版本的固件信息,若再想测试之前某版本固件时,则需要用专门工具重新下载,比较费时费力。
而在本方案中,在加载并运行新版本的固件时,并不覆盖之前版本的附件,而是将之前版本的固件存放在连续的内存空间中,并对所有版本的固件进行编号。在实际使用时,可以根据测试环境和测试要求,通过主机发送修改待加载固件版本编号,调用所有已测试版本固件,无需重新下载固件资源进行切换。这样在需要加载旧版本的固件时,就可以根据固件版本编号信息来从内存空间中直接获取到对应版本的固件,无需使用专用的工具进行专门下载,提高了测试效率。
具体的,一定大小且连续的内存用于存放所有测试版本的固件信息以及固件版本编号。通过预先读取内存中的固件版本编号信息,获取存放的固件信息,用于后续对应待加载固件版本编号来进行选择并加载。
对于步骤s30,bootloader从主机发送的指令中获取到待加载的fw版本编号,再根据待加载的fw版本编号信息从内存中对应加载固件并运行。每个测试版本的固件都关联有一个位移对应的版本编号,该编号作为该版本的固件id,可以直接通过id来获取到对应的固件,并将该固件通过bootloader加载运行,进行测试。
参考图3,步骤s30之后,包括,
s40、判断固件是否正常启动;
s41、若启动失败,则自动轮询固件版本编号,选择下一个固件版本编号;
s42、若启动成功,则判断是否增加新版本固件;
s43、若增加,则下载新版本固件,存放于内存中。
s44、将新版本固件关联唯一对应的固件版本编号;
s45、动态绑定固件版本编号和固件存放的内存基地址。
对于步骤s40-s43,在完成固件加载之后,对固件启动状态进行判断,根据固件启动状态来判断如何对固件文件进行处理。在固件启动失败时,自动轮询下一个固件版本编号,自动更新为待加载固件版本编号,并通过bootloader重新加载对应的固件进行运行。在固件正常启动时,需要进一步进行步骤s42的判断,进一步判断将该正常运行的固件增加为新版本固件,若内存中未存在相同版本的固件,则增加,下载该新版本固件,存放于内存中,以备后续继续调用。
对于步骤s44和s45,在将新版本固件存放在对应的内存时,自动为新版本固件关联一个唯一对应的固件版本编号,且将新版本固件信息顺序存放到指定连续内存区域内,所有版本的固件顺序存储,每个固件占据一块连续空间,并且将分配给固件的固件存放内存基地址与固件版本编号动态绑定,便于加载时可通过固件版本编号找到相应的固件信息,加速固件加载进程,提高固件加载效率。
其中,固件版本编号和固件一一对应,固件版本编号与内存基地址一一对应,通过固件版本编号可以获取到内存基地址,并根据内存基地址直接加载对应的固件进行测试,无需用所有电之后重启,并使用专门的工具下载新的固件。
参考图4,步骤s30之后还包括以下步骤:
s50、判断是否更换固件版本。
s51、若更换,则选择要更换的固件版本编号,根据固件版本编号选择并加载对应固件。
对于步骤s50-s51,在完成固件加载之后,根据测试的需要,可以选择需要更换的固件版本编号,将其作为新的待加载固件版本编号,实现固件版本的更换,无需使用专门的工具下载固件,也无需重启固态硬盘简单方便。
具体的,参考图6,提出了本发明一种提升固件测试效率的方法的具体应用实施例,具体步骤如下:
1、芯片上电,启动bootrom,下一步执行流程2。
2、bootrom从norflash中读取并运行bootloader,下一步执行流程3。
3、bootloader读取内存空间中存放的固件版本编号信息,下一步执行流程4。
4、根据待加载固件版本编号选择要加载的fw信息,下一步执行流程5。
5、判断fw启动情况:正常启动,下一步执行流程6;启动失败,下一步执行流程12。
6、判断是否增加新版本fw:是,下一步执行流程7;否,下一步执行流程10。
7、通过pcie下载新版本fw,自动分配内存空间。下一步执行流程8。
8、给新添加fw的分配固件版本编号,下一步执行流程9。
9、动态绑定固件版本编号和fw存放的内存基地址,下一步执行流程10。
10、判断是否切换fw:是,下一步执行流程11;否,下一步执行流程13。
11、更改待加载固件版本编号所在内存的值,选择要加载的fw编号,下一步执行流程4。
12、待加载固件版本编号自动轮询,自动选择下一个固件版本编号。
13、fw继续正常运行。
其中,fw为固件,flash为内存。
本方案将已经测试过的固件存放在ssd中连续的内存空间,并不覆盖之前使用的固态信息,而是存放在其后连续的内存空间并对其进行编号,可以根据不同测试环境和测试要求,便捷选择之前所有使用过的固件,无需重新下载,提高了ssd的固件测试效率。
参考图7,本发明还提出了一种提升固件测试效率的装置,包括:
上电运行单元10,用于芯片上电,运行bootloader。
编号获取单元20,用于bootloader读取内存中存放的固件版本编号信息。
选择加载单元30,用于根据待加载固件版本编号选择并加载对应固件。
启动判断单元40,用于判断固件是否正常启动。
编号轮询单元41,用于在固件启动失败时,自动轮询固件版本编号,选择下一个固件版本编号。
新增判断单元50,用于在固件启动成功,判断是否增加新版本固件。
新增存放单元60,用于在增加新版本固件时,下载新版本固件,存放于内存中。
编号关联单元61,用于将新版本固件关联唯一对应的固件版本编号。
地址绑定单元62,用于动态绑定固件版本编号和固件存放的内存基地址。
更换判断单元70,用于判断是否更换固件版本,在更换时,选择要更换的固件版本编号,并根据固件版本编号选择并加载对应固件。
对于上电运行单元10,为芯片上电,启动bootrom,bootrom从nor内存中读取并运行bootloader,bootloader可以用于后续读取并加载不同版本的固件对ssd进行测试。
对于编号获取单元20,在当前测试环境,现有的解决方案是每次更换新版本固件都会覆盖之前版本的固件信息,若再想测试之前某版本固件时,则需要用专门工具重新下载,比较费时费力。
而在本方案中,在加载并运行新版本的固件时,并不覆盖之前版本的附件,而是将之前版本的固件存放在连续的内存空间中,并对所有版本的固件进行编号。在实际使用时,可以根据测试环境和测试要求,通过主机发送修改待加载固件版本编号,调用所有已测试版本固件,无需重新下载固件资源进行切换。这样在需要加载旧版本的固件时,就可以根据固件版本编号信息来从内存空间中直接获取到对应版本的固件,无需使用专用的工具进行专门下载,提高了测试效率。
具体的,一定大小且连续的内存用于存放所有测试版本的固件信息以及固件版本编号。通过预先读取内存中的固件版本编号信息,获取存放的固件信息,用于后续对应待加载固件版本编号来进行选择并加载。
对于选择加载单元30,bootloader从主机发送的指令中获取到待加载的fw版本编号,再根据待加载的fw版本编号信息从内存中对应加载固件并运行。每个测试版本的固件都关联有一个位移对应的版本编号,该编号作为该版本的固件id,可以直接通过id来获取到对应的固件,并将该固件通过bootloader加载运行,进行测试。
对于启动判断单元40、编号轮询单元41、新增判断单元50和新增存放单元60,在完成固件加载之后,对固件启动状态进行判断,根据固件启动状态来判断如何对固件文件进行处理。在固件启动失败时,自动轮询下一个固件版本编号,自动更新为待加载固件版本编号,并通过bootloader重新加载对应的固件进行运行。在固件正常启动时,需要进一步进行判断,进一步判断将该正常运行的固件增加为新版本固件,若内存中未存在相同版本的固件,则增加,下载该新版本固件,存放于内存中,以备后续继续调用。
对于编号关联单元61和地址绑定单元62,在将新版本固件存放在对应的内存时,自动为新版本固件关联一个唯一对应的固件版本编号,且将新版本固件信息顺序存放到指定连续内存区域内,所有版本的固件顺序存储,每个固件占据一块连续空间,并且将分配给固件的固件存放内存基地址与固件版本编号动态绑定,便于加载时可通过固件版本编号找到相应的固件信息,加速固件加载进程,提高固件加载效率。
其中,固件版本编号和固件一一对应,固件版本编号与内存基地址一一对应,通过固件版本编号可以获取到内存基地址,并根据内存基地址直接加载对应的固件进行测试,无需用所有电之后重启,并使用专门的工具下载新的固件。
对于更换判断单元70,在完成固件加载之后,根据测试的需要,可以选择需要更换的固件版本编号,将其作为新的待加载固件版本编号,实现固件版本的更换,无需使用专门的工具下载固件,也无需重启固态硬盘简单方便。
本方案将已经测试过的固件存放在ssd中连续的内存空间,并不覆盖之前使用的固态信息,而是存放在其后连续的内存空间并对其进行编号,可以根据不同测试环境和测试要求,便捷选择之前所有使用过的固件,无需重新下载,提高了ssd的固件测试效率。
具体的,本发明一具体实施例还提出一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的提升固件测试效率的方法。所述存储介质可以是前述服务器的内部存储单元,例如服务器的硬盘或内存。所述存储介质也可以是所述设备的外部存储设备,例如所述设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储介质还可以既包括所述设备的内部存储单元也包括外部存储设备。
本方案将已经测试过的固件存放在ssd中连续的内存空间,并不覆盖之前使用的固态信息,而是存放在其后连续的内存空间并对其进行编号,可以根据不同测试环境和测试要求,便捷选择之前所有使用过的固件,无需重新下载,提高了ssd的固件测试效率。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。