CN113741929A - 通过Bootloader更新PSU固件的方法、装置及存储介质 - Google Patents
通过Bootloader更新PSU固件的方法、装置及存储介质 Download PDFInfo
- Publication number
- CN113741929A CN113741929A CN202110872685.9A CN202110872685A CN113741929A CN 113741929 A CN113741929 A CN 113741929A CN 202110872685 A CN202110872685 A CN 202110872685A CN 113741929 A CN113741929 A CN 113741929A
- Authority
- CN
- China
- Prior art keywords
- psu
- sub
- storage area
- target
- code segment
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 62
- 239000012634 fragment Substances 0.000 claims description 19
- 230000008569 process Effects 0.000 claims description 17
- 238000004891 communication Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 7
- 238000012795 verification Methods 0.000 claims description 4
- 238000005457 optimization Methods 0.000 claims description 2
- 239000002245 particle Substances 0.000 claims description 2
- 230000006870 function Effects 0.000 abstract description 11
- 230000008901 benefit Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 229920002492 poly(sulfone) Polymers 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及通过Bootloader更新PSU固件的方法、装置及存储介质。其中方法包括:将PSU中PSU固件的存储区域分成若干子存储区域;以函数为单位将PSU固件代码分为若干代码片段;将需要更新的目标代码片段发送给PSU,PSU的Boot更新程序根据目标代码片段获取目标子存储区域,并将目标子存储区域内原代码片段擦除,将目标代码片段写入相应的子存储区域内。本申请将PSU固件的存储区域分成若干子存储区域,在通过子存储区域来存储以函数为单位的代码片段,由于子存储区域的容量大于代码片段体积,修改一个代码片段不会影响其他子存储区域的代码片段,实现细化到代码片段地更新擦写,降低PSU固件更新的擦写量,加快固件更新的速度,降低PSU固件更新对负载的影响。
Description
技术领域
本申请涉及PSU固件更新领域,尤其涉及一种通过Bootloader更新PSU固件的方法、装置及存储介质。
背景技术
PSU一般包含初级侧IC芯片和次级侧IC芯片,其中初级侧IC芯片运行控制高压线路工作的程序,次级侧IC芯片运行控制低压工作和与上位机通信的程序,上述PSU中运行的程序称为PSU固件,PSU在使用过程中,如果发现PSU固件存在设计缺陷或者客户的功能需求发生变更,则需要变更PSU固件,然后将PSU固件刷新到PSU中。
目前,PSU常用的固件升级方法包括以下两种:
第一种是针对PSU内部IC芯片的电器规格,使用芯片原厂指定的烧录器、连接器和烧录软件进行烧录,该方式的优势在于可以一次性的刷新芯片内所有内存区域的代码,而且烧录的速度快,完成一次IC芯片烧录所需的时间一般在十几秒到几十秒之间,劣势在于,针对不同的PSU需要准备不同的烧录器、连接器和烧录软件,而且需要分别对初级侧IC芯片和次级侧IC芯片进行烧录,甚至初级侧IC芯片和次级侧IC芯片可能就需要不同的烧录器、连接器和烧录软件,另外采用该方式需要拆开PSU机壳,实现连接器与IC芯片的PIN对PIN连接,不方便批量进行更新。
第二种是通过Bootloader来更新PSU固件,第二种是将次级侧IC芯片的内存区域种配置固定的Bootloader引导区,由Bootloader引导区内的程序功能是使PSU进入Bootloader模式,在Bootloader模式下,PSU通过I2C总线从上位机接收PSU固件代码,将次级侧IC芯片的控制程序代码全部清空,写入新接收的次级侧代码,将初级侧芯片的控制代码情况,通过UART等通信方式将新接收的初级侧代码写入初级侧IC。该方式的优势在于不必拆PSU即可,通过PSU金手指种的I2C总线可直线标准协议通信,烧写过程只需一套能进行I2C通信的设备即可进行PSU固件刷新,可以采用服务器对PSU进行PSU固件刷新,方面对PSU进行批量刷新,但是该方式缺点在于烧录时间过长,一般完成一次PSU固件刷新所需的时间一般在5分钟左右,且烧录时,由于PSU无法为服务器提供正常的12V输出,因此烧录过程中,由PSU供电的服务器处于非冗余供电状态,不利于服务器的稳定。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供一种通过Bootloader更新PSU固件的方法、装置及存储介质。
第一方面,本申请提供一种通过Bootloader更新PSU固件的方法,包括:
将PSU中PSU固件的存储区域分成若干子存储区域;
以函数为单位将PSU固件代码分为若干代码片段,将所述代码片段存储于相应的子存储区域;
将需要更新的目标代码片段发送给PSU,PSU的Boot更新程序根据目标代码片段获取目标子存储区域,并将目标子存储区域内原代码片段擦除,将目标代码片段写入相应的子存储区域内。
更进一步地,将PSU的PSU固件的存储区域均分成容量相同的若干子存储区域。
更进一步地,以函数为单位将PSU固件代码分为若干代码片段,将所述代码片段存储于相应的子存储区域包括:
以函数为单位将PSU固件代码分为若干体积相近的代码片段;
为每个代码片段配置唯一的识别码;
将代码片段存储到相应的子存储区域,保存所述识别码与子存储区域的对应关系。
更进一步地,所述将需要更新的目标代码片段发送给PSU包括:
控制PSU启动Bootloader进入Boot模式,运行Boot更新程序,
通过连接PSU的I2C总线的烧写设备向PSU发送目标代码片段,所述目标代码片段配置继承于相应原代码片段的识别码。
更进一步地,PSU的Boot更新程序根据目标代码片段获取目标子存储区域包括:
获取目标代码片段的识别码;
利用获取的识别码检索所述识别码与子存储区域的对应关系来获取目标子存储区域。
更进一步地,所述Boot更新程序获取由若干识别码组成的设定格式的识别码数组,所述Boot更新程序根据设定格式的识别码数组识别出相应的目标子存储区域组。
更进一步地,所述PSU的Boot更新程序配置指向每个所述子存储区域起始地址的指针,Boot更新程序通过指针快速定位子存储区域的起始地址;从子存储区域的起始地址开始擦除子存储区域容量的长度以擦除原代码片段,从子存储区域的起始地址写入更新的代码片段。
更进一步地,还包括对目标代码片段进行验证:
通过SHA摘要算法处理目标代码片段获取第一摘要,将所述第一摘要发送给PSU;
获取目标代码片段后利用相同的SHA摘要算法处理目标代码片段获取第二摘要;
对比第一摘要和第二摘要相同的情况下执行目标代码片段的更新,否则提示目标代码片段被篡改。
第二方面,本申请提供一种实现通过Bootloader更新PSU固件的方法的装置,包括:存储划分模块,所述存储划分模块用于将PSU固件的存储区域划分成若干子存储区域;
代码片段配置模块,所述代码片段配置模块用于记录识别码与子存储区域的对应关系;
通信模块,所述通信模块用于接收目标代码片段和识别码;
校验模块,所述校验模块用于对目标代码片段进行验证;
目标子存储区域确定模块,所述目标子存储区域确定模块用于获取目标代码片段的识别码,并根据目标代码片段的识别码和所述识别码与子存储区域的对应关系确定目标子存储区域;
擦写模块,所述擦写模块用于擦除目标子存储区域的原代码片段,从目标子存储区域的起始地址写入目标代码片段。
第三方面,本申请提供一种实现通过Bootloader更新PSU固件的方法的存储介质,实现通过Bootloader更新PSU固件的方法的存储介质存储至少一条指令,执行所述指令实现所述的通过Bootloader更新PSU固件的方法。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
通过将PSU固件存储区域分成若干子存储区域,由所述子存储区域存储以函数为单位的PSU固件的代码片段。在进行PSU固件更新时通过目标代码片段替换相应的原代码片段。由于代码片段存储在不同的子存储区域,目标代码片段替换相应的原代码片段的过程不会对其他的原代码片段的存储位置产生影响。实现用更新的目标代码片段替换相应的原代码片段即可实现PSU固件更新,无需将原PSU固件全部擦除,再写入更新后的PSU固件;降低固件更新的擦写量,提高固件更新的速度,保证PSU的负载的稳定运行。
本申请中Bootloader利用针对每一子存储区域的指针快速定位到子存储区域,方便对子存储区域进行数据擦除和数据写入。
本申请通过SHA摘要算法计算目标代码片段的第一摘要并发送给PSU,Boot更新程序获取目标代码片段后利用相同的SHA算法计算目标代码片段的第二摘要,对比第一摘要和第二摘要判断目标代码片段是否被篡改,保证写入的目标代码片段的安全性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的通过Bootloader更新PSU固件的方法的流程图;
图2为本申请实施例提供的以函数为单位将PSU固件代码分为若干代码片段,将所述代码片段存储于相应的子存储区域的流程图;
图3为本申请实施例提供的将需要更新的目标代码片段发送给PSU的流程图;
图4为本申请实施例提供的根据目标代码片段获取目标子存储区域的流程图;
图5为本申请实施例提供的通过SHA摘要算法对目标代码片段进行验证的流程图;
图6为本申请实施例提供的中PSU固件存储区域以及代码片段的示意图;
图7为本申请实施例提供的实现通过Bootloader更新PSU固件的方法的装置的示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
在本文中,PSU指电源提供单元,Bootloader指PSU的引导模式。
在进行PSU固件升级修改时,为了保证PSU固件的稳定性,一般每次修改的代码所占比例很低,一般不足1%。即便是很少的修改,只要修改使得代码的大小发生变化,就会影响到后续其他代码片段的存储。因此,目前通过Bootloader进行固件更新过程中,会将PSU中PSU固件存储区域内的数据全部擦除,然后重新写入更新后的PSU固件。这就导致PSU固件更新过程中擦写数据两大,耗时长,服务器等PSU负载冗余稳定性降低。
实施例1
参阅图1所示,本申请实施例提供一种通过Bootloader更新PSU固件的方法,包括:
S100,将PSU中PSU固件的存储区域分成若干子存储区域。
具体的,以PSU中常见的64KFlash存储芯片为例进行说明。现有固件代码在Flash芯片中存储是连续的,按照这种存储方式,发生增加或删除或修改代码发生代码体积变化后,后续的代码在Flash中的存储位置会连带受到影响。因此为实现每次PSU固件更新只修改发生变更的代码,而不对其他代码的存储产生影响,需要将将PSU的PSU固件的存储区域均分成容量相同的若干子存储区域,如将64K的Flash存储芯片分为64个子存储区域,每个子存储区域的的容量为1kb。
在PSU的Boot更新程序配置指向每个所述子存储区域起始地址的指针。
在连续PSU固件代码连续存储的情况下,Boot更新程序默认指向固件存储区域的指针只有一个。在将Flash存储芯片按子存储区域进行分割后,在Boot更新程序针对每个子存储区域配置相应的指针,分别指向子存储区域的起始地址。Boot更新程序通过所述指针快速定位子存储区域的起始地址;从子存储区域的起始地址开始擦除子存储区域容量的长度以擦除原代码片段,从子存储区域的起始地址写入更新的代码片段。
S200,PSU出厂前进行PSU固件安装时,以函数为单位将PSU固件代码分为若干代码片段,将所述代码片段存储于相应的子存储区域。具体的,所述代码片段的体积要小于所述子存储区域的容量1kb。具体实施过程中,参阅图2所示,包括:
S201,以函数为单位将PSU固件代码分为若干体积相近的代码片段,每个所述代码片段的体积均小于1kb;
S202,为每个代码片段配置唯一的识别码,所述识别码为区每个所述代码片段的数字或者字符串;
S203,出厂前配置固件时,将代码片段写入到相应的子存储区域;
S204,保存所述识别码与子存储区域的对应关系。具体实施过程中,以子存储区域为键以识别码为值存储所述识别码与子存储区域的对应关系。
S300,对原代码片段进行修改形成目标代码片段,所述目标代码片段继承相应的原代码片段的识别码。修改的目标代码片段的体积要小于子存储区域的容量。
特别的,当删除修改需要将任一目标子存储区域的代码片段全部删除时,一种可行的目标代码片段为与目标子存储区域大小相同的全1数据,另一种可行的目标代码片段为空。Flash存储芯片在未写入数据时显示高电平,因此,将目标代码片段的内容改为全1数据即可实现目标子存储区域内代码片段的删除。
S400,将需要更新的目标代码片段发送给PSU。具体的,参与图3所示,将需要更新的目标代码片段发送给PSU包括:
S401,将PSU的金手指连接到烧写设备,使得PSU通过金手指中的I2C总线连接烧写设备。
S402,控制PSU启动Bootloader进入Boot模式,运行Boot更新程序。
S403,通过烧写设备向PSU发送目标代码片段和相应的识别码。具体实施过程中,通过支持I2C的烧写设备连接PSU金手指中的I2C总线,烧写设备通过PSU金手指中的I2C总线将目标代码片段发送给PSU。所述目标代码片段配置继承于相应原代码片段的识别码。
S500,PSU的Boot更新程序根据目标代码片段获取目标子存储区域。具体的,参阅图4所示,PSU的Boot更新程序根据目标代码片段获取目标子存储区域包括:
S501,Boot更新程序获取目标代码片段的识别码或识别码数组;所述识别码数组由若干目标代码片段的识别码按照设定的格式构成。Boot更新程序从识别码数组解析出相应的识别码。
S502,Boot更新程序利用获取的识别码检索所述识别码与子存储区域的对应关系来获取目标子存储区域。
S503,判断返回的目标子存储区域的结果是否为空(为空即相关识别码在所述识别码与子存储区域的对应关系中不存在),是则执行步骤S504和S505,否则执行步骤S506。
S504,Boot更新程序为该识别码分配一个空闲的子存储区域作为目标子存储区域,
S505,更新所述识别码与子存储区域的对应关系。
S506,以返回的子存储区域为目标子存储区域。
当获取一个识别码时,检索确定一个相应的目标子存储区域。当获取到识别码数组时,依照顺序解析处相应的识别码,根据识别码确定相应的目标子存储区域,依次添加到目标子存储区域组中,直至识别码数组中的识别码处理完,形成与识别码数组相对应的目标子存储区域组。
S600,Boot更新程序将目标子存储区域内原代码片段擦除,将目标代码片段写入相应的子存储区域内。
具体实施过程中,在以全1的目标代码片段表示删除相应的子存储区域内的内容时,Boot更新程序检查目标代码片段是否为全1,是则将目标子存储区域内原代码片段擦除,将目标代码片段写入相应的子存储区域内并删除所述识别码与子存储区域的对应关系中的该目标代码相应的识别码,使得该目标代码所处的子存储区域恢复到空闲;否则将目标子存储区域内原代码片段擦除,将目标代码片段写入相应的子存储区域内。
在以空的目标代码片段表示删除相应的子存储区域内的内容时,Boot更新程序检查目标代码片段是否为空,是则将目标子存储区域内原代码片段擦除;否则将目标子存储区域内原代码片段擦除,将目标代码片段写入相应的子存储区域内。
Boot更新程序一次处理多个目标代码片段的更新时,擦除在所述目标子存储区域组中排位第一的目标子存储区域,将相应的目标代码片段写入,然后根据排位顺序获取下一个目标子存储区域,先擦除原代码片段,再写入相应的目标代码片段。
实施例2
本实施例提供提供能够对目标代码片段进行验证的通过Bootloader更新PSU固件的方法,与实施例1相比,参阅图5所示,区别在于:
PSU固件供应方修改获取目标代码片段后,通过SHA摘要算法处理目标代码片段获取第一摘要;具体实施过程中,PSU固件供应方在修改获取目标代码片段后通过SHA256、SHA384或者SHA512摘要算法中的任意一种计算代码片段的第一摘要;
在进行PSU固件安装时由烧写设备通过I2C总线将所述第一摘要发送给PSU;
Boot更新程序获取目标代码片段后利用相同的SHA摘要算法处理目标代码片段获取第二摘要;通过SHA256、SHA384和SHA512中相应的SHA摘要算法处理目标代码片段获取目标代码片段的第二摘要。
Boot更新程序在对比目标代码片段的第一摘要和第二摘要相同的情况下执行目标代码片段的更新,否则提示目标代码片段被篡改。
在实施例2中,通过第二摘要的值与提前设定的第三摘要的值进行对比,确定目标代码片段是否为全1。其中,所述第三摘要由相应的SHA摘要算法处理长度为子存储区域容量的全1数据获得。
实施例3
本实施例提供一种实现通过Bootloader更新PSU固件的方法的装置,参阅图6和图7所示,所述实现通过Bootloader更新PSU固件的方法的装置包括:
存储划分模块,所述存储划分模块用于将PSU固件的存储区域划分成若干子存储区域;
代码片段配置模块,所述代码片段配置模块用于记录识别码与子存储区域的对应关系;
通信模块,所述通信模块用于接收目标代码片段和识别码;
校验模块,所述校验模块用于对目标代码片段的第一摘要和第二摘要对比进行验证;
目标子存储区域确定模块,所述目标子存储区域确定模块用于获取目标代码片段的识别码,并根据目标代码片段的识别码和所述识别码与子存储区域的对应关系确定目标子存储区域;在目标代码片段的识别码不存在于所述识别码与子存储区域的对应关系中时,为识别码分配空闲的目标子存储区域,并由代码片段配置模块更新所述识别码与子存储区域的对应关系。
擦写模块,所述擦写模块用于擦除目标子存储区域的原代码片段,从目标子存储区域的起始地址写入目标代码片段。
实施例4
本申请实施例提供一种实现通过Bootloader更新PSU固件的方法的存储介质,其特征在于,实现通过Bootloader更新PSU固件的方法的存储介质存储至少一条指令,执行所述指令实现如所述的通过Bootloader更新PSU固件的方法。
本申请通过将PSU固件存储区域分成若干子存储区域,由所述子存储区域存储以函数为单位的PSU固件的代码片段。在进行PSU固件更新时通过目标代码片段替换相应的原代码片段。由于代码片段存储在不同的子存储区域,目标代码片段替换相应的原代码片段的过程不会对其他的原代码片段的存储位置产生影响。实现用更新的目标代码片段替换相应的原代码片段即可实现PSU固件更新,无需将原PSU固件全部擦除,再写入更新后的PSU固件;降低固件更新的擦写量,提高固件更新的速度,保证PSU的负载的稳定运行。
本申请中Bootloader利用针对每一子存储区域的指针快速定位到子存储区域,方便对子存储区域进行数据擦除和数据写入。
本申请通过SHA摘要算法计算目标代码片段的第一摘要并发送给PSU,Boot更新程序获取目标代码片段后利用相同的SHA算法计算目标代码片段的第二摘要,对比第一摘要和第二摘要判断目标代码片段是否被篡改,保证写入的目标代码片段的安全性。
在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种通过Bootloader更新PSU固件的方法,其特征在于,包括:
将PSU中PSU固件的存储区域分成若干子存储区域;
以函数为单位将PSU固件代码分为若干代码片段,将所述代码片段存储于相应的子存储区域;
将需要更新的目标代码片段发送给PSU,PSU的Boot更新程序根据目标代码片段获取目标子存储区域,并将目标子存储区域内原代码片段擦除,将目标代码片段写入相应的子存储区域内。
2.根据权利要求1所述通过Bootloader更新PSU固件的方法,其特征在于,将PSU的PSU固件的存储区域均分成容量相同的若干子存储区域。
3.根据权利要求1所述通过Bootloader更新PSU固件的方法,其特征在于,以函数为单位将PSU固件代码分为若干代码片段,将所述代码片段存储于相应的子存储区域包括:
以函数为单位将PSU固件代码分为若干体积相近的代码片段;
为每个代码片段配置唯一的识别码;
将代码片段存储到相应的子存储区域,保存所述识别码与子存储区域的对应关系。
4.根据权利要求3所述通过Bootloader更新PSU固件的方法,其特征在于,所述将需要更新的目标代码片段发送给PSU包括:
控制PSU启动Bootloader进入Boot模式,运行Boot更新程序,
通过连接PSU的I2C总线的烧写设备向PSU发送目标代码片段,所述目标代码片段配置继承于相应原代码片段的识别码。
5.根据权利要求4所述通过Bootloader更新PSU固件的方法,其特征在于,PSU的Boot更新程序根据目标代码片段获取目标子存储区域包括:
获取目标代码片段的识别码;
利用获取的识别码检索所述识别码与子存储区域的对应关系来获取目标子存储区域。
6.根据权利要求5所述通过Bootloader更新PSU固件的方法,其特征在于,所述Boot更新程序获取由若干识别码组成的设定格式的识别码数组,所述Boot更新程序根据设定格式的识别码数组识别出相应的目标子存储区域组。
7.根据权利要求1所述通过Bootloader更新PSU固件的方法,其特征在于,所述PSU的Boot更新程序配置指向每个所述子存储区域起始地址的指针,Boot更新程序通过指针快速定位子存储区域的起始地址;从子存储区域的起始地址开始擦除子存储区域容量的长度以擦除原代码片段,从子存储区域的起始地址写入更新的代码片段。
8.根据权利要求1所述通过Bootloader更新PSU固件的方法,其特征在于,还包括对目标代码片段进行验证:
通过SHA摘要算法处理目标代码片段获取第一摘要,将所述第一摘要发送给PSU;
PSU获取目标代码片段后利用相同的SHA摘要算法处理目标代码片段获取第二摘要;
对比第一摘要和第二摘要相同的情况下执行目标代码片段的更新,否则提示目标代码片段被篡改。
9.一种实现通过Bootloader更新PSU固件的方法的装置,其特征在于,包括:存储划分模块,所述存储划分模块用于将PSU固件的存储区域划分成若干子存储区域;
代码片段配置模块,所述代码片段配置模块用于记录识别码与子存储区域的对应关系;
通信模块,所述通信模块用于接收目标代码片段和识别码;
校验模块,所述校验模块用于对目标代码片段进行验证;
目标子存储区域确定模块,所述目标子存储区域确定模块用于获取目标代码片段的识别码,并根据目标代码片段的识别码和所述识别码与子存储区域的对应关系确定目标子存储区域;
擦写模块,所述擦写模块用于擦除目标子存储区域的原代码片段,从目标子存储区域的起始地址写入目标代码片段。
10.一种实现通过Bootloader更新PSU固件的方法的存储介质,其特征在于,实现通过Bootloader更新PSU固件的方法的存储介质存储至少一条指令,执行所述指令实现如权利要求1-8任一所述的通过Bootloader更新PSU固件的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110872685.9A CN113741929A (zh) | 2021-07-30 | 2021-07-30 | 通过Bootloader更新PSU固件的方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110872685.9A CN113741929A (zh) | 2021-07-30 | 2021-07-30 | 通过Bootloader更新PSU固件的方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113741929A true CN113741929A (zh) | 2021-12-03 |
Family
ID=78729579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110872685.9A Withdrawn CN113741929A (zh) | 2021-07-30 | 2021-07-30 | 通过Bootloader更新PSU固件的方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113741929A (zh) |
-
2021
- 2021-07-30 CN CN202110872685.9A patent/CN113741929A/zh not_active Withdrawn
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7664923B2 (en) | Method and system for updating software | |
CN104850762B (zh) | 防止计算机的动作不良的方法、计算机程序以及计算机 | |
KR100675518B1 (ko) | 모듈식 바이오스 업데이트 메커니즘 | |
US8549271B1 (en) | Method, system, and computer readable medium for updating and utilizing the contents of a non-essential region of a memory device | |
US7313682B2 (en) | Method and system for updating boot memory that stores a fail-safe reset code and is configured to store boot code and boot updater code | |
WO2022007656A1 (zh) | Bootloader软件更新方法、装置、嵌入式控制器以及存储介质 | |
US7039799B2 (en) | Methods and structure for BIOS reconfiguration | |
US20060107071A1 (en) | Method and system for updating firmware stored in non-volatile memory | |
CN110321170B (zh) | 开机方法 | |
KR101555210B1 (ko) | 휴대용 단말기에서 내장 대용량 메모리를 이용한 컨텐츠 다운로드 방법 및 장치 | |
JP6157637B2 (ja) | リードライトメモリデバイスのデータイメージ中の仮想境界コード | |
CN108509215B (zh) | 一种系统软件的更换方法、装置、终端设备及存储介质 | |
KR20200090010A (ko) | 펌웨어 업데이트 방법, 이를 위한 전자 장치 및 저장 매체 | |
CN110851154B (zh) | 用于更新只读存储器编码的计算机实施方法、系统及介质 | |
CN111221553A (zh) | 一种固件升级的方法及装置 | |
US6687783B1 (en) | Access apparatus and method for accessing a plurality of storage device having different characteristics | |
CN110825421A (zh) | 一种固件升级方法、系统及可读存储介质 | |
CN113741929A (zh) | 通过Bootloader更新PSU固件的方法、装置及存储介质 | |
KR100228717B1 (ko) | 레이저 프린터의 전원 오프 대처방법 | |
CN106611124B (zh) | 计算机装置及其开机方法 | |
JP3028055B2 (ja) | Pcカードシステム及びプログラム書き換え方法 | |
CN111338771B (zh) | 引导程序切换处理方法及装置、计算机设备、介质 | |
CN112527341B (zh) | 一种车机系统升级方法、车机系统及计算机存储介质 | |
CN113766554A (zh) | 获取WiFi校准数据的方法、装置及WiFi设备校准测试系统 | |
JP2002175193A (ja) | プログラム書き換え装置及びプログラム書き換え方法 |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20211203 |