CN118626119A - 基于镜像文件的系统升级方法及装置 - Google Patents
基于镜像文件的系统升级方法及装置 Download PDFInfo
- Publication number
- CN118626119A CN118626119A CN202411003590.3A CN202411003590A CN118626119A CN 118626119 A CN118626119 A CN 118626119A CN 202411003590 A CN202411003590 A CN 202411003590A CN 118626119 A CN118626119 A CN 118626119A
- Authority
- CN
- China
- Prior art keywords
- image file
- current
- factory
- current updated
- boot loader
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 238000003860 storage Methods 0.000 claims abstract description 46
- 238000012795 verification Methods 0.000 claims abstract description 24
- 230000009191 jumping Effects 0.000 claims abstract description 19
- 238000005192 partition Methods 0.000 claims description 54
- 238000004590 computer program Methods 0.000 claims description 13
- 238000004891 communication Methods 0.000 abstract description 7
- 238000012423 maintenance Methods 0.000 abstract description 6
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 238000012546 transfer Methods 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Abstract
本发明涉及通信技术领域,提供一种基于镜像文件的系统升级方法及装置,方法包括:在当前系统升级失败后,掉电重启系统,并从外部存储介质中加载出厂镜像文件的主引导加载程序至芯片内存,以获取出厂镜像文件的版本和类型;基于出厂镜像文件的版本和类型,从外部存储介质中加载当前更新镜像文件的主引导加载程序至芯片内存;在芯片内存上运行当前更新镜像文件的主引导加载程序,并对当前更新镜像文件的完整性进行校验;在校验通过后,停止运行当前更新镜像文件的主引导加载程序,并跳转运行当前更新镜像文件对应的应用程序,以将当前系统升级至当前更新镜像文件对应的版本。本发明可以大大节省升级维护成本。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种基于镜像文件的系统升级方法及装置。
背景技术
ZYNQ是一种可编程SoC(System on Chip,片上系统)芯片,包含PS(ProcessingSystem,处理器系统)和PL(Programmable Logic,可编程逻辑)两部分。ZYNQ芯片固件以启动镜像文件的形式烧写至Flash或SD卡等非易失性存储介质中,设备上电后从镜像文件启动加载PL和PS程序。
目前,在基于ZYNQ镜像文件进行系统升级时,多通过以太网或USB等接口将更新后的镜像文件(UPDATE.BIN)传输至ZYNQ芯片外部的DDR(Double Data Rate,双数据率内存)缓存,并通过PS将更新镜像文件从DDR内存烧写至Flash或SD卡,然而,若在烧写过程中出现异常,如出现严重的电磁干扰导致写入Flash或SD卡中的数据完整性遭到破坏或烧写过程中系统突然掉电,会导致升级失败。系统从错误的镜像文件启动,将导致硬件宕机,设备无法正常工作,且无法重新远程升级,只能通过调试接口进行现场升级,有时现场升级还需要拆卸设备,升级维护的代价高昂。
发明内容
本发明提供一种基于镜像文件的系统升级方法及装置,用以解决现有技术中存在的缺陷。
本发明提供一种基于镜像文件的系统升级方法,包括如下步骤。
在当前系统升级失败后,掉电重启系统,并从外部存储介质中加载出厂镜像文件的主引导加载程序至芯片内存,以获取所述出厂镜像文件的版本和类型;
基于所述出厂镜像文件的版本和类型,从所述外部存储介质中加载当前更新镜像文件的主引导加载程序至所述芯片内存;
在所述芯片内存上运行所述当前更新镜像文件的主引导加载程序,并对所述当前更新镜像文件的完整性进行校验;
在校验通过后,停止运行所述当前更新镜像文件的主引导加载程序,并跳转运行所述当前更新镜像文件对应的应用程序,以将所述当前系统升级至所述当前更新镜像文件对应的版本。
根据本发明提供的一种基于镜像文件的系统升级方法,所述当前更新镜像文件为所述出厂镜像文件对应最新版本的镜像文件;
所述方法还包括:
在校验失败后,确定所述当前更新镜像文件是否存在先前版本的镜像文件,若是,则将所述先前版本的镜像文件作为所述当前更新镜像文件,并回退至所述在所述芯片内存上运行所述当前更新镜像文件的主引导加载程序;
若否,则回退至启动所述出厂镜像文件。
根据本发明提供的一种基于镜像文件的系统升级方法,所述当前更新镜像文件为所述出厂镜像文件对应最新版本的镜像文件;
所述方法还包括:
在校验失败后,确定所述当前更新镜像文件是否存在先前版本的镜像文件,若是,则将所述先前版本的镜像文件作为所述当前更新镜像文件,并回退至所述在所述芯片内存上运行所述当前更新镜像文件的主引导加载程序;
若否,则回退至启动所述出厂镜像文件。
根据本发明提供的一种基于镜像文件的系统升级方法,所述跳转运行所述出厂镜像文件对应的应用程序,之后还包括:
掉电重启系统,并回退至所述从外部存储介质中加载出厂镜像文件的主引导加载程序至芯片内存。
根据本发明提供的一种基于镜像文件的系统升级方法,所述当前更新镜像文件中包含有启动头累加校验和、位流文件的哈希值以及可执行文件的哈希值;
所述对所述当前更新镜像文件的完整性进行校验,包括:
基于所述位流文件的哈希值以及所述可执行文件的哈希值,对所述当前更新镜像文件的各分区头数据以及各分区数据进行完整性校验;
基于所述启动头累加校验和,对所述当前更新镜像文件的启动头数据进行完整性校验。
根据本发明提供的一种基于镜像文件的系统升级方法,所述当前更新镜像文件中包含有启动头累加校验和、位流文件的哈希值以及可执行文件的哈希值;
所述对所述当前更新镜像文件的完整性进行校验,包括:
基于所述位流文件的哈希值以及所述可执行文件的哈希值,对所述当前更新镜像文件的各分区头数据以及各分区数据进行完整性校验;
基于所述启动头累加校验和,对所述当前更新镜像文件的启动头数据进行完整性校验。
根据本发明提供的一种基于镜像文件的系统升级方法,所述停止运行所述当前更新镜像文件的主引导加载程序,并跳转运行所述当前更新镜像文件对应的应用程序,包括:
基于所述当前更新镜像文件中各分区头所包含的信息,加载配置所述当前更新镜像文件的位流文件和可执行文件;
若加载配置成功,则停止运行所述当前更新镜像文件的主引导加载程序后,跳转运行所述当前更新镜像文件对应的应用程序。
本发明还提供一种基于镜像文件的系统升级装置,包括如下模块。
第一加载单元,用于在当前系统升级失败后,掉电重启系统,并从外部存储介质中加载出厂镜像文件的主引导加载程序至芯片内存,以获取所述出厂镜像文件的版本和类型;
第二加载单元,用于基于所述出厂镜像文件的版本和类型,从所述外部存储介质中加载当前更新镜像文件的主引导加载程序至所述芯片内存;
运行校验单元,用于在所述芯片内存上运行所述当前更新镜像文件的主引导加载程序,并对所述当前更新镜像文件的完整性进行校验;
系统升级单元,用于在校验通过后,停止运行所述当前更新镜像文件的主引导加载程序,并跳转运行所述当前更新镜像文件对应的应用程序,以将所述当前系统升级至所述当前更新镜像文件对应的版本。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述基于镜像文件的系统升级方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述基于镜像文件的系统升级方法。
本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述基于镜像文件的系统升级方法。
本发明提供的基于镜像文件的系统升级方法及装置,在当前系统升级失败的情况下,可以将出厂镜像文件作为备份镜像,并基于出厂镜像文件的版本和类型继续从外部存储介质上搜寻加载完整的当前更新镜像文件,从而在确定当前更新镜像文件数据完整的情况下,可以跳转运行当前更新镜像文件对应的应用程序,以将当前系统升级至当前更新镜像文件对应的版本,避免传统方法中在系统升级失败时导致硬件宕机的问题,也就是说,本发明在当前系统升级失败的情况下,基于出厂镜像文件仍然支持远程升级,进而可以大大节省人力、物力、财力等升级维护成本。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术提供的基于镜像文件的系统升级框架示意图。
图2是本发明提供的基于镜像文件的系统升级方法的流程示意图之一。
图3是本发明提供的出厂镜像文件与当前更新镜像文件的结构示意图。
图4是本发明提供的基于镜像文件的系统升级方法的流程示意图之二。
图5是本发明提供的基于镜像文件的系统升级方法的流程示意图之三。
图6是本发明提供的基于镜像文件的系统升级装置的结构示意图。
图7是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是现有技术提供的基于镜像文件的系统升级框架示意图,如图1所示,在基于系统片上芯片(如ZYNQ芯片)镜像文件进行系统升级时,多通过接口1(如以太网或USB等接口)将更新后的镜像文件传输至ZYNQ芯片外部的双数据率内存(DDR)缓存,处理器系统(PS)将更新后的镜像文件烧写至ZYNQ芯片外部非易失性闪存(Flash)或存储卡(SD卡)替换之前的镜像文件,下次上电后,ZYNQ芯片将以更新后的镜像文件启动加载程序,完成ZYNQ的系统升级,实现系统的功能升级、性能指标优化或问题修复的目的。
然而,若PS将更新镜像文件从DDR内存烧写至Flash或SD卡过程中出现异常,如出现严重的电磁干扰导致写入Flash或SD卡中的数据完整性遭到破坏或烧写过程中系统突然掉电,会导致镜像文件更新失败。系统从错误的镜像文件启动,将导致硬件宕机,设备无法正常工作,且无法重新远程升级,只能通过调试接口(即接口2,如SPI、GPIO等接口)进行现场升级,有时现场升级还需要拆卸设备,升级维护的代价高昂。
图2是本发明提供的基于镜像文件的系统升级方法的流程示意图之一,如图2所示,该方法包括步骤210、步骤220、步骤230和步骤240。
步骤210、在当前系统升级失败后,掉电重启系统,并从外部存储介质中加载出厂镜像文件的主引导加载程序至芯片内存,以获取出厂镜像文件的版本和类型。
考虑到系统升级过程中如果出现了错误或者意外断电,可能会导致镜像文件处于不完整或者不可用的状态,若系统基于不完整或不可用的镜像文件启动,则可能导致硬件宕机,设备无法正常工作。步骤210中的掉电重启系统可以确保系统能够恢复到一个已知的、稳定的状态,比如加载出厂镜像文件,避免在不稳定或错误状态下继续操作导致更严重的问题。因此,在当前系统升级失败后,掉电重启系统,以维持系统稳定。
在掉电重启系统后,从外部存储介质(如Flash、SD卡等)中加载出厂镜像文件的主引导加载程序至芯片内存(如OCM,On-Chip Memory),以获取出厂镜像文件的版本和类型。其中,出厂镜像文件通常指的是在产品制造时,由制造商预先加载到设备或电子产品中的操作系统或软件映像。由于出厂镜像文件为只读文件,系统升级时不会对其进行修改、更新,进而在系统升级过程中可以保证出厂镜像文件的数据完整性。主引导加载程序可以理解为镜像文件启动过程中的第一个启动程序,其可以是FSBL(First Stage Boot Loader)。
由于主引导加载程序通常会包含用于读取和解析出厂镜像文件的元数据的代码和逻辑,而元数据通常包括出厂镜像文件的版本号、类型标识和其他重要的配置信息,进而从外部存储介质中加载出厂镜像文件的主引导加载程序至芯片内存时,可以通过主引导加载程序解析出厂镜像文件的元数据,进而获取出厂镜像文件的版本和类型。其中,出厂镜像文件的版本即出厂镜像文件的版本号,版本号指示了出厂镜像文件所包含的软件、固件或操作系统的具体版本。出厂镜像文件的类型通常描述了出厂镜像文件的用途,例如,出厂镜像文件可以为操作系统镜像、固件镜像等。
步骤220、基于出厂镜像文件的版本和类型,从外部存储介质中加载当前更新镜像文件的主引导加载程序至芯片内存。
具体地,当前更新镜像文件可以理解为用于更新系统或设备的最新镜像文件。当前更新镜像文件通常包含了新的软件版本、功能改进、错误修复、安全更新或者其他类型的系统更新内容。当前更新镜像文件的类型与出厂镜像文件的类型相同。
可选地,在确定出厂镜像文件的版本和类型后,可以将与出厂镜像文件的类型相同的镜像文件作为候选镜像文件,并将最新版本的候选镜像文件作为当前更新镜像文件。
需要说明的是,由于出厂镜像文件为只读文件,进而出厂镜像文件的数据是完整,进而即便当前系统升级失败,系统中的镜像文件损坏,也可以掉电重启后基于完整的出厂镜像文件继续从外部存储介质中搜寻加载完整当前更新镜像文件。
步骤230、在芯片内存上运行当前更新镜像文件的主引导加载程序,并对当前更新镜像文件的完整性进行校验。
具体地,对当前更新镜像文件的完整性进行校验用于确认当前更新镜像文件在传输或存储过程中是否被篡改或损坏。考虑到当前更新镜像文件在运行时才能得到实际的可执行文件,进而在将当前更新镜像文件的主引导加载程序加载至芯片内存后,在芯片内存上运行当前更新镜像文件的主引导加载程序,从而可以获取当前更新镜像文件的所有可执行文件,进而在此基础上对当前更新镜像文件进行完整性校验,以确认当前更新镜像文件是否被篡改或损坏。
可选地,可以通过当前镜像文件的哈希值(如MD5校验和)来对当前更新镜像文件的完整性进行校验。例如,可以通过图1中的接口1接收当前镜像文件以及当前镜像文件的MD5校验和,并在运行当前更新镜像文件的主引导加载程序时,通过PS计算接收的当前更新镜像文件的MD5校验和,若计算得到的MD5校验和与接收的MD5校验和一致,则表明当前镜像文件的数据是完整的,若不一致,则表明当前镜像文件的数据被篡改或损坏。
步骤240、在校验通过后,停止运行当前更新镜像文件的主引导加载程序,并跳转运行当前更新镜像文件对应的应用程序,以将当前系统升级至当前更新镜像文件对应的版本。
具体地,校验通过用于表明当前更新镜像文件的数据是完整的,未被篡改或损坏。考虑到如果主引导加载程序在更新过程中继续运行,可能会导致与当前更新镜像文件之间的竞争条件,进而会引起数据写入冲突、资源访问冲突或不一致的系统状态,从而影响更新的成功性和系统的稳定性。对此,本发明实施例在校验通过后,停止运行当前更新镜像文件的主引导加载程序,并跳转运行当前更新镜像文件对应的应用程序(即PS程序),以将当前系统升级至当前更新镜像文件对应的版本,完成系统升级。
本发明实施例提供的基于镜像文件的系统升级方法,在当前系统升级失败的情况下,可以将出厂镜像文件作为备份镜像,并基于出厂镜像文件的版本和类型继续从外部存储介质上搜寻加载完整的当前更新镜像文件,从而在确定当前更新镜像文件数据完整的情况下,可以跳转运行当前更新镜像文件对应的应用程序,以将当前系统升级至当前更新镜像文件对应的版本,避免传统方法中在系统升级失败时导致硬件宕机的问题,也就是说,本发明实施例在当前系统升级失败的情况下,基于出厂镜像文件仍然支持远程升级,进而可以大大节省人力、物力、财力等升级维护成本。
基于上述实施例,当前更新镜像文件为出厂镜像文件对应最新版本的镜像文件;
所述方法还包括:
在校验失败后,确定当前更新镜像文件是否存在先前版本的镜像文件,若是,则将先前版本的镜像文件作为当前更新镜像文件,并回退至在芯片内存上运行当前更新镜像文件的主引导加载程序;
若否,则回退至启动出厂镜像文件。
具体地,在校验失败后,表明当前更新镜像文件可能被篡改或损坏,若启动被篡改或损坏的当前更新镜像文件进行系统升级,则可能导致硬件宕机。对此,本发明实施例在校验失败后,确定当前更新镜像文件是否存在先前版本的镜像文件,若是,则将先前版本的镜像文件作为当前更新镜像文件,并回退至在芯片内存上运行当前更新镜像文件的主引导加载程序,也即回退至上述步骤230,并重复执行步骤230-步骤240,直至校验通过或不存在先前版本的镜像文件。其中,先前版本的镜像文件的版本低于当前更新镜像文件,例如,当前更新镜像文件的版本为3.0,先前版本的镜像文件的版本可以为2.0。
在不存在先前版本的镜像文件时,由于出厂镜像文件是只读文件,进而出厂镜像文件的数据是完整的,此外,之前已经运行了当前更新镜像文件的主引导加载程序,进行系统部分参数可能已经修改,为了维持系统的稳定性,回退至启动出厂镜像文件,将系统恢复到出厂设置的状态,以保持系统稳定。其中,可以通过FsblFallback回退函数回退至启动出厂镜像文件,并反馈错误状态,请求重新进行系统升级。
基于上述任一实施例,启动出厂镜像文件,包括:
在芯片内存上运行出厂镜像文件的主引导加载程序,并对出厂镜像文件的完整性进行校验;
在校验通过后,停止运行出厂镜像文件的主引导加载程序后,跳转运行出厂镜像文件对应的应用程序。
具体地,对出厂镜像文件的完整性进行校验用于确认出厂镜像文件在传输或存储过程中是否被篡改或损坏。考虑到出厂镜像文件在运行时才能得到实际的可执行文件,进而在将出厂镜像文件的主引导加载程序加载至芯片内存后,在芯片内存上运行出厂镜像文件的主引导加载程序,从而可以获取出厂镜像文件的所有可执行文件,进而在此基础上对出厂镜像文件进行完整性校验,以确认出厂镜像文件是否被篡改或损坏。
可选地,可以通过当前镜像文件的哈希值(如MD5校验和)来对出厂镜像文件的完整性进行校验。例如,可以通过图1中的接口1接收当前镜像文件以及当前镜像文件的MD5校验和,并在运行出厂镜像文件的主引导加载程序时,通过PS计算接收的出厂镜像文件的MD5校验和,若计算得到的MD5校验和与接收的MD5校验和一致,则表明当前镜像文件的数据是完整的,若不一致,则表明当前镜像文件的数据被篡改或损坏。
校验通过用于表明出厂镜像文件的数据是完整的,未被篡改或损坏。考虑到如果主引导加载程序在更新过程中继续运行,可能会引起数据写入冲突、资源访问冲突或不一致的系统状态,从而影响系统恢复至出厂状态。对此,本发明实施例在校验通过后,停止运行出厂镜像文件的主引导加载程序,并跳转运行出厂镜像文件对应的应用程序(即PS程序),以将当前系统恢复出厂设置状态。
基于上述任一实施例,跳转运行出厂镜像文件对应的应用程序,之后还包括:
掉电重启系统,并回退至从外部存储介质中加载出厂镜像文件的主引导加载程序至芯片内存。
具体地,跳转运行出厂镜像文件对应的应用程序之后,能够确保出厂镜像文件在当前系统中正确配置。掉电重启系统后,系统能够重新加载这些配置,且可以清除可能存在的临时状态或者错误状态,进而确保系统回复到已知的稳定状态(出厂设置状态)开始运行,确保系统能够稳定运行,避免硬件宕机。
在掉电重启系统后,回退至从外部存储介质中加载出厂镜像文件的主引导加载程序至芯片内存,即回退至步骤210,并重复执行步骤210-步骤240,直至系统升级成功。
基于上述任一实施例,当前更新镜像文件中包含有启动头累加校验和、位流文件的哈希值以及可执行文件的哈希值;
对当前更新镜像文件的完整性进行校验,包括:
基于位流文件的哈希值以及可执行文件的哈希值,对当前更新镜像文件的各分区头数据以及各分区数据进行完整性校验;
基于启动头累加校验和,对当前更新镜像文件的启动头数据进行完整性校验。
具体地,启动头累加校验和用于对ROM(Read-Only Memory)中的启动头(BootHeader)进行完整性校验,其可以是将启动头中的每个字节相加,然后取结果的低八位(即对256取模),这样计算出的累加校验和会被存储在启动头。当ROM启动时,系统会读取存储在启动头的累加校验和并重新计算一次,得到计算累加校验和,并将计算累加校验和与存储在启动头的累加校验和进行比较,若一致,则表明启动头数据是完整的,若不一致,则表明启动头的数据被篡改或损坏,也即该启动头为无效启动头,进而继续搜索下一个有效启动头,也就是搜索下一个当前更新镜像文件。
此外,当前更新镜像除了包括启动头外,还包括多个分区头(Partition Header)和多个分区(Partition),若任一分区头数据或任一分区数据不完整,也会导致当前更新镜像文件数据不完整。对此,本发明实施例基于位流文件的哈希值以及可执行文件的哈希值,对当前更新镜像文件的各分区头以及各分区进行完整性校验。其中,位流文件可以理解为用于配置PL的二进制文件,即PL bit文件。可执行文件可以理解为PL的程序文件,即PS elf程序文件。上述哈希值可以为MD5校验和,也可以为累加校验和,本发明实施例对此不作具体限定。
此外,出厂镜像文件中同样包含有启动头累加校验和、位流文件的哈希值以及可执行文件的哈希值,对出厂镜像文件的完整性校验也可参照上述对当前更新镜像文件的完整性校验步骤执行,在此不再赘述。
基于上述任一实施例,用于存储当前更新镜像文件的主引导加载程序(FSBL)的分区设置于启动头之后。
具体地,若将FSBL的分区设置在所有分区头之后,在基于当前更新镜像文件进行系统升级时,也会对FSBL进行更新。对FSBL进行更新存在的隐患是,如果系统升级的过程中,由于某种原因比如强的电磁干扰或突然断电,恰好FSBL部分未能被完整的更新或写入了错误的数据,则会导致系统无法基于当前更新镜像文件正常启动,也无法恢复至出厂镜像文件启动。原因在于:启动头无法对FSBL数据进行完整性校验,FSBL无法使用MD5校验和进行校验。如果启动头将不完整或者存在错误数据的FSBL加载运行,异常的FSBL将有可能无法正常加载PL bit文件和PS elf程序文件,也无法通过FsblFallback回退函数恢复至出厂设置状态。在此情况下,PS将跑飞在错误的FSBL中,造成系统死锁、系统无法正常启动,只能现场通过调试接口重新烧写Flash或SD卡。
对此,本发明实施例将用于存储FSBL的分区前移至启动头之后,在基于当前更新镜像文件进行系统升级时,并不更新修改对应FSBL数据,可以有效保证对应FSBL数据的完整性。在此情况下,若在系统升级过程中出现诸如强电磁干扰或突然掉电,使得启动头、PLbit文件或PS elf程序文件分区或其对应分区头出现数据不完整或数据错误,可以采用上述实施例校验各分区数据和各分区头数据的完整性。若数据不完整,将回退至启动出厂镜像文件,请求再次进行系统升级。
其中,出厂镜像文件的结构也与当前更新镜像文件的结构一致,即用于存储出厂镜像文件的主引导加载程序(FSBL)的分区设置于启动头之后。
图3是本发明提供的出厂镜像文件与当前更新镜像文件的结构示意图,如图3所示,出厂镜像文件和当前更新镜像文件的结构相同,均包括启动头(Boot Header),镜像头表(Image Header Table),镜像头(Image Header),分区头(Partition Header),分区(Partition),且在其尾部均增加了位流文件(PLbit文件)哈希值(如MD5校验和),如MD5checksum of PL bitstream,以及可执行文件(如PS elf程序文件)哈希值(如MD5校验和),如MD5 checksum of PS elf。此外,将用于存储FSBL的分区1前移至启动头之后,分区2用于存储位流文件,分区3用于存储可执行文件。
基于上述任一实施例,停止运行当前更新镜像文件的主引导加载程序,并跳转运行当前更新镜像文件对应的应用程序,包括:
基于当前更新镜像文件中各分区头所包含的信息,加载配置当前更新镜像文件的位流文件和可执行文件;
若加载配置成功,则停止运行当前更新镜像文件的主引导加载程序后,跳转运行当前更新镜像文件对应的应用程序。
具体地,各分区头所包含的信息包括镜像大小、加载地址、运行地址、在外部存储介质中位置等。基于各分区头所包含的信息,加载配置当前更新镜像文件的位流文件和可执行文件。
若加载配置成功,则表明已经在系统成功设置对应参数和选项,进而可以减少崩溃和错误的可能性,提高系统的可靠性和稳定性。在此基础上,停止运行当前更新镜像文件的主引导加载程序,并跳转运行当前更新镜像文件对应的应用程序,以将当前系统升级至当前更新镜像文件对应的版本。
图4是本发明提供的基于镜像文件的系统升级方法的流程示意图之二,如图4所示,该方法包括:
在开始系统升级时,通过以太网或USB接口传输当前更新镜像文件以及当前更新镜像文件的哈希值(如MD5校验和),并将当前更新镜像文件以及当前更新镜像文件的哈希值缓存至内存(如DDR)中。处理器系统(PS)计算缓存在内存中的当前更新镜像文件的哈希值。
若接收的哈希值与计算的哈希值一致,则将当前更新镜像文件(除启动头和FSBL部分)烧写至外部存储介质(如Flash,SD卡)相应区域,掉电重启系统,若升级成功,则从当前更新镜像文件启动运行,若升级失败,则回退至运行出厂镜像文件,请求再次进行升级。若接收的哈希值与计算的哈希值不一致,则重新进行系统升级。
图5是本发明提供的基于镜像文件的系统升级方法的流程示意图之三,如图5所示,该方法包括:
系统(如ZYNQ芯片)上电后,启动运行存储器(如BootROM,是一种存储在芯片或处理器中的只读存储器),BootROM从外部存储介质中读取镜像文件并搜索合法有效的启动头。BootROM首先找到出厂镜像文件(BOOT.BIN)对应的启动头,将出厂镜像文件的主引导加载程序(FSBL)加载到芯片内存上运行(如OCM片上RAM内存)。出厂镜像文件的FSBL通知BootROM继续搜索下一个合法有效的启动头。如果搜索到合法有效的启动头,例如搜索到当前更新镜像(UPDATE.BIN)文件对应的启动头,则将当前更新镜像文件的主引导加载程序(FSBL)加载到芯片内存上运行(如OCM片上RAM内存)。当前更新镜像文件的FSBL也会通知BootROM继续搜索下一个合法有效的启动头(即更新版本的镜像文件对应的启动头)。如果在外部存储介质有效搜索限制范围内找不到下一个合法有效的启动头,则会继续根据当前更新镜像文件各个分区头包含的镜像大小、加载地址、运行地址、在外部存储介质中位置等信息加载配置位流文件(PL bit位流)和可执行文件(PS elf程序文件)。如果PL bit位流文件和PS elf程序文件加载配置成功,则系统运行正常,ZYNQ芯片成功完成整个启动过程。
其中,设备出厂时,当前更新镜像文件中的PL bit位流文件和PS elf程序文件,与出厂镜像文件中的PL bit位流文件和PS elf程序文件均一致,从而运行当前更新镜像文件与运行出厂镜像文件效果相同。
此外,在所有镜像文件(包括BOOT.BIN当前更新镜像文件与出厂镜像文件)尾部增加了PL bit位流文件MD5校验和及PS elf程序文件MD5校验和,MD5校验和的使用可以让FSBL检查PL bit位流文件和PS elf程序文件对应分区的数据完整性。此外,启动头中包含启动头累加校验和(Boot Header Checksum),用以对启动头进行数据完整性校验;同时每个启镜像文件中每一个分区头(Partition Header)的尾部也包含分区头累加校验和(Partition Header Checksum),用以对该分区头进行完整性校验。
由BootROM通过启动头累加校验和对启动头的正确性进行校验。如果出现启动头累加校验和不一致的情形,会被视为非法无效的启动头,BootROM会继续搜索下一个有效的启动头。
在当前更新镜像文件对应的FSBL运行过程中,会根据每个分区头的累加校验和以及每个分区的MD5校验和来判断加载过程中是否出现异常或错误,一旦加载配置PL bit位流文件或PS elf程序文件过程中出现问题导致加载失败,FSBL会调用FsblFallback回退函数并更新相关寄存器,随后复位ZYNQ芯片,使BootROM重新运行,搜索到出厂镜像文件,从而实现启动跳转。当前更新镜像文件中任意一个分区头或任意一个分区出现校验和不一致的情况,表明更新数据完整性遭到了破坏,FSBL则会通过FsblFallback回退函数实现多启动镜像功能使得芯片跳转恢复至出厂镜像文件启动。
当出厂镜像文件启动过程中,同样会对启动头、各个分区头、各个分区的校验和进行完整性校验,保证各个部分数据的完整性。
此外,本发明实施例对镜像文件结构进行了调整和重组,将镜像文件的分区1即FSBL主引导加载程序前移至启动头之后。将FSBL部分从镜像文件中独立出来,放在外部存储介质的独立区域内。镜像文件升级时不更新启动头和FSBL部分,这样在升级过程中当前更新镜像文件FSBL所在区域数据不会出现擦除和写入,不会出现任何变化,可以保证当前更新镜像文件对应FSBL部分的数据完整性。
本发明实施例可以有效保证在系统升级失败的情况下,通过多启动镜像功能使得ZYNQ芯片从出厂镜像文件启动。本发明实施例可有效避免现有技术在升级失败时导致硬件宕机的问题,本发明实施例提供的方法更为可靠、健壮,在升级失败的情况下,从出厂镜像文件启动、配置、运行程序,仍然支持远程升级功能,可以大大节省人力、物力、财力等升级维护成本。此外,本发明实施例也可支持基于3个或更多镜像文件进行系统升级。
下面对本发明提供的基于镜像文件的系统升级装置进行描述,下文描述的基于镜像文件的系统升级装置与上文描述的基于镜像文件的系统升级方法可相互对应参照。
基于上述任一实施例,图6是本发明提供的基于镜像文件的系统升级装置的结构示意图,如图6所示,该装置包括:
第一加载单元610,用于在当前系统升级失败后,掉电重启系统,并从外部存储介质中加载出厂镜像文件的主引导加载程序至芯片内存,以获取出厂镜像文件的版本和类型;
第二加载单元620,用于基于出厂镜像文件的版本和类型,从外部存储介质中加载当前更新镜像文件的主引导加载程序至芯片内存;
运行校验单元630,用于在芯片内存上运行当前更新镜像文件的主引导加载程序,并对当前更新镜像文件的完整性进行校验;
系统升级单元640,用于在校验通过后,停止运行当前更新镜像文件的主引导加载程序,并跳转运行当前更新镜像文件对应的应用程序,以将当前系统升级至当前更新镜像文件对应的版本。
图7是本发明提供的电子设备的结构示意图,如图7所示,该电子设备可以包括:处理器(processor)710、通信接口(Communications Interface)720、存储器(memory)730和通信总线740,其中,处理器710,通信接口720,存储器730通过通信总线740完成相互间的通信。处理器710可以调用存储器730中的逻辑指令,以执行基于镜像文件的系统升级方法,该方法包括:在当前系统升级失败后,掉电重启系统,并从外部存储介质中加载出厂镜像文件的主引导加载程序至芯片内存,以获取所述出厂镜像文件的版本和类型;基于所述出厂镜像文件的版本和类型,从所述外部存储介质中加载当前更新镜像文件的主引导加载程序至所述芯片内存;在所述芯片内存上运行所述当前更新镜像文件的主引导加载程序,并对所述当前更新镜像文件的完整性进行校验;在校验通过后,停止运行所述当前更新镜像文件的主引导加载程序,并跳转运行所述当前更新镜像文件对应的应用程序,以将所述当前系统升级至所述当前更新镜像文件对应的版本。
此外,上述的存储器730中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的基于镜像文件的系统升级方法,该方法包括:在当前系统升级失败后,掉电重启系统,并从外部存储介质中加载出厂镜像文件的主引导加载程序至芯片内存,以获取所述出厂镜像文件的版本和类型;基于所述出厂镜像文件的版本和类型,从所述外部存储介质中加载当前更新镜像文件的主引导加载程序至所述芯片内存;在所述芯片内存上运行所述当前更新镜像文件的主引导加载程序,并对所述当前更新镜像文件的完整性进行校验;在校验通过后,停止运行所述当前更新镜像文件的主引导加载程序,并跳转运行所述当前更新镜像文件对应的应用程序,以将所述当前系统升级至所述当前更新镜像文件对应的版本。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的基于镜像文件的系统升级方法,该方法包括:在当前系统升级失败后,掉电重启系统,并从外部存储介质中加载出厂镜像文件的主引导加载程序至芯片内存,以获取所述出厂镜像文件的版本和类型;基于所述出厂镜像文件的版本和类型,从所述外部存储介质中加载当前更新镜像文件的主引导加载程序至所述芯片内存;在所述芯片内存上运行所述当前更新镜像文件的主引导加载程序,并对所述当前更新镜像文件的完整性进行校验;在校验通过后,停止运行所述当前更新镜像文件的主引导加载程序,并跳转运行所述当前更新镜像文件对应的应用程序,以将所述当前系统升级至所述当前更新镜像文件对应的版本。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于镜像文件的系统升级方法,其特征在于,包括:
在当前系统升级失败后,掉电重启系统,并从外部存储介质中加载出厂镜像文件的主引导加载程序至芯片内存,以获取所述出厂镜像文件的版本和类型;
基于所述出厂镜像文件的版本和类型,从所述外部存储介质中加载当前更新镜像文件的主引导加载程序至所述芯片内存;
在所述芯片内存上运行所述当前更新镜像文件的主引导加载程序,并对所述当前更新镜像文件的完整性进行校验;
在校验通过后,停止运行所述当前更新镜像文件的主引导加载程序,并跳转运行所述当前更新镜像文件对应的应用程序,以将所述当前系统升级至所述当前更新镜像文件对应的版本。
2.根据权利要求1所述的基于镜像文件的系统升级方法,其特征在于,所述当前更新镜像文件为所述出厂镜像文件对应最新版本的镜像文件;
所述方法还包括:
在校验失败后,确定所述当前更新镜像文件是否存在先前版本的镜像文件,若是,则将所述先前版本的镜像文件作为所述当前更新镜像文件,并回退至所述在所述芯片内存上运行所述当前更新镜像文件的主引导加载程序;
若否,则回退至启动所述出厂镜像文件。
3.根据权利要求2所述的基于镜像文件的系统升级方法,其特征在于,所述启动所述出厂镜像文件,包括:
在所述芯片内存上运行所述出厂镜像文件的主引导加载程序,并对所述出厂镜像文件的完整性进行校验;
在校验通过后,停止运行所述出厂镜像文件的主引导加载程序后,跳转运行所述出厂镜像文件对应的应用程序。
4.根据权利要求3所述的基于镜像文件的系统升级方法,其特征在于,所述跳转运行所述出厂镜像文件对应的应用程序,之后还包括:
掉电重启系统,并回退至所述从外部存储介质中加载出厂镜像文件的主引导加载程序至芯片内存。
5.根据权利要求1至4任一项所述的基于镜像文件的系统升级方法,其特征在于,所述当前更新镜像文件中包含有启动头累加校验和、位流文件的哈希值以及可执行文件的哈希值;
所述对所述当前更新镜像文件的完整性进行校验,包括:
基于所述位流文件的哈希值以及所述可执行文件的哈希值,对所述当前更新镜像文件的各分区头数据以及各分区数据进行完整性校验;
基于所述启动头累加校验和,对所述当前更新镜像文件的启动头数据进行完整性校验。
6.根据权利要求1至4任一项所述的基于镜像文件的系统升级方法,其特征在于,用于存储所述当前更新镜像文件的主引导加载程序的分区设置于启动头之后。
7.根据权利要求1至4任一项所述的基于镜像文件的系统升级方法,其特征在于,所述停止运行所述当前更新镜像文件的主引导加载程序,并跳转运行所述当前更新镜像文件对应的应用程序,包括:
基于所述当前更新镜像文件中各分区头所包含的信息,加载配置所述当前更新镜像文件的位流文件和可执行文件;
若加载配置成功,则停止运行所述当前更新镜像文件的主引导加载程序后,跳转运行所述当前更新镜像文件对应的应用程序。
8.一种基于镜像文件的系统升级装置,其特征在于,包括:
第一加载单元,用于在当前系统升级失败后,掉电重启系统,并从外部存储介质中加载出厂镜像文件的主引导加载程序至芯片内存,以获取所述出厂镜像文件的版本和类型;
第二加载单元,用于基于所述出厂镜像文件的版本和类型,从所述外部存储介质中加载当前更新镜像文件的主引导加载程序至所述芯片内存;
运行校验单元,用于在所述芯片内存上运行所述当前更新镜像文件的主引导加载程序,并对所述当前更新镜像文件的完整性进行校验;
系统升级单元,用于在校验通过后,停止运行所述当前更新镜像文件的主引导加载程序,并跳转运行所述当前更新镜像文件对应的应用程序,以将所述当前系统升级至所述当前更新镜像文件对应的版本。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述基于镜像文件的系统升级方法。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述基于镜像文件的系统升级方法。
Publications (1)
Publication Number | Publication Date |
---|---|
CN118626119A true CN118626119A (zh) | 2024-09-10 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI384367B (zh) | 韌體更新系統及方法 | |
US20110307879A1 (en) | Program update device, program update method, and information processing device | |
CN105260215A (zh) | 一种u盘升级车载行车记录仪终端的方法 | |
EP1591893A1 (en) | Method and system for fail-safe updating of boot code | |
CN111562934B (zh) | 一种基于热补丁的软件系统升级方法、终端及存储介质 | |
CN105354063B (zh) | 程序在线升级方法及系统 | |
CN104915226A (zh) | 一种网络设备软件启动方法、装置及网络设备 | |
CN107102871A (zh) | 嵌入式系统升级的方法和装置 | |
CN111552592A (zh) | 一种双备份启动方法及系统 | |
CN117687663B (zh) | 基于ota的分区动态调整方法、装置、设备及存储介质 | |
CN116361817B (zh) | 一种Linux下ubi文件系统的保护方法 | |
EP2733612A1 (en) | Information processing device, method, and program | |
CN118626119A (zh) | 基于镜像文件的系统升级方法及装置 | |
CN114398087B (zh) | 一种提高单片机更新程序后运行稳定性的方法及单片机 | |
CN113377425A (zh) | Bmc固件生成方法和装置、bmc启动方法和装置及存储介质 | |
CN111949290B (zh) | 一种热补丁管理方法、装置、电子设备及存储介质 | |
CN113467797B (zh) | 程序更新方法、装置和系统以及计算机可读存储介质 | |
US11768669B2 (en) | Installing application program code on a vehicle control system | |
CN112667444A (zh) | 一种系统升级方法、存储介质及终端设备 | |
CN109976940A (zh) | 一种软启动网络设备 | |
CN115857998B (zh) | 基于zynq和fpga架构的升级方法、装置和介质 | |
CN113805946B (zh) | 用于安卓系统的非易失属性的处理方法、装置及电子设备 | |
CN117573157A (zh) | 一种基于ZYNQ MPSoC的可靠远程固件升级方法 | |
CN118567686A (zh) | 固件升级方法、装置、设备及计算机可读介质 | |
CN118426845A (zh) | 嵌入式系统启动方法、装置、计算机设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication |