CN117453239A - 一种基于底层镜像文件的双冗余设计方法 - Google Patents
一种基于底层镜像文件的双冗余设计方法 Download PDFInfo
- Publication number
- CN117453239A CN117453239A CN202311504986.1A CN202311504986A CN117453239A CN 117453239 A CN117453239 A CN 117453239A CN 202311504986 A CN202311504986 A CN 202311504986A CN 117453239 A CN117453239 A CN 117453239A
- Authority
- CN
- China
- Prior art keywords
- image file
- mirror image
- bottom layer
- storage medium
- cyclic redundancy
- 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 22
- 238000013461 design Methods 0.000 title claims abstract description 19
- 125000004122 cyclic group Chemical group 0.000 claims abstract description 59
- 238000012795 verification Methods 0.000 claims description 49
- 238000004364 calculation method Methods 0.000 claims description 43
- 230000009977 dual effect Effects 0.000 claims description 12
- 230000001360 synchronised effect Effects 0.000 claims description 7
- 238000005192 partition Methods 0.000 claims description 5
- 230000009191 jumping Effects 0.000 claims description 3
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1433—Saving, restoring, recovering or retrying at system level during software upgrading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
-
- 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
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- 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/4401—Bootstrapping
-
- 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/44505—Configuring for program initiating, e.g. using registry, configuration files
Abstract
本申请公开了一种基于底层镜像文件的双冗余设计方法,包括如下步骤:S1:对存储介质flash进行地址分配,分配区域至少包括:运行镜像区域标志、底层镜像文件1大小、底层镜像文件1循环冗余校验码、底层镜像文件2大小和底层镜像文件2循环冗余校验码;运行镜像区域标志至少包括:0x55555555、0xAAAAAAAA和0xFFFFFFFF,执行S2;S2:上电启动,利用分配区域和完成分配后的冗余底层镜像文件执行冗余升级,其中,完成分配后的冗余底层镜像文件至少包括:底层镜像文件1和底层镜像文件2。本申请采用冗余系统方案升级底层镜像文件,能够预防在底层镜像文件升级期间断电导致系统无法正常启动的问题。
Description
技术领域
本申请涉及航天技术领域,尤其涉及一种基于底层镜像文件的双冗余设计方法。
背景技术
当前嵌入式系统通过IAP(In-Application Programming)技术升级自身底层镜像文件(BootLoader)或应用程序已经成为主流设计。而在升级BootLoader实现中,存储BootLoader的存储介质flash(例如:Nand flash、Nor flash等)自身存在发生位交换的概率,存储介质flash自身寿命较短,在指定区域长期使用存在超出寿命的问题,且单备份存储策略在升级过程中会因为断电而导致升级失败,因而会导致系统需要重新借助外部设备(例如:仿真器)进行重新升级。而在航天领域,由于飞行试验产品已经经过了各种单机和系统试验,开箱升级将导致项目需要补充各类重复试验来确保飞行试验产品的质量未受影响,如发生此类问题会拖延整个工程周期并增加项目开销,故飞行试验产品严禁采用仿真器对控制系统进行开箱升级。
发明内容
本申请的目的在于提供一种基于底层镜像文件的双冗余设计方法,采用冗余系统方案升级底层镜像文件,能够预防在底层镜像文件升级期间断电导致系统无法正常启动的问题,与现有的无备份设计系统相比,冗余设计提高了存储介质flash的使用寿命,以及存储介质flash位交换故障下的系统可靠性。
为达到上述目的,本申请提供一种基于底层镜像文件的双冗余设计方法,包括如下步骤:S1:对存储介质flash进行地址分配,分配区域至少包括:运行镜像区域标志、底层镜像文件1大小、底层镜像文件1循环冗余校验码、底层镜像文件2大小和底层镜像文件2循环冗余校验码;运行镜像区域标志至少包括:0x55555555、0xAAAAAAAA和0xFFFFFFFF,执行S2;S2:上电启动,利用分配区域和完成分配后的冗余底层镜像文件执行冗余升级,其中,完成分配后的冗余底层镜像文件至少包括:底层镜像文件1和底层镜像文件2。
如上的,其中,上电启动,利用分配区域和完成分配后的冗余底层镜像文件执行冗余升级的子步骤如下:S21:上电后,通过出厂固化启动程序加载第一级启动引导程序,完成加载后,启动第一级启动引导程序,执行S22;S22:通过第一级启动引导程序读取存储介质flash中的运行镜像区域标志,若运行镜像区域标志为0xAAAAAAAA和0x55555555,则对存储介质flash指定的底层镜像文件进行校验,获得校验结果,其中,校验结果为:通过或未通过,若校验结果为未通过,则执行S23,若校验结果为通过,则执行S24;若运行镜像区域标志为0xFFFFFFFF,则将XDCFG_MULTIBOOT_ADDR_OFFSE寄存器更新为0,执行S24;S23:将运行镜像区域标志更新为另一区域,更新XDCFG_MULTIBOOT_ADDR_OFFSE寄存器的值,并执行软件复位,执行S21;S24:第一级启动引导程序依据XDCFG_MULTIBOOT_ADDR_OFFSE寄存器将存储介质flash中底层镜像文件中的分区bit文件和第二级启动引导程序解析至双倍速率同步动态随机存储器,执行S25;S25:跳转至双倍速率同步动态随机存储器,并启动双倍速率同步动态随机存储器中的第二级启动引导程序,由第二级启动引导程序根据运行镜像区域标志对底层镜像文件进行升级,完成升级后,等待断电重启。
如上的,其中,若运行镜像区域标志为0xAAAAAAAA,则对存储介质flash指定底层镜像文件进行校验,获得校验结果的子步骤如下:S221:运行镜像区域标志为0xAAAAAAAA,通过第一级启动引导程序读取存储介质flash的第二存储区域的底层镜像文件2大小和底层镜像文件2循环冗余校验码;S222:利用底层镜像文件2大小和底层镜像文件2循环冗余校验码对存储介质flash的第二存储区域的底层镜像文件2进行校验,获得校验结果。
如上的,其中,利用底层镜像文件2大小和底层镜像文件2循环冗余校验码对存储介质flash的第二存储区域的底层镜像文件2进行校验,获得校验结果的子步骤如下:T1:根据底层镜像文件2大小确认校验范围;T2:通过校验算法对底层镜像文件2大小和校验范围进行计算,获得校验计算结果;T3:利用底层镜像文件2循环冗余校验码和校验计算结果进行比较,若底层镜像文件2循环冗余校验码和校验计算结果一致,则校验结果为通过,若底层镜像文件2循环冗余校验码和校验计算结果不一致,则校验结果为未通过。
如上的,其中,若运行镜像区域标志为0x55555555,则对存储介质flash指定底层镜像文件进行校验,获得校验结果的子步骤如下:S221’:运行镜像区域标志为0x55555555,通过第一级启动引导程序读取存储介质flash的第一存储区域的底层镜像文件1大小和底层镜像文件1循环冗余校验码;S222’:利用底层镜像文件1大小和底层镜像文件1循环冗余校验码对存储介质flash的第一存储区域的底层镜像文件1进行校验,获得校验结果。
如上的,其中,利用底层镜像文件1大小和底层镜像文件1循环冗余校验码对存储介质flash的第一存储区域的底层镜像文件1进行校验,获得校验结果的子步骤如下:U1:根据底层镜像文件1大小确认校验范围;U2:通过校验算法对底层镜像文件1大小和校验范围进行计算,获得校验计算结果;U3:利用底层镜像文件1循环冗余校验码和校验计算结果进行比较,若底层镜像文件1循环冗余校验码和校验计算结果一致,则校验结果为通过,若底层镜像文件1循环冗余校验码和校验计算结果不一致,则校验结果为未通过。
如上的,其中,运行镜像区域标志为0xAAAAAAAA,校验结果为未通过,将运行镜像区域标志更新为0x55555555。
如上的,其中,运行镜像区域标志为0x55555555,校验结果为未通过,将运行镜像区域标志更新为0xAAAAAAAA。
如上的,其中,运行镜像区域标志为0xAAAAAAAA或0xFFFFFFFF,通过第二级启动引导程序对底层镜像文件进行升级的子步骤如下:S251:第二级启动引导程序通过以太网用户数据报协议接收底层镜像文件1,并对底层镜像文件1进行循环冗余校验,获得通过循环冗余校验的底层镜像文件1和校验计算结果;S252:将通过循环冗余校验的底层镜像文件1更新至存储介质flash的第一区域镜像区,运行镜像区域标志更新为0X55555555,使用校验计算结果更新存储介质flash中的底层镜像文件1循环冗余校验码,并更新XDCFG_MULTIBOOT_ADDR_OFFSE寄存器的值为存储介质flash第一存储区域偏移0x0,底层镜像更新结束。
如上的,其中,运行镜像区域标志为0X55555555,通过第二级启动引导程序对底层镜像文件进行升级的子步骤如下:S251’:第二级启动引导程序通过以太网用户数据报协议接收底层镜像文件2,并对底层镜像文件2进行循环冗余校验,获得通过循环冗余校验的底层镜像文件2;S252’:将通过循环冗余校验的底层镜像文件2更新至flash的第二区域镜像区,运行镜像区域标志更新为0XAAAAAAAA,使用校验计算结果更新存储介质flash中的底层镜像文件2循环冗余校验码,并更新XDCFG_MULTIBOOT_ADDR_OFFSE寄存器的值为存储介质flash第二存储区域偏移0x220,底层镜像更新结束。
本申请实现的有益效果如下:
(1)当系统在升级底层镜像文件的过程中发生了断电等校验未通过工况而导致底层镜像文件未完整写入存储介质flash时,系统重新上电后,能够启动备份底层镜像软件,保证系统能够校验通过,正常运行并可再次进行升级。
(2)当存储介质flash中的一份底层镜像文件所在的存储区域发生了位交换或坏块时,另一份底层镜像文件仍能保证系统校验通过和启动,提高了系统的可靠性和安全性。
(3)基于Xilinx ZYNQ7000系列IAP冗余升级自身BootLoader(底层镜像文件),实现了当一份BootLoader发生故障时,另一份BootLoader能校验通过,启动系统并升级自身系统。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为基于底层镜像文件的双冗余设计方法一种实施例的流程图;
图2为基于32M flash存储介质为冗余底层镜像文件分配存储空间的示意图;
图3为上电启动,利用分配区域和完成分配后的冗余底层镜像文件执行冗余升级的一种实施例的流程图。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本申请提供一种基于底层镜像文件的双冗余设计方法,包括如下步骤:
S1:对存储介质flash进行地址分配,分配区域至少包括:运行镜像区域标志、底层镜像文件1大小、底层镜像文件1CRC(循环冗余校验码)、底层镜像文件2大小和底层镜像文件2CRC(循环冗余校验码);运行镜像区域标志至少包括:0x55555555、0xAAAAAAAA和0xFFFFFFFF,执行S2。
具体的,基于32M flash存储介质分配冗余BootLoader(底层镜像文件)及配置信息。
作为一个实施例,如图2所示,存储介质flash为32M flash存储空间,底层镜像文件1(BootLoader镜像文件1)为15M存储空间,地址范围为0x00000000-0x00EFFFFF;底层镜像文件2(BootLoader镜像文件2)为15M存储空间,地址范围为0x00F00000-0x010FFFFF;底层镜像文件的配置信息(BootLoader配置信息)为2M存储空间,地址范围为0x01100000-0x01FFFFFF。
作为一个实施例,配置信息如表1所示,配置信息至少包括:地址范围、配置名称、数据长度和备注;配置名称至少包括:运行镜像区域标志、底层镜像文件1大小、底层镜像文件1CRC(即:底层镜像文件1循环冗余校验码)、底层镜像文件2大小和底层镜像文件2CRC(即:底层镜像文件2循环冗余校验码);运行镜像区域标志至少包括:0x55555555(底层镜像文件1)、0xAAAAAAAA(底层镜像文件1)和0xFFFFFFFF(flash初始值)。
表1
S2:上电启动,利用分配区域和完成分配后的冗余底层镜像文件执行冗余升级,其中,完成分配后的冗余底层镜像文件至少包括:底层镜像文件1和底层镜像文件2。
进一步的,如图3所示,上电启动,利用分配区域和完成分配后的冗余底层镜像文件执行冗余升级的子步骤如下:
S21:上电后,通过出厂固化启动程序(BootRom)加载第一级启动引导程序(FSBL),完成加载后,启动第一级启动引导程序(FSBL),执行S22。
进一步的,上电后,通过出厂固化启动程序加载第一级启动引导程序,完成加载后,启动第一级启动引导程序的子步骤如下:
S221:上电后,通过出厂固化启动程序读取XDCFG_MULTIBOOT_ADDR_OFFSE寄存器,并根据XDCFG_MULTIBOOT_ADDR_OFFSE寄存器的值将指定存储介质flash偏移地址的第一级启动引导程序(FSBL)加载至OCM(On-Chip Memory,片上存储器)。
具体的,OCM(On-Chip Memory,片上存储器)至少包括256kB的RAM(Random AccessMemory,随机存取存储器)和128kB的ROM(只读存储器,Read-Only Memory)。
S222:跳转至OCM 0地址,启动第一级启动引导程序(FSBL)。
S22:通过第一级启动引导程序(FSBL)读取存储介质flash中的运行镜像区域标志,若运行镜像区域标志为0xAAAAAAAA和0x55555555,则对存储介质flash指定的底层镜像文件(BootLoader)进行校验,获得校验结果,其中,校验结果为:通过或未通过,若校验结果为未通过,则执行S23,若校验结果为通过,则执行S24;若运行镜像区域标志为0xFFFFFFFF,则将XDCFG_MULTIBOOT_ADDR_OFFSE寄存器更新为0,执行S24。
具体的,存储介质flash中的运行镜像区域标志为0XFFFFFFFF,表示存储介质flash处于初始化状态,当前启动的底层镜像文件为存储介质flash的第一存储区域中的底层镜像文件,无需校验,直接将XDCFG_MULTIBOOT_ADDR_OFFSE寄存器更新为0,执行S24。
进一步的,若运行镜像区域标志为0xAAAAAAAA,则对存储介质flash指定底层镜像文件(BootLoader)进行校验,获得校验结果的子步骤如下:
S221:运行镜像区域标志为0xAAAAAAAA,通过第一级启动引导程序读取存储介质flash的第二存储区域的底层镜像文件2大小和底层镜像文件2CRC(循环冗余校验码)。
S222:利用底层镜像文件2大小和底层镜像文件2CRC对存储介质flash的第二存储区域的底层镜像文件2进行校验,获得校验结果。
具体的,存储介质flash中的运行镜像区域标志为0xAAAAAAAA,表示当前启动的底层镜像文件为存储介质flash的第二存储区域中的底层镜像文件,启动存储介质flash的第二存储区域,读取第二存储区域的底层镜像文件2大小和底层镜像文件2CRC,对第二存储区域的底层镜像文件2(即:底层镜像软件2)进行校验,获得校验结果。第二存储区域即为存储底层镜像软件2的区域。
进一步的,利用底层镜像文件2大小和底层镜像文件2CRC对存储介质flash的第二存储区域的底层镜像文件2进行校验,获得校验结果的子步骤如下:
T1:根据底层镜像文件2大小确认校验范围。
T2:通过校验算法对底层镜像文件2大小和校验范围进行计算,获得校验计算结果。
进一步的,校验算法为标准校验算法,本申请优选为CRC算法。
T3:利用底层镜像文件2CRC和校验计算结果进行比较,若底层镜像文件2CRC和校验计算结果一致,则校验结果为通过,若底层镜像文件2CRC和校验计算结果不一致,则校验结果为未通过。
进一步的,若运行镜像区域标志为0x55555555,则对存储介质flash指定底层镜像文件(BootLoader)进行校验,获得校验结果的子步骤如下:
S221’:运行镜像区域标志为0x55555555,通过第一级启动引导程序读取存储介质flash的第一存储区域的底层镜像文件1大小和底层镜像文件1CRC(循环冗余校验码)。
S222’:利用底层镜像文件1大小和底层镜像文件1CRC对存储介质flash的第一存储区域的底层镜像文件1进行校验,获得校验结果。
具体的,存储介质flash中的运行镜像区域标志为0x55555555,表示当前启动的底层镜像文件为存储介质flash的第一存储区域中的底层镜像文件,启动存储介质flash的第一存储区域,读取第一存储区域的底层镜像文件1大小和底层镜像文件1CRC,对第一存储区域的底层镜像文件1(即:底层镜像软件1)进行校验,获得校验结果。第一存储区域即为存储底层镜像软件1的区域。
进一步的,利用底层镜像文件1大小和底层镜像文件1CRC对存储介质flash的第一存储区域的底层镜像文件1进行校验,获得校验结果的子步骤如下:
U1:根据底层镜像文件1大小确认校验范围。
U2:通过校验算法对底层镜像文件1大小和校验范围进行计算,获得校验计算结果。
进一步的,校验算法为标准校验算法,本申请优选为CRC算法。
U3:利用底层镜像文件1CRC和校验计算结果进行比较,若底层镜像文件1CRC和校验计算结果一致,则校验结果为通过,若底层镜像文件1CRC和校验计算结果不一致,则校验结果为未通过。
S23:将运行镜像区域标志更新为另一区域,更新XDCFG_MULTIBOOT_ADDR_OFFSE寄存器的值,并执行软件复位,执行S21。
具体的,运行镜像区域标志为0xAAAAAAAA,校验结果为未通过,则第二存储区域的底层镜像软件2的校验未通过,将运行镜像区域标志更新为0x55555555,即:执行软件复位或重启后,选择启动存储介质flash的第一存储区域,并将XDCFG_MULTIBOOT_ADDR_OFFSE寄存器的值更新为存储介质flash的第一存储区域偏移0x0。
运行镜像区域标志为0x55555555,校验结果为未通过,则第一存储区域的底层镜像软件1的校验未通过,将运行镜像区域标志更新为0xAAAAAAAA,即:执行软件复位或重启后,选择启动存储介质flash的第二存储区域,并将XDCFG_MULTIBOOT_ADDR_OFFSE寄存器的值更新为存储介质flash的第二存储区域偏移0x220。
S24:第一级启动引导程序依据XDCFG_MULTIBOOT_ADDR_OFFSE寄存器将存储介质flash中底层镜像文件中的分区bit文件和第二级启动引导程序(SSBL)解析至DDR(双倍速率同步动态随机存储器),执行S25。
具体的,运行镜像区域标志为0xAAAAAAAA,校验结果为通过,则第二存储区域的底层镜像软件2的校验通过,FSBL(第一级启动引导程序)依据XDCFG_MULTIBOOT_ADDR_OFFSE寄存器的值将分区bit文件和SSBL(第二级启动引导程序)加载至DDR中。
运行镜像区域标志为0x55555555,校验结果为通过,则第一存储区域的底层镜像软件1的校验通过,FSBL(第一级启动引导程序)依据XDCFG_MULTIBOOT_ADDR_OFFSE寄存器的值将分区bit文件和SSBL(第二级启动引导程序)加载至DDR中。
S25:跳转至DDR,并启动DDR中的第二级启动引导程序,由第二级启动引导程序(SSBL)根据运行镜像区域标志对底层镜像文件(BootLoader)进行升级,完成升级后,等待断电重启。
进一步的,运行镜像区域标志为0xAAAAAAAA或0xFFFFFFFF,通过第二级启动引导程序(SSBL)对底层镜像文件(BootLoader)进行升级的子步骤如下:
S251:SSBL(第二级启动引导程序)通过以太网用户数据报协议(User DatagramProtocol,UDP)接收底层镜像文件1,并对底层镜像文件1进行循环冗余校验(即:CRC校验),获得通过CRC校验的底层镜像文件1和校验计算结果。
进一步的,对底层镜像文件1进行CRC校验,获得通过CRC校验的底层镜像文件1和校验计算结果的子步骤如下:
R1:通过以太网UDP将接收到的文件数据存储至DDR中,其中,文件数据至少包括:CRC信息和上传的底层镜像文件。
具体的,文件数据为升级时,通过网络上传的用于进行冗余升级的文件,其中,CRC信息为上传的底层镜像文件的循环冗余校验码。
R2:对上传的底层镜像文件进行CRC校验,获得校验计算结果。
R3:将校验计算结果与CRC信息进行比对,若校验计算结果和CRC信息一致,则校验结果为通过,将上传的底层镜像文件作为通过CRC校验的底层镜像文件1;若校验计算结果和CRC信息不一致,则校验结果为未通过,将上传的底层镜像文件作为未通过CRC校验的底层镜像文件1。
S252:将通过CRC校验的底层镜像文件1更新至存储介质flash的第一区域镜像区,运行镜像区域标志更新为0X55555555,使用校验计算结果更新存储介质flash中的底层镜像文件1循环冗余校验码,并更新XDCFG_MULTIBOOT_ADDR_OFFSE寄存器的值为存储介质flash第一存储区域偏移0x0,底层镜像更新结束。
进一步的,运行镜像区域标志为0X55555555,通过第二级启动引导程序(SSBL)对底层镜像文件(BootLoader)进行升级,完成升级后,等待断电重启的子步骤如下:
S251’:SSBL(第二级启动引导程序)通过以太网UDP接收底层镜像文件2,并对底层镜像文件2进行CRC校验,获得通过CRC校验的底层镜像文件2。
进一步的,对底层镜像文件2进行CRC校验,获得通过CRC校验的底层镜像文件2和校验计算结果的子步骤如下:
P1:通过以太网UDP将接收到的文件数据存储至DDR中,其中,文件数据至少包括:CRC信息和上传的底层镜像文件。
具体的,文件数据为升级时,通过网络上传的用于进行冗余升级的文件,其中,CRC信息为上传的底层镜像文件的循环冗余校验码。
P2:对上传的底层镜像文件进行CRC校验,获得校验计算结果。
P3:将校验计算结果与CRC信息进行比对,若校验计算结果和CRC信息一致,则校验结果为通过,将上传的底层镜像文件作为通过CRC校验的底层镜像文件2;若校验计算结果和CRC信息不一致,则校验结果为未通过,将上传的底层镜像文件作为未通过CRC校验的底层镜像文件2。
S252’:将通过CRC校验的底层镜像文件2更新至flash的第二区域镜像区,运行镜像区域标志更新为0XAAAAAAAA,使用校验计算结果更新存储介质flash中的底层镜像文件2循环冗余校验码,并更新XDCFG_MULTIBOOT_ADDR_OFFSE寄存器的值为存储介质flash第二存储区域偏移0x220,底层镜像更新结束。
具体的,冗余升级是基于ZYNQ7000系列SOC支持多重启动(Multiboot)机制,即:ZYNQ在上电启动并初始化基本外设后会读取寄存器XDCFG_MULTIBOOT_ADDR_OFFSE中的值并依据该值执行BootRom(出厂固化启动程序)实现从存储介质加载对应偏移的FSBL至OCM并启动,而FSBL(第一级启动引导程序)在加载FPGA的bit流文件和SSBL(第二级启动引导程序)至DDR时也有相同的加载逻辑。借助Multiboot机制,BootLoader在升级自身镜像时可将升级镜像存放于存储介质备份区域,并在存储介质指定位置置位运行镜像区域标志。当系统执行断电重启后,BootRom(出厂固化启动程序)加载新的镜像中的FSBL(第一级启动引导程序),FSBL依据运行镜像区域标志、CRC和镜像长度信息对镜像文件进行CRC校验后启用新的镜像SSBL(第二级启动引导程序)。若发现底层镜像文件损坏(即:CRC校验失败),则FSBL会启动另一份底层镜像文件,提升了系统的可靠性。
本申请实现的有益效果如下:
(1)当系统在升级底层镜像文件的过程中发生了断电等校验未通过工况而导致底层镜像文件未完整写入存储介质flash时,系统重新上电后,能够启动备份底层镜像软件,保证系统能够校验通过,正常运行并可再次进行升级。
(2)当存储介质flash中的一份底层镜像文件所在的存储区域发生了位交换或坏块时,另一份底层镜像文件仍能保证系统校验通过和启动,提高了系统的可靠性和安全性。
(3)基于Xilinx ZYNQ7000系列IAP冗余升级自身BootLoader(底层镜像文件),实现了当一份BootLoader发生故障时,另一份BootLoader能校验通过,启动系统并升级自身系统。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,本申请的保护范围意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请保护范围及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种基于底层镜像文件的双冗余设计方法,其特征在于,包括如下步骤:
S1:对存储介质flash进行地址分配,分配区域至少包括:运行镜像区域标志、底层镜像文件1大小、底层镜像文件1循环冗余校验码、底层镜像文件2大小和底层镜像文件2循环冗余校验码;运行镜像区域标志至少包括:0x55555555、0xAAAAAAAA和0xFFFFFFFF,执行S2;
S2:上电启动,利用分配区域和完成分配后的冗余底层镜像文件执行冗余升级,其中,完成分配后的冗余底层镜像文件至少包括:底层镜像文件1和底层镜像文件2。
2.根据权利要求1所述的基于底层镜像文件的双冗余设计方法,其特征在于,上电启动,利用分配区域和完成分配后的冗余底层镜像文件执行冗余升级的子步骤如下:
S21:上电后,通过出厂固化启动程序加载第一级启动引导程序,完成加载后,启动第一级启动引导程序,执行S22;
S22:通过第一级启动引导程序读取存储介质flash中的运行镜像区域标志,若运行镜像区域标志为0xAAAAAAAA和0x55555555,则对存储介质flash指定的底层镜像文件进行校验,获得校验结果,其中,校验结果为:通过或未通过,若校验结果为未通过,则执行S23,若校验结果为通过,则执行S24;若运行镜像区域标志为0xFFFFFFFF,则将XDCFG_MULTIBOOT_ADDR_OFFSE寄存器更新为0,执行S24;
S23:将运行镜像区域标志更新为另一区域,更新XDCFG_MULTIBOOT_ADDR_OFFSE寄存器的值,并执行软件复位,执行S21;
S24:第一级启动引导程序依据XDCFG_MULTIBOOT_ADDR_OFFSE寄存器将存储介质flash中底层镜像文件中的分区bit文件和第二级启动引导程序解析至双倍速率同步动态随机存储器,执行S25;
S25:跳转至双倍速率同步动态随机存储器,并启动双倍速率同步动态随机存储器中的第二级启动引导程序,由第二级启动引导程序根据运行镜像区域标志对底层镜像文件进行升级,完成升级后,等待断电重启。
3.根据权利要求2所述的基于底层镜像文件的双冗余设计方法,其特征在于,若运行镜像区域标志为0xAAAAAAAA,则对存储介质flash指定底层镜像文件进行校验,获得校验结果的子步骤如下:
S221:运行镜像区域标志为0xAAAAAAAA,通过第一级启动引导程序读取存储介质flash的第二存储区域的底层镜像文件2大小和底层镜像文件2循环冗余校验码;
S222:利用底层镜像文件2大小和底层镜像文件2循环冗余校验码对存储介质flash的第二存储区域的底层镜像文件2进行校验,获得校验结果。
4.根据权利要求3所述的基于底层镜像文件的双冗余设计方法,其特征在于,利用底层镜像文件2大小和底层镜像文件2循环冗余校验码对存储介质flash的第二存储区域的底层镜像文件2进行校验,获得校验结果的子步骤如下:
T1:根据底层镜像文件2大小确认校验范围;
T2:通过校验算法对底层镜像文件2大小和校验范围进行计算,获得校验计算结果;
T3:利用底层镜像文件2循环冗余校验码和校验计算结果进行比较,若底层镜像文件2循环冗余校验码和校验计算结果一致,则校验结果为通过,若底层镜像文件2循环冗余校验码和校验计算结果不一致,则校验结果为未通过。
5.根据权利要求4所述的基于底层镜像文件的双冗余设计方法,其特征在于,若运行镜像区域标志为0x55555555,则对存储介质flash指定底层镜像文件进行校验,获得校验结果的子步骤如下:
S221’:运行镜像区域标志为0x55555555,通过第一级启动引导程序读取存储介质flash的第一存储区域的底层镜像文件1大小和底层镜像文件1循环冗余校验码;
S222’:利用底层镜像文件1大小和底层镜像文件1循环冗余校验码对存储介质flash的第一存储区域的底层镜像文件1进行校验,获得校验结果。
6.根据权利要求5所述的基于底层镜像文件的双冗余设计方法,其特征在于,利用底层镜像文件1大小和底层镜像文件1循环冗余校验码对存储介质flash的第一存储区域的底层镜像文件1进行校验,获得校验结果的子步骤如下:
U1:根据底层镜像文件1大小确认校验范围;
U2:通过校验算法对底层镜像文件1大小和校验范围进行计算,获得校验计算结果;
U3:利用底层镜像文件1循环冗余校验码和校验计算结果进行比较,若底层镜像文件1循环冗余校验码和校验计算结果一致,则校验结果为通过,若底层镜像文件1循环冗余校验码和校验计算结果不一致,则校验结果为未通过。
7.根据权利要求6所述的基于底层镜像文件的双冗余设计方法,其特征在于,运行镜像区域标志为0xAAAAAAAA,校验结果为未通过,将运行镜像区域标志更新为0x55555555。
8.根据权利要求7所述的基于底层镜像文件的双冗余设计方法,其特征在于,运行镜像区域标志为0x55555555,校验结果为未通过,将运行镜像区域标志更新为0xAAAAAAAA。
9.根据权利要求8所述的基于底层镜像文件的双冗余设计方法,其特征在于,运行镜像区域标志为0xAAAAAAAA或0xFFFFFFFF,通过第二级启动引导程序对底层镜像文件进行升级的子步骤如下:
S251:第二级启动引导程序通过以太网用户数据报协议接收底层镜像文件1,并对底层镜像文件1进行循环冗余校验,获得通过循环冗余校验的底层镜像文件1和校验计算结果;
S252:将通过循环冗余校验的底层镜像文件1更新至存储介质flash的第一区域镜像区,运行镜像区域标志更新为0X55555555,使用校验计算结果更新存储介质flash中的底层镜像文件1循环冗余校验码,并更新XDCFG_MULTIBOOT_ADDR_OFFSE寄存器的值为存储介质flash第一存储区域偏移0x0,底层镜像更新结束。
10.根据权利要求9所述的基于底层镜像文件的双冗余设计方法,其特征在于,运行镜像区域标志为0X55555555,通过第二级启动引导程序对底层镜像文件进行升级的子步骤如下:
S251’:第二级启动引导程序通过以太网用户数据报协议接收底层镜像文件2,并对底层镜像文件2进行循环冗余校验,获得通过循环冗余校验的底层镜像文件2;
S252’:将通过循环冗余校验的底层镜像文件2更新至flash的第二区域镜像区,运行镜像区域标志更新为0XAAAAAAAA,使用校验计算结果更新存储介质flash中的底层镜像文件2循环冗余校验码,并更新XDCFG_MULTIBOOT_ADDR_OFFSE寄存器的值为存储介质flash第二存储区域偏移0x220,底层镜像更新结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311504986.1A CN117453239A (zh) | 2023-11-10 | 2023-11-10 | 一种基于底层镜像文件的双冗余设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311504986.1A CN117453239A (zh) | 2023-11-10 | 2023-11-10 | 一种基于底层镜像文件的双冗余设计方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117453239A true CN117453239A (zh) | 2024-01-26 |
Family
ID=89579849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311504986.1A Pending CN117453239A (zh) | 2023-11-10 | 2023-11-10 | 一种基于底层镜像文件的双冗余设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117453239A (zh) |
-
2023
- 2023-11-10 CN CN202311504986.1A patent/CN117453239A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101375992B1 (ko) | 불휘발성 메모리로부터의 디바이스 부트업 동안 에러들의 핸들링 | |
CN110928499B (zh) | 一种芯片内嵌的flash存储器、芯片以及芯片的启动方法 | |
US9304788B2 (en) | Electronic device, configurable component and configuration information storage method thereof | |
US20110029726A1 (en) | Data updating method, memory system and memory device | |
CN105745617A (zh) | 用于预启动固件更新的选择性功率管理 | |
CN113110891B (zh) | 固态硬盘的固件加载方法、装置、计算机设备及存储介质 | |
CN107408090A (zh) | 输入/输出控制器访问通道的动态配置 | |
CN108182078B (zh) | 一种优化的弹载设备不拆弹软件在线升级方法 | |
US20150154091A1 (en) | Bios maintenance method | |
CN103150184B (zh) | 一种对闪存进行操作的方法和系统芯片 | |
CN117453239A (zh) | 一种基于底层镜像文件的双冗余设计方法 | |
CN116185299A (zh) | 闪存控制器及相关装置和方法 | |
CN115951920A (zh) | 移动设备升级方法、装置、存储单元和移动设备 | |
CN114741091A (zh) | 固件加载方法、装置、电子设备及计算机可读存储介质 | |
JP2001117766A (ja) | マスクromのパッチ機能を備えた情報処理装置 | |
CN104751881B (zh) | 快闪存储器烧录方法 | |
CN108121562B (zh) | 固件版本切换方法、电子设备和bios芯片 | |
US20060282626A1 (en) | Memory device and method of controlling operation of the memory device | |
US7490232B2 (en) | Disk device using disk to rewrite firmware and firmware determination method | |
CN117762456A (zh) | 一种片上系统及片上系统启动固件的升级方法 | |
CN117524278A (zh) | 动态随机存储器兼容方法、装置和设备 | |
CN113986261A (zh) | 一种数据刷写的方法、相关装置、设备以及可读存储介质 | |
KR100321999B1 (ko) | 스크립트를이용한프로그램패치방법 | |
CN115686371A (zh) | SoPC软件镜像存储及引导方法 | |
CN114691180A (zh) | 处理器芯片的软件升级方法、装置、处理器和处理器系统 |
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 |