发明内容
为解决以上问题,本发明提出了一种稳定BIOS更新的方法、设备及存储介质,其中方法包括:
响应于第一按键按下,判断特定USB接口是否有存储介质接入;
响应于所述特定USB接口存在存储介质接入,进一步检测所述特定USB接口接入的存储介质中是否存在特定格式的BIOS固件程序;
响应于所述存储介质中存在特定格式的BIOS固件程序,判断所述存储介质中的BIOS固件程序是否与存储板模块中已存储的BIOS固件程序相同;
响应于所述存储介质中的BIOS固件程序与存储板模块中已存储的BIOS固件程序不同,则将所述存储介质中的BIOS固件程序保存到所述存储板模块中;
响应于向所述存储板模块中保存所述存储介质中的BIOS固件程序已完成,将已保存的所述BIOS固件程序安装到BIOS中;
响应于所述已保存的BIOS固件程序安装到BIOS中完成并重启成功,将已保存的BIOS固件程序对应的有效标记的值标记为有效。
在本发明的一些实施方式中,判断所述存储介质中的BIOS固件程序是否与存储板模块中已存储的BIOS固件程序相同包括:
对所述存储介质中的BIOS固件程序文件进行哈希运算,并将哈希运算结果作为版本号与所述存储板模块中已保存的BIOS固件程序的版本号作对比;
若比对结果相同,则确认所述BIOS固件程序与所述存储板模块存储的BIOS固件程序相同;
若比对结果不同,则确认所述BIOS固件程序与所述存储板模块存储的BIOS固件程序不同。
在本发明的一些实施方式中,方法还包括:
响应于所述特定USB接口不存在存储介质接入,发出通知并实时监控第二按键的状态;
响应于第二按键被按下,判断所述存储板模块是否已存有储有效的BIOS固件程序;
响应于所述存储板模块中存储有有效的BIOS固件程序,将存储时间最近的所述有效的BIOS固件程序安装到BIOS中。
在本发明的一些实施方式中,方法还包括:
若将存储时间最近的所述有效的BIOS固件程序安装到BIOS中不成功,重复执行所述安装过程,并记录安装失败次数;
响应于所述安装失败次数超过预设次数,则将所述存储时间最近的所述有效BIOS固件程序的有效标记的值标记为无效,发出通知并删除所述无效的BIOS固件程序。
在本发明的一些实施方式中,方法还包括:
响应于所述删除所述无效的BIOS固件程序成功,发出通知并再次从所述存储板模块中选择时间最近的有效BIOS固件程序安装到BIOS中。
在本发明的一些实施方式中,方法还包括:
响应于所述存储模块中不存在有效的BIOS固件程序或不存在BIOS固件程序,则发出通知并关闭计算机。
在本发明的一些实施方式中,方法还包括:
响应于所述USB接口不存在存储介质接入且存储板模块中无有效的BIOS固件程序,或者特定USB接口接入的存储介质中的BIOS固件程序的版本号在所述存储板模块中被标记为无效且存储板模块中无有效的BIOS固件程序,则发出通知并关闭计算机。
在本发明的一些实施方式中,方法还包括:响应于所述第二按键在预设时间内没有被按下,则将计算机关闭。
在本发明的一些实施方式中,方法还包括:
若所述哈希运算结果与所述存储板模块中已保存的BIOS固件程序的版本号对比结果相同但所述存储板模块中不存在所述BIOS固件程序,则发出通知并关机。
本发明实施方式的另一方面还公开了一种计算机设备,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现上述任意一项所述方法的步骤。
本发明实施方式的再一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述任意一项所述方法的步骤。
通过本发明提供的一种稳定BIOS更新的方法,具体通过公开的存储板模块配合第一按键和第二按键,通过将可靠的BIOS固件程序备份在存储板模块中为用户提供一种稳定可靠且人性化的BIOS更新方案,可很好解决因BIOS固件程序问题导致的BIOS更新失败使得用户无法及时使用计算机及计算机的“自救”等问题。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
如图1所示,本发明的一方面提出了一种稳定BIOS更新的方法,包括:
步骤S100、响应于第一按键按下,判断特定USB接口是否有存储介质接入;
步骤S110、响应于所述特定USB接口存在存储介质接入,进一步检测所述特定USB接口接入的存储介质中是否存在特定格式的BIOS固件程序;
步骤S120、响应于所述存储介质中存在特定格式的BIOS固件程序,判断所述存储介质中的BIOS固件程序是否与存储板模块中已存储的BIOS固件程序相同;
步骤S130、响应于所述存储介质中的BIOS固件程序与存储板模块中已存储的BIOS固件程序不同,则将所述存储介质中的BIOS固件程序保存到所述存储板模块中;
步骤S140、响应于向所述存储板模块中保存所述存储介质中的BIOS固件程序已完成,将已保存的BIOS固件程序安装到BIOS中;
步骤S150、响应于所述已保存的BIOS固件程序安装到BIOS中完成并重启成功,将已保存的BIOS固件程序对应的有效标记的值标记为有效。
在本实施例中,本发明所提供的方法不限于执行的实体,可通过编程的方式移植到嵌入式设备中,例如单片机平台、ARM嵌入式平台或通过FPGA实现,并作为执行本发明方法的实体。此外,存储板模块可采用flash等存储芯片作为存储BIOS固件程序的介质。
在步骤S100中,当用户的计算机出现BIOS无法使用时,用户可通过按下第一按键以激活本发明所提供的稳定BIOS更新方法。当检测到第一按键被按下一定时间(防止用户误触而启动BIOS稳定更新方法,可根据需要设定按下时间为5秒),则读取已经预先规定好的特定USB(可通过在主板的接口处进行特殊颜色标记)接口的状态,并判断该USB接口是否插入U盘等存储介质。
在步骤S110中,若检测到特定的USB接口存在U盘等存储介质接入,则进一步检测并判断该存储介质中是否存在新的BIOS固件程序,在本实施例中,为方便后续方法执行,本申请仅以提供对一种格式的BIOS文件的支持为例,但是可根据计算机硬件的平台不同或者使用环境不同选择支持不同的BIOS格式文件,例如:如果在本实施例中选择.bin格式的文件作为支持的BIOS文件,则本实施例只对U盘等存储介质中的.bin格式的文件进行检测。若存在该格式的文件,则将其认为新的BIOS固件程序。如果在本实施例中选择的是.ROM格式的文件作为支持的BIOS文件,若存在的BIOS固件程序是.bin格式的新的BIOS固件程序,也选择忽视。也就是说可以选择多种格式的BIOS文件,但一旦选择其中一种格式则在实施例中的方法执行时只认可一种。
在步骤S120中,若从所述存储介质中检测到了选定格式的新的BIOS固件程序,为加快BIOS更新的速度提升用户的使用体验,进一步判断存储板模块中是否存储有与新的BIOS固件程序相同的BIOS固件程序,因为在本发明中使用了具有一定存储空间的存储板模块,可用存储板模块存储可用的BIOS固件程序。所以需要对存储介质中新的BIOS固件程序进行判断,是否在存储板模块中已经保存,如果在存储板模块中存储有与新的BIOS固件程序相同的BIOS固件程序,为节省升级更新的流程及时间则不需要将存储介质中的新的BIOS固件程序保存到存储板模块。
在步骤S130中,若在步骤S120中检测到的BIOS固件程序与存储的BIOS固件程序不同,则说明存储介质中的BIOS固件程序是新的BIOS固件程序,与存储板模块中存储的BIOS固件程序不同,可用于升级BIOS(只能证明该BIOS固件程序与之前使用的不同,不能证明是否可用,需要安装并测试)。在此情况下,将存储介质中新的BIOS固件程序保存到存储板模块中。
在步骤S140中,若在步骤S130中对BIOS固件程序的存储已经完成,出于稳定性的及读写速度的考虑,使用存储板模块中已保存的BIOS固件程序向BIOS芯片进行安装,防止特定的USB接口上的存储介质因外力因素出现连接异常的情况,因此,直接读取新存储板模块中已保存的BIOS固件程序,并将其安装到BIOS中,安装过程中嵌入第一按键中的多彩指示灯显示为蓝色,安装完成后第一按键的多彩指示灯显示为绿色闪烁3次,并重启计算机。
在步骤S150中,若在步骤S140中对BIOS固件程序的安装已经完成,并且检测到主板上电启动,BIOS完成开机自检并启动系统,计算机正常运行后。则证明此次更新BIOS用的BIOS固件程序是有效的BIOS固件程序。因此,将在步骤S130中已保存的BIOS固件程序对应的有效标记置为有效,所述有效标记与BIOS固件程序以及该BIOS固件程序的版本号三者对应,其中版本号和有效标记非必要原因不会被删除,在一些实施例中,可能会对标记为无效的BIOS固件程序进行清楚操作。
在本发明的一些实施例中,判断所述存储介质中的BIOS固件程序是否与存储板模块中已存储的BIOS固件程序相同包括:
对所述存储介质中的BIOS固件程序文件进行哈希运算,并将哈希运算结果作为版本号与所述存储板模块中已保存的BIOS固件程序的版本号作对比;
若比对结果相同,则确认所述BIOS固件程序与所述存储板模块存储的BIOS固件程序相同;
若比对结果不同,则确认所述BIOS固件程序与所述存储板模块存储的BIOS固件程序不同。
在本实施例中,在检测存储介质中的BIOS固件程序之后,为判断该BIOS固件程序是否为从未使用过的或有效的,需要对存储介质中的BIOS固件程序进行校验。而在本发明中选择对该存储介质中的新的BIOS固件程序进行哈希计算,通过哈希计算获取到的哈希值作为版本号。不同于现有技术中在BIOS固件程序的文件属性部分以签名的形式给出版本号,本发明使用哈希值作为版本号可避免现有技术中出现的版本号相同,BIOS固件程序不同的情况。因为大多数主板厂商发行的BIOS固件程序,可被DIY发烧友通过专业软件的方式实现修改,为充分发挥主板上CPU或内存等设备的性能而进行BIOS参数的调校。
例如,如果某DIY玩家对新的BIOS固件程序进行更改,BIOS固件程序的版本号与修改后的相同,如果修改后的BIOS固件程序安装到BIOS之后发现BIOS出现BUG或错误不能运行,并且在存储板模块中对该BIOS的版本号对应的有效标记被记录为无效,则DIY玩家在重新修改BIOS固件程序重新安装时,则会出现被标记为无效而无法安装的情况。因为其对BIOS的逻辑或参数修改并没有更改版本号,则使得对可能有效的BIOS固件程序出现误判的情况。所以为避免这一现象的发生,选择对BIOS固件程序进行哈希运算,并将哈希运算的结果作为版本号,只要BIOS固件程序被修改,其哈希值就会改变,自动被认为是新的BIOS版本。通过这一方式可有效区分不同的BIOS固件程序。使得用户的使用体验更加方便。
如图2所示,在本发明的一些实施例中,方法还包括:
步骤S310、响应于所述特定USB接口不存在存储介质接入,发出通知并实时监控第二按键的状态;
步骤S320、响应于第二按键被按下,判断所述存储板模块是否已存储有有效的BIOS固件程序;
步骤S330响应于所述存储板模块中存储有有效的BIOS固件程序,将存储时间最近的所述有效的BIOS固件程序安装到BIOS中。
在本实施例中,为方便用户的使用,当用户的在按下第一按键时,则说明用户的BIOS程序已经出现更新异常或其他不能使用的情况,因此尝试通过USB重新安装BIOS固件程序的操作。如果从特定USB接口没有检测到新的BIOS固件程序(可能没插入U盘等存储介质或U盘等存储介质中不存在特定格式的新的BIOS固件程序)。在这种情况下可以使用存储板模块中的已存储的BIOS固件程序进行BIOS的更新安装(或恢复)。此时,例如第一按键的多彩指示灯显示为红色,如果用户按下第二按键5秒,则从存储板模块中,选择保存时间与当前时间最接近的且有效标记为有效BIOS固件程序,并将该BIOS固件程序安装到BIOS中,在安装过程中控制嵌入在第二按键中的多彩指示灯显示为蓝色。同样判断安装后的运行结果以更新该最近BIOS固件程序的有效标记的值。
在本发明的一些实施例中,方法还包括:
若将存储时间最近的所述有效的BIOS固件程序安装到BIOS中不成功,重复执行所述安装过程,并记录安装失败次数;
响应于所述安装失败次数超过预设次数,则将所述存储时间最近的所述有效BIOS固件程序的有效标记的值标记为无效,发出通知并删除所述无效的BIOS固件程序。
在本实施例中,如果从存储板模块中的BIOS固件程序的在安装到BIOS中还是失败(包括安装后重启失败,及安装过程出现异常),为防止一些不稳定因素的出现(断电或其他原因使安装过程被打断),选择重复安装3次,若3次安装均不成功,则将该最接近当前时间的BIOS固件程序的有效标记更新为无效,为节省存储板模块的存储空间,删除该最接近当前时间的BIOS固件程序,但保留该BIOS固件程序对应的版本号以及有效标记。
在本发明的一些实施方式中,方法还包括:
响应于所述删除所述无效的BIOS固件程序成功,发出通知并再次从所述存储板模块中选择时间最近的有效BIOS固件程序安装到BIOS中。
在本实施例中,在删除一个BIOS固件程序之后并对删除的BIOS固件程序的版本号对应的有效标记标志位置为无效后。将第二按键的多彩指示灯显示为红色和绿色交替闪烁三次,以提醒用户现阶段的操作流程。并且从存储板模块再次获取存储时间离当前时间最接近的BIOS固件程序并安装到BIOS中,重复执行上述过程,直到安装的BIOS可用,计算机正常启动。
在本发明的一些实施方式中,方法还包括:
响应于所述存储模块中不存在有效的BIOS固件程序或不存在BIOS固件程序,则发出通知并关闭计算机。
在本实施例中,在经过多次的从存储板模块中获取已存储的BIOS固件程序进行安装皆失败或存储板模块根本就没存储过BIOS固件程序,在第一种情况下,可能是BIOS芯片或主板上BIOS芯片的周围电路出现故障并非是BIOS固件程序不能使用。因此将计算机关闭,通过嵌入在第二按键中的多彩指示灯显示红色每秒3次的频率显示5秒后关闭计算机。同样若存储板模块中并未存储有效的BIOS固件程序,同样通过嵌入在第二按键中的多彩指示灯显示红色每秒3次的频率显示5秒后关闭计算机。
在本发明的一些实施方式中,方法还包括:
响应于所述USB接口不存在存储介质接入且存储板模块中无有效的BIOS固件程序,或者特定USB接口接入的存储介质中的BIOS固件程序的版本号在所述存储板模块中被标记为无效且存储板模块中无有效的BIOS固件程序,则发出通知并关闭计算机。
在本实施例中,如果特定USB接口没有存储介质接入,并且存储板模块总也不存在有效的BIOS固件程序,以及存储板模块没有有效的BIOS固件程序被备份,而且存储介质中的新的BIOS固件程序在经过哈希运算获取版本号后,与存储板模块存储的版本号所对应的有效标记为无效,说明该存储介质中新的BIOS固件程序已经经过三次的安装测试均为无效。这种情况下无法对BIOS进行更新或恢复,则通过嵌入在第二按键中的多彩指示灯显示红色每秒3次的频率显示5秒后关闭计算机。
在本发明的一些实施方式中,方法还包括:响应于所述第二按键在预设时间内没有被按下,则将计算机关闭。
在本实施例中,如果第一按键被按下后,从特定USB接口无法获取可用的新的BIOS固件程序,且第二按键在10秒内依然没有被按下,则说并未执行从存储板模块中存储的BIOS固件程序的动机,因此不需要执行从存储板模块选择BIOS程序安装的流程。
在本发明的一些实施方式中,方法还包括:
若所述哈希运算结果与所述存储板模块中已保存的BIOS固件程序的版本号对比结果相同但所述存储板模块中不存在所述BIOS固件程序,则发出通知并关机。
在本实施例中,如果存储板模块中不存在任何的BIOS固件程序,但是却存有一些BIOS固件程序的版本号(实质是哈希值),在这种情况下,说明所存储的版本号所对应的BIOS固件程序均是无效的BIOS固件程序,且已被删除。如果从存储介质中获取到的BIOS固件程序经过哈希计算后的哈希值并作为版本号在存储板模块存储的版本号列表中已经存在,则说明该存储介质中的BIOS固件程序已经被验证过且结果为无效,所以在这种情况下无需再去获取该版本号对应的有效标记,可直接判断该新的BIOS固件程序无效,则将所述嵌入在第一按键中的多彩指示灯显示红灯常亮5秒后关机。
本发明实施方式的另一方面还公开了一种计算机设备,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现上述任意一项所述方法的步骤。
本发明实施方式的再一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述任意一项所述方法的步骤。
通过本发明提供的一种稳定BIOS更新的方法,通过对BIOS固件程序进行哈希运算获取哈希值并将哈希值作为版本号以区分,并通过存储板模块存储有效的BIOS固件程序以进行BIOS固件程序异常后的更新及恢复操作。具体通过公开的存储板模块配合第一按键和第二按键,通过将可靠的BIOS固件程序备份在存储板模块中为用户提供一种稳定可靠且人性化的BIOS更新方案,可很好解决因BIOS固件程序问题导致的BIOS更新失败使得用户无法及时使用计算机及“自救”等问题。