System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于软件修复,具体涉及一种飞行器软件冗余备份与修复方法。
技术介绍
1、飞行器软件包括bootloader引导软件、fpga软件、应用软件,通常存储在flash器件内,需要软件运行时,将flash内存储的程序代码文件搬运到内存中。因此,飞行器软件在flash器件内存储的程序数据的正确性至关重要,决定着飞行器软件是否能够正常运行。
2、由于flash的固有特性,在长时间贮存条件下,可能出现存储数据位翻转的问题,飞行器软件若在关键代码、数据上发生数据位反转,则有可能导致系统崩溃,影响系统可靠性。
3、目前,飞行器软件针对flash可能出现的存储数据位翻转的问题,通常只采用应用程序双区冗余机制,只能解决应用软件可能出现的数据位翻转的问题,但无法避免由bootloader引导软件和fpga软件数据位翻转引起的系统崩溃问题。因此,提出一种飞行器软件冗余备份与修复方法,降低飞行器软件因flash存储数据位翻转导致启动失败的风险,同时大大降低了飞行器软件的维护成本。
技术实现思路
1、本专利技术的目的在于克服现有技术中的不足,提供一种飞行器软件冗余备份与修复方法。本专利技术方案能够解决上述现有技术中存在的问题。
2、本专利技术的技术解决方案:
3、根据第一方面,提供一种飞行器软件冗余备份与修复方法,包括以下步骤:
4、将fpga数据体前部添加文件头和后部添加时钟,构成fpga软件,所述的文件头包括fpga数据体在flash中b
5、将包括二级bootloader引导软件、fpga软件、应用软件在内的飞行器软件的数据冗余备份存储在flash的a、b两区中,确保flash的a、b两区中的数据完全相同;
6、一级bootloader引导软件启动后,读取flash中a,b区的二级bootloader引导软件,对a区二级bootloade引导软件进行校验,若校验结果正确则加载a区二级bootloader引导软件,若校验结果错误,则对b区二级bootloade引导软件进行校验,若b区校验正确,则加载b区二级bootloader软件,从而实现二级bootloader引导软件双区冗余的引导启动,若b区校验不正确,则二级bootloader引导软件引导启动失败;
7、二级bootloader引导软件启动后,读取flash中a,b区的应用软件,对a区应用软件进行校验,若校验成功则启动a区应用软件,若校验不成功,则对b区应用软件进行校验,若b区校验正确,则加载b区应用软件,若b区校验不正确,则应用软件引导失败;
8、对fpga软件按启动流程启动,加载对应分区的fpga软件;
9、对二级bootloader引导软件、fpga软件、应用软件分别进行双区校验,根据校验结果,进行软件修复,将校验正确flash区的软件烧写到校验错误的flash区。
10、进一步的,将二级bootloader引导软件a,b区flash地址作为一级bootloader引导软件的配置参数,并尽量减小一级bootloader代码量。
11、进一步的,所述的二级bootloader引导软件校验的方法为:
12、获取二级bootloader的数据长度和二级bootloader预计算正确的校验结果,存放在flash对应的a区中和flash的b区中;
13、从flash中获取a和/或b区二级bootloader数据长度和预计算正确的校验结果,并分别计算a和/或b区二级bootloader数据的校验结果,将计算的校验结果和预计算正确的校验结果进行比较,若相同,则该区二级bootloader引导软件数据正确,若不同,则该区二级bootloader引导软件数据出现错误;以上步骤中,若a或b区的单区检验,则在和/或关系中选或,若为a和b区的双区检验,则在和/或关系中选和。
14、进一步的,所述的应用软件的校验方法为:
15、获取应用软件的数据长度和应用软件预计算正确的校验结果,存放在flash对应的a区中和flash的b区中;
16、从flash中获取a和/或b区应用软件数据长度和预计算正确的校验结果,并分别计算a和/或b区应用软件数据的校验结果,将计算的校验结果和预计算正确的校验结果进行比较,若相同,则该区应用软件数据正确,若不同,则该区应用软件数据出现错误;以上步骤中,若a或b区的单区检验,则在和/或关系中选或,若为a和b区的双区检验,则在和/或关系中选和。
17、进一步的,所述的fpga软件启动流程为:
18、读取a区中fpga软件文件头,获取跳转地址为b区fpga数据体起始地址,执行跳转指令后,对b区fpga数据体进行校验,若校验成功,则加载b区fpga软件,若校验不成功,则触发定时器,定时器开始计时,等待定时器计时结束后,此时fpga软件启动回滚功能,指针跳转到fpga软件a区fpga数据体进行启动,对a区数据体进行校验,校验成功则加载a区fpga软件,从而实现了基于fpga软件双区冗余的引导启动。
19、进一步的,所述的对fpga软件进行校验的方法为:
20、获取fpga软件的数据长度和fpga软件预计算正确的校验结果,存放在flash对应的a区中和flash的b区中;
21、从flash中获取a和/或b区fpga软件数据长度和预计算正确的校验结果,并计算a和/或b区fpga软件数据的校验结果,将计算的校验结果和预计算正确的校验结果进行比较,若相同,则该区fpga软件数据正确,若不同,则该区fpga软件数据出现错误;以上步骤中,若a或b区的单区检验,则在和/或关系中选或,若为a和b区的双区检验,则在和/或关系中选和。
22、进一步的,所述的校验结果存放在flash异常检测故障字,通过通讯数据发送给测试设备。
23、进一步的,所述的自动修复的方法为:
24、通过区域完整性校验和双区对比两种方法的结合,实现快速定位故障地址,通过重写该地址实现自动修复。
25、根据第二方面,提供一种飞行器,所述飞行器使用如本申请所述的一种飞行器软件冗余备份与修复方法进行飞行器软件修复。
26、本专利技术与现有技术相比的有益效果:
27、本专利技术通过对飞行器软件数据的双区冗余备份,并对错误的数据进行修复,降低飞行器软件出现flash位反转问题,降低了飞行器软件的维护成本。
本文档来自技高网...【技术保护点】
1.一种飞行器软件冗余备份与修复方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种飞行器软件冗余备份与修复方法,其特征在于,将二级BootLoader引导软件A,B区FLASH地址作为一级BootLoader引导软件的配置参数,并尽量减小一级BootLoader代码量。
3.根据权利要求2所述的一种飞行器软件冗余备份与修复方法,其特征在于,所述的二级BootLoader引导软件校验的方法为:
4.根据权利要求3所述的一种飞行器软件冗余备份与修复方法,其特征在于,所述的应用软件的校验方法为:
5.根据权利要求4所述的一种飞行器软件冗余备份与修复方法,其特征在于,所述的FPGA软件启动流程为:
6.根据权利要求5所述的一种飞行器软件冗余备份与修复方法,其特征在于,获取FPGA软件的数据长度和FPGA软件预计算正确的校验结果,存放在FLASH对应的A区中和FLASH的B区中;
7.根据权利要求6所述的一种飞行器软件冗余备份与修复方法,其特征在于,所述的校验结果存放在FLASH异常检测故障字,通过通讯数据
8.根据权利要求7所述的一种飞行器软件冗余备份与修复方法,其特征在于,所述的自动修复的方法为:
9.一种飞行器,其特征在于,所述飞行器使用如权利要求1-8任一所述的一种飞行器软件冗余备份与修复方法进行飞行器软件修复。
...【技术特征摘要】
1.一种飞行器软件冗余备份与修复方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种飞行器软件冗余备份与修复方法,其特征在于,将二级bootloader引导软件a,b区flash地址作为一级bootloader引导软件的配置参数,并尽量减小一级bootloader代码量。
3.根据权利要求2所述的一种飞行器软件冗余备份与修复方法,其特征在于,所述的二级bootloader引导软件校验的方法为:
4.根据权利要求3所述的一种飞行器软件冗余备份与修复方法,其特征在于,所述的应用软件的校验方法为:
5.根据权利要求4所述的一种飞行器软件冗余备份与修复方法,其特征在于,...
【专利技术属性】
技术研发人员:吴雪琴,黄建,张信语,薛涛,高凯,孙碧珣,张鑫,洋婷,张紫君,王天乙,张盛楠,翟琨,
申请(专利权)人:北京自动化控制设备研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。