CN117762523A - 星载计算机操作系统对单粒子反转的恢复启动方法及系统 - Google Patents
星载计算机操作系统对单粒子反转的恢复启动方法及系统 Download PDFInfo
- Publication number
- CN117762523A CN117762523A CN202311748843.5A CN202311748843A CN117762523A CN 117762523 A CN117762523 A CN 117762523A CN 202311748843 A CN202311748843 A CN 202311748843A CN 117762523 A CN117762523 A CN 117762523A
- Authority
- CN
- China
- Prior art keywords
- mirror
- image
- images
- operating system
- bare
- 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 40
- 239000002245 particle Substances 0.000 title abstract description 21
- 238000011084 recovery Methods 0.000 claims abstract description 27
- 238000011161 development Methods 0.000 abstract description 4
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 238000005192 partition Methods 0.000 description 13
- 230000000694 effects Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000012795 verification Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 208000033999 Device damage Diseases 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种星载计算机操作系统对单粒子反转的恢复启动方法及系统,包括:将操作系统镜像按照三模冗余的方式分三组存放在emmc裸扇区中;在所述操作系统启动后,启动一个任务,用于定期检查存储在所述emmc裸扇区中的操作系统镜像做恢复操作;uboot引导操作系统启动时,对当前使用的emmc裸扇区中的镜像进行校验,选择正确的镜像加载。本发明提高了非宇航级存储芯片面对单粒子翻转时的健壮性,节约了成本,有利于民用宇航事业的发展,具有现实意义和良好的应用前景。
Description
技术领域
本发明涉及计算机技术领域,具体地,涉及一种星载计算机操作系统对单粒子反转的恢复启动方法及系统。
背景技术
单粒子效应(SEE)是指高能带电粒子在穿过微电子器件时,在器件内部敏感区产生电子-空穴对,这些电荷被灵敏器件电极收集后,造成器件逻辑状态的非正常改变或器件损坏。由于这种效应是单个粒子作用的结果,因此称为单粒子效应或单粒子事件。
恶劣的空间环境使得航天电子器件面临发生单粒子效应的风险,尤其是随着半导体器件集成度的不断提高,单粒子效应越来越严重,已经成为影响航天器可靠性和运行寿命的重要因素。
近年来随着空间技术的发展,卫星需求不断增加,我国发射大量民用卫星,但是专用的宇航级存储芯片价格高昂,同时车规级芯片或军规级存储芯片并不能很好的应对空间环境中复杂的电子环境,一旦发生单粒子反转轻则操作系统中软件工作不正常,重则会导致卫星无法正常工作。
专利文献CN116451233A公开了一种卫星操作系统软件安全启动的方法,包括三个间隔的裸扇区用于存放操作系统镜像,系统启动时依次比较三份镜像存储的CRC值和计算出来的CRC值,如果三个中有一个一致则加载该镜像,否则采用三取二的方式加载这个三个裸盘存储区中的星载操作系统镜像。
但是,专利文献CN108958814A三份镜像保存的是同一镜像,如果三份镜像反转位置在同一位,则无法修复该问题,同时由于存储同一版本镜像当出现升级系统出现问题时,无法进行回滚操作,
专利文献CN108958814A公开了一种多模冗余的嵌入式操作系统启动方法,包括步骤一、针对星载嵌入式计算机,将使用的星载操作系统进行压缩;步骤二、根据操作系统的个数以及星载嵌入式计算机的存储器大小,对存储器进行分区,每一个分区存储一个操作系统;将原本存储一个操作系统的存储器划分为多个分区,每个分区有自己的起始地址,每个分区存储一个操作系统;步骤三、星载计算机启动时首先使用bootloader手动选择或是自动选择当前使用的操作系统,并根据分区表内对应操作系统分区的校验信息进行CRC校验,判断该分区的操作系统是否正常启动,如果是,进入步骤四;否则,进入步骤五;使用的操作系统默认初始值为第一分区中存储的操作系统;步骤四、按照对该操作系统的压缩方式对应的解压方式进行解压;将解压完成的操作系统装载至内存指定位置,并且将地址传入CPU,开始启动操作系统并运行;在操作系统启动后,利用启动的操作系统的文件系统对其余分区的操作系统镜像进行管理,进行操作系统镜像的在线更新或者进行校验失败的镜像修复和替换;步骤五、按顺序选择下一个分区的操作系统,返回步骤三,进行校验与解压,以此类推直到进行到最后一个操作系统分区。
但是,专利文献CN108958814A将操作系统存储在文件系统下,如果单粒子反转发生在文件系统的分区表区域,会导致该组镜像因分区表异常而读取故障。
为了解决文件系统出现单粒子翻转问题导致操作系统故障的缺陷、操作系统升级出现异常后无法回滚的缺陷、存储的CRC值未做校验无法防止CRC值发生单粒子翻转的缺陷,本发明设计了一种星载计算机操作系统对单粒子反转的恢复方法和启动方法。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种星载计算机操作系统对单粒子反转的恢复启动方法及系统。
根据本发明提供的一种星载计算机操作系统对单粒子反转的恢复启动方法,包括:
步骤S1:将操作系统镜像按照三模冗余的方式分三组存放在emmc裸扇区中;
步骤S2:在所述操作系统启动后,启动一个任务,用于定期检查存储在所述emmc裸扇区中的操作系统镜像做恢复操作;
步骤S3:uboot引导操作系统启动时,对当前使用的emmc裸扇区中的镜像进行校验,选择正确的镜像加载。
优选地,所述三模冗余指三份一样的镜像为一组存放在emmc的裸扇区中,三份镜像互为备份;
所述存放在emmc裸扇区中的三组镜像包括当前版本镜像、上一版本镜像和出厂镜像;
所述裸扇区指未加载文件系统的部分。
优选地,所述操作系统镜像包括镜像长度、镜像CRC值和镜像;
所述镜像CRC值指将镜像通过CRC-32算法计算得出的一个数值;
所述镜像长度和镜像CRC值经过汉明码校验指两个数据按照4bit进行拆分,每4bit进行汉明码校验后,再组合为一个整体存放。
优选地,所述步骤S1包括如下子步骤:
步骤S1.1:从emmc裸扇区读取正确的当前版本镜像暂存在内存中;
步骤S1.2:将内存中的当前版本正确镜像覆写到emmc裸扇区中上一版本镜像的位置;
步骤S1.3:将新镜像存放到emmc裸扇区的当前镜像位置。
优选地,所述步骤S1.1包括如下步骤:
步骤S1.1.1:读取当前版本镜像三个镜像文件的CRC值通过汉明码解码得到三个镜像的实际CRC值,若有至少一个汉明码解码失败,则执行步骤S1.1.2;若汉明码解码成功,则执行步骤S1.1.3;
步骤S1.1.2:对三个镜像的CRC值进行三取二操作,尝试恢复单粒子翻转,执行步骤S1.1.1;
步骤S1.1.3:读取当前版本镜像三个镜像文件的长度值通过汉明码解码得到三个镜像的实际长度值,若有至少一个汉明码解码失败,则执行步骤S1.1.4;若汉明码解码成功,则执行步骤S1.1.5;
步骤S1.1.4:对三个镜像的长度值进行三取二操作,尝试恢复单粒子翻转,执行步骤S1.1.3;
步骤S1.1.5:根据得到镜像正确长度值,重新计算三个镜像的CRC值;
步骤S1.1.6:将计算出的镜像CRC值与从emmc裸扇区取出的正确CRC值进行比较,选择CRC值一致的正确的镜像读取到内存。
优选地,所述步骤S2包括以下子步骤:
步骤S2.1:将一组镜像中的三份镜像从emmc裸扇区读取到内存中;
步骤S2.2:将每一份镜像的镜像长度和镜像CRC值通过汉明码解码为原始值;
步骤S2.3:对三份镜像的的镜像长度和镜像CRC值进行三取二操作,获取正确值;
步骤S2.4:依次计算三份镜像的CRC值,与正确的CRC值进行比较,确定出错镜像;
步骤S2.5:将正确镜像覆写到出错镜像位置。
优选地,所述三取二操作指将三份数据按照字节为单位,两两相与,再将两两相与的三份结果进行或操作,得出正确结果。
优选地,所述步骤S3包括以下子步骤:
步骤S3.1:读取当前版本镜像中三份镜像从emmc裸扇区读取到内存中;
步骤S3.2:将每一份镜像的镜像长度和镜像CRC值通过汉明码解码为原始值;
步骤S3.3:对三份镜像的的镜像长度和镜像CRC值进行三取二操作,获取正确的CRC值;
步骤S3.4:依次计算三份镜像的CRC值,与所述正确的CRC值进行比较,确定是否有正常镜像,若是,则uboot加载所述镜像;若否,则在上一版本镜像中重复执行步骤S3.1至步骤S3.4。
根据本发明提供的一种星载计算机操作系统对单粒子反转的恢复启动系统,包括:
模块M1:将操作系统镜像按照三模冗余的方式分三组存放在emmc裸扇区中;
模块M2:在所述操作系统启动后,启动一个任务,用于定期检查存储在所述emmc裸扇区中的操作系统镜像做恢复操作;
模块M3:uboot引导操作系统启动时,对当前使用的emmc裸扇区中的镜像进行校验,选择正确的镜像加载。
优选地,所述三模冗余指三份一样的镜像为一组存放在emmc的裸扇区中,三份镜像互为备份;
所述存放在emmc裸扇区中的三组镜像包括当前版本镜像、上一版本镜像和出厂镜像;
所述裸扇区指未加载文件系统的部分;
所述操作系统镜像包括镜像长度、镜像CRC值和镜像;所述镜像CRC值指将镜像通过CRC-32算法计算得出的一个数值;所述镜像长度和镜像CRC值经过汉明码校验指两个数据按照4bit进行拆分,每4bit进行汉明码校验后,再组合为一个整体存放。
与现有技术相比,本发明具有如下的有益效果:
1、本发明能够在裸扇区中存储操作系统,防止因文件系统出现单粒子翻转问题导致操作系统故障。
2、本发明通过设计多级的操作系统存储机制,可以在操作系统升级出现问题时回滚操作系统,增加了对存储的CRC值和镜像长度进行校验的步骤,可以解决CRC值或镜像长度数据出现单粒子翻转的情况。
3、本发明提高了非宇航级存储芯片面对单粒子翻转时的健壮性,节约了成本,有利于民用宇航事业的发展,具有现实意义和良好的应用前景。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明的工作流程示意图;
图2为本发明中三组镜像文件在emmc裸扇区中地址分配示意图;
图3为本发明中将存放镜像到emmc裸扇区的流程示意图;
图4为本发明中操作系统镜像做恢复操作流程示意图;
图5为本发明中uboot加载操作系统流程示意图;
图6为本发明中uboot、emmc裸扇区中镜像、操作系统三者关系示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
本发明包括三个部分:第一部分:将操作系统镜像按照三模冗余的方式分三组存放在emmc的裸扇区中,每一份镜像都包括镜像长度、镜像的CRC值和镜像,且镜像长度和镜像的CRC值存储的是经过汉明码校验过的数据。第二部分:操作系统启动后会启动一个任务,定期检查存储在emmc裸扇区的中的操作系统镜像,做三取二的操作,对发生问题的比特位做恢复操作。第三部分:uboot引导操作系统启动的时候会对当前使用的一组镜像进行校验若无问题则加载该组镜像到内存指定位置,若有问题则加载下一组镜像。
根据本发明提供的一种星载计算机操作系统对单粒子反转的恢复启动方法,包括如下步骤:
步骤S1:将操作系统镜像按照三模冗余的方式分三组存放在emmc裸扇区中。所述三模冗余指三份一样的镜像为一组存放在emmc的裸扇区中,三份镜像互为备份。所述存放在emmc裸扇区中的三组镜像包括当前版本镜像、上一版本镜像和出厂镜像,每组镜像有三份一样的镜像作为三模冗余,三者的排列顺序如图2所示。emmc存储器的管理以块为基本单位,每个块的大小为512字节,裸扇区指未加载文件系统的部分。emmc中裸扇区的位置选用从地址0开始的一段空间,以能存贮完所有镜像为标准,剩余空间作为操作系统的文件系统使用空间。修改操作系统emmc驱动代码,将裸扇区最后一个地址加一的地址作为首地址赋值给emmc驱动。
所述操作系统镜像包括镜像长度、镜像CRC值和镜像。所述镜像长度、镜像CRC值和镜像的存储地址分别是从低到高的,也就是说,按存储地址从低到高分别是镜像长度、镜像CRC值、镜像,其中镜像长度和镜像CRC值经过汉明码校验。具体地,所述镜像CRC值指将镜像通过CRC-32算法计算得出的一个数值。所述镜像长度和镜像CRC值经过汉明码校验指两个数据按照4bit进行拆分,每4bit进行汉明码校验后,再组合为一个整体存放。例如,两个32位数据分别按照4bit进行拆分为8份,每4bit进行汉明码校验后,同一32位数据的8份再组合为一个整体存放。所述步骤S1包括如下子步骤:
步骤S1.1:从emmc裸扇区读取正确的当前版本镜像暂存在内存中。所述步骤S1.1包括如下步骤:
步骤S1.1.1:读取当前版本镜像三个镜像文件的CRC值通过汉明码解码得到三个镜像的实际CRC值,若有至少一个汉明码解码失败,则执行步骤S1.1.2;若汉明码解码成功,则执行步骤S1.1.3。
步骤S1.1.2:对三个镜像的CRC值进行三取二操作,尝试恢复单粒子翻转,执行步骤S1.1.1。
步骤S1.1.3:读取当前版本镜像三个镜像文件的长度值通过汉明码解码得到三个镜像的实际长度值,若有至少一个汉明码解码失败,则执行步骤S1.1.4;若汉明码解码成功,则执行步骤S1.1.5
步骤S1.1.4:对三个镜像的长度值进行三取二操作,尝试恢复单粒子翻转,执行步骤S1.1.3。
步骤S1.1.5:根据得到镜像正确长度值,重新计算三个镜像的CRC值。
步骤S1.1.6:将计算出的镜像CRC值与从emmc裸扇区取出的正确CRC值进行比较,选择CRC值一致的正确的镜像读取到内存。
步骤S1.2:将内存中的当前版本正确镜像覆写到emmc裸扇区中上一版本镜像的位置。所述步骤S1.2包括如下步骤:
步骤S1.2.1:将镜像CRC值和长度值通过汉明码编码。
步骤S1.2.2:将镜像,汉明码编码后的镜像长度,汉明码编码后的镜像CRC值,按表1所示存入上一版镜像#3、#4、#5的emmc裸扇区位置。
步骤S1.3:将新镜像存放到emmc裸扇区的当前镜像位置。所述步骤S1.3包括如下步骤:
步骤S1.3.1:将新镜像CRC值和长度值通过汉明码编码。
步骤S1.3.2:将新镜像,汉明码编码后的新镜像长度,汉明码编码后的新镜像CRC值,按表1所示存入当前使用镜像#0、#1、#2的emmc裸扇区位置。
进一步地存放镜像到emmc裸扇区的流程图如附图3所示
步骤S2:在所述操作系统启动后,启动一个任务,用于定期检查存储在所述emmc裸扇区中的操作系统镜像做恢复操作。所述步骤S2中对操作系统镜像做恢复操作包含以下子步骤:
步骤S2.1:将一组镜像中的三份镜像从emmc裸扇区读取到内存中。将任意一组,可以是当前使用镜像#0、#1、#2,也可以是上一版镜像#3、#4、#5,也可以是出场镜像#6、#7、#8中包含的三部分镜像长度、镜像CRC值、镜像读取到系统的内存中。
步骤S2.2:将每一份镜像的镜像长度和镜像CRC值通过汉明码解码为原始值。所述步骤S2.2包括:
步骤S2.2.1:将镜像三个镜像文件的CRC值通过汉明码解码得到三个镜像的实际CRC值,若有至少一个汉明码解码失败,则执行步骤S2.2.2;若汉明码解码成功,则执行步骤S2.2.3。
步骤S2.2.2:对三个镜像的CRC值进行三取二操作,尝试恢复单粒子翻转,执行步骤S2.2.1。
步骤S2.2.3:将镜像三个镜像文件的长度值通过汉明码解码得到三个镜像的实际长度值,若有至少一个汉明码解码失败,则执行步骤S2.2.4;若汉明码解码成功,则执行步骤S2.3。
步骤S2.2.4:对三个镜像的长度值进行三取二操作,尝试恢复单粒子翻转,执行步骤S2.2.3。
步骤S2.3:对三份镜像的的镜像长度和镜像CRC值进行三取二操作,获取正确值。三取二操作指将三份数据按照字节为单位,两两相与,再将两两相与的三份结果进行或操作,得出正确结果。
步骤S2.4:依次计算三份镜像的CRC值,与正确的CRC值进行比较,确定出错镜像。
包括如下步骤:
步骤S2.4.1:根据得到镜像正确长度值,重新计算三个镜像的CRC值。
步骤S2.4.2:将计算出的镜像CRC值与从emmc裸扇区取出的正确CRC值进行比较,确定三份镜像哪个出现了单粒子翻转问题。
步骤S2.5:将正确镜像覆写到出错镜像位置。将三份镜像中未出错的镜像的三部分覆写到出错镜像的三部份上,例如当前使用镜像#0出错,#1未出错时,使用#1的三部分内容覆写到#0中。
对操作系统镜像做恢复操作流程图如附图4所示。根据所选平台的性能进行设置指根据平台的相关性能指标设置系统多长时间对三组镜像进行进行一次检查,检查是否发生位翻转问题并进行恢复操作。
步骤S3:uboot引导操作系统启动时,对当前使用的emmc裸扇区中的镜像进行校验,选择正确的镜像加载。如图5所示,所述步骤S3中uboot引导操作系统启动时的校验包含以下子步骤:
步骤S3.1:读取当前版本镜像中三份镜像从emmc裸扇区读取到内存中。
步骤S3.2:将每一份镜像的镜像长度和镜像CRC值通过汉明码解码为原始值。所述步骤S3.2包括如下步骤:
步骤S3.2.1:将镜像三个镜像文件的CRC值通过汉明码解码得到三个镜像的实际CRC值,若有至少一个汉明码解码失败,则执行步骤S3.2.2;若汉明码解码成功,则执行步骤S3.2.3。
步骤S3.2.2:对三个镜像的CRC值进行三取二操作,尝试恢复单粒子翻转,执行步骤S3.2.1。
步骤S3.2.3:将镜像三个镜像文件的长度值通过汉明码解码得到三个镜像的实际长度值,若有至少一个汉明码解码失败,则执行步骤S3.2.4;若汉明码解码成功,则执行步骤S3.3。
步骤S3.2.4:对三个镜像的长度值进行三取二操作,尝试恢复单粒子翻转,执行步骤S3.2.3。
步骤S3.3:对三份镜像的的镜像长度和镜像CRC值进行三取二操作,获取正确的CRC值。
步骤S3.4:依次计算三份镜像的CRC值,与所述正确的CRC值进行比较,确定是否有正常镜像,若是,则uboot加载所述镜像;若否,则在上一版本镜像中重复执行步骤S3.1至步骤S3.4。若所述上一版本镜像加载失败则在出厂镜像中执行将步骤S3.1至步骤S3.4。
本发明所提供的星载计算机操作系统对单粒子反转的恢复启动方法,通过以下三部分模块实现,所述三个模块互相依存如图6所示。所述三个模块包括操作系统存储模块、操作系统单粒子翻转恢复模块和操作系统引导模块。
进一步地,以7045平台为例,使用一块存储容量16GB的emmc,对本发明的实现具体描述如下:
操作系统储存模块主要分为以下几个部分:
一、emmc驱动,emmc存储器的管理以块为基本单位,每个块的大小为512字节,裸扇区指emmc中未加载文件系统的部分。将emmc中裸扇区的位置选用从地址0开始的一段空间,以能存贮完所有镜像为标准,剩余空间作为操作系统的文件系统使用空间,修改操作系统emmc驱动代码,将裸扇区最后一个地址加一的地址作为首地址赋值给emmc驱动。修改完成后本项目中使用的EMMC的扇区数共计0x1DA4000块,共计15.176GB。本方案使用EMMC起始的0x50000个扇区存储镜像文件,后续的存储空间用来存储文件系统
二、镜像存储的个数如表1所示:
表1镜像文件地址分配表
可以看到分为三组镜像分别是当前使用镜像、上一版镜像、出厂镜像,每一组镜像中都有三个相同的备份,每一份镜像由三个部分组成,按存储的地址从低到高分别是镜像长度、镜像CRC值、镜像,为方便描述,“reworks.elf”表示镜像,“reworks.elf.CRC32”表示镜像文件的通过汉明码编码的32位CRC校验值,“reworks.elf.len”表示镜像文件的通过汉明码编码的32位长度值。需要说明的是,表1所表示的地址仅作为举例,实际使用也可以根据存储芯片的划分来进行合理的规划。
三、汉明码编码和解码为32位数据分别按照4bit进行拆分为8份,每4bit进行汉明码校验后,32位数据的8份再组合为一个整体存放,解码的时候将数据每8bit进行解码,然后拼接为一个32位数,当每8bit数据只有1bit发生位反转的情况可以进行修复,从而增强数据在面对位反转时的健壮性。其中,汉明码编码格式如表2所示:
表2
二进制bit位 | 1000 | 0111 | 0110 | 0101 | 0100 | 0011 | 0010 | 0001 |
数据位 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
汉明码编码 | P_CRC | D4 | D3 | D2 | P3 | D1 | P2 | P1 |
汉明码校验指4bit数据需要3bit的汉明码冗余bit位和1bit的汉明码校验位。4bit数据编码格式如表2所示,4bit的原始数据为D4、D3、D2、D1,P1、P2、、P3为汉明码校验位,P_CRC是低7位的校验位。P1、P2、P3、P_CRC的计算方法如下所示:
P1=XOR(D1,D2,D4)
P2=XOR(D1,D3,D4)
P4=XOR(D2,D3,D4)
P_CRC=XOR(D4,D3,D2,P3,D1,P2,P1)
在读取文件长度和CRC校验码时,需要对读取的数据进行检验,校验方法如下:
E1=XOR(P1,D1,D2,D4)
E2=XOR(P2,D1,D3,D4)
E3=XOR(P3,D2,D3,D4)
P=XOR(P1,P2,P3,D1,D2,D3,D4,P_CRC)
E=E3<<2+E2<<1+E1;
根据E和P的值,分四种情况:
1)E=0,P=0没有错误;
2)E≠0,P=1有一位错,并可以纠正,错误位是表1中E对应的二进制的数据位,翻转该位即可;
3)E≠0,P=0有两位出错,但是不能纠正;
4)E=0,P=1汉明码奇偶校验位出错。
情况1)和4)数据位没有错误,直接取数据位D4D3D2D1即可;2)数据位出现一位可纠正的错误,纠错后取数据位D4D3D2D1即可;3)出现两位错误,不可纠错。
四、三取二操作是指将三份数据按照8bit为大小进行拆分,每8bit数据按照三份两两按位相与后,在将三个两两相与的结果,按位或操作得到正确的8bit数据。当三份8bit的数据,只要同一bit位,三份数据只要有两份数据没有发生位反转,就能得出该位正确的数据,同时也是我们恢复错误数据的核心点。
五、CRC计算模块:模块使用通用从CRC-32计算方法,并通过查表法提高了计算效率,节省了cpu运行资源的消耗。
结合上述5个功能就能组成对操作系统存储功能的模块,如图3所示的存储操作系统的一个流程。其中出厂镜像是提前存放好的,可以在通过emmc驱动读写裸扇区的通用接口实现这里不做过多描述。一开始emmc中只存在当前版本的镜像,当需要升级系统的时候需要读取出当前版本的镜像判断镜像是否存在异常,有异常则进行修复,无异常或修复好后存入emmc中上一版本镜像对应的内存位置。同时将升级镜像存入当前版本镜像的位置。从操作系统存储功能的模块可以看出当前操作系统存在三份冗余,在升级操作系统过程中还能对出错的镜像进行修复,提高了操作系统的健壮性。
操作系统单粒子翻转恢复模块包括汉明码编码和解码模块、三取二操作模块、CRC-32计算模块和emmc驱动。如图4所示所述操作系统单粒子翻转恢复模块的执行流程示意图。这是系统启动后执行的一个守护进程,依据系统的硬件性能和实际情况,定期执行,依次检验并修复当前使用镜像、上一版镜像、出厂镜像中出现的位翻转问题。从而保证宇航器在运行的过程中系统的稳定。
操作系统引导模块包括汉明码编码和解码模块、三取二操作模块、CRC-32计算模块和emmc驱动。如图5所示,所述操作系统引导模块的执行流程示意图。这是操作系统启动前的引导程序,需要在uboot中实现该逻辑,在系统上电后,通过对三组镜像依次进行判断和修复,在最坏的情况下也能保证至少有一组镜像能够启动和运行,极大的提高了操作系统的健壮性。
综上所述,结合上述三个模块实现的一种星载计算机操作系统对单粒子反转的恢复方法和启动方法,通过在操作系统的运行阶段,加载阶段以及存储阶段,都增强的操作系统面对单粒子翻转时的健壮性,使得非宇航级的emmc在面对宇宙中的复杂环境可以正常工作,降低了成本对发展卫星事业,发射大量的低轨卫星有良好的促进作用。
本发明旨在保证在空间环境中,增强非宇航级存储器件在面对单粒子翻转问题时的健壮性,使星载计算机系统能安全可靠的启动运行。
本发明还提供一种星载计算机操作系统对单粒子反转的恢复启动系统,所述星载计算机操作系统对单粒子反转的恢复启动系统可以通过执行所述星载计算机操作系统对单粒子反转的恢复启动方法的流程步骤予以实现,即本领域技术人员可以将所述星载计算机操作系统对单粒子反转的恢复启动方法理解为所述星载计算机操作系统对单粒子反转的恢复启动系统的优选实施方式。
根据本发明提供的一种星载计算机操作系统对单粒子反转的恢复启动系统,包括:
模块M1:将操作系统镜像按照三模冗余的方式分三组存放在emmc裸扇区中。三模冗余指三份一样的镜像为一组存放在emmc的裸扇区中,三份镜像互为备份。存放在emmc裸扇区中的三组镜像包括当前版本镜像、上一版本镜像和原始版本镜像。裸扇区指未加载文件系统的部分。操作系统镜像包括镜像长度、镜像CRC值和镜像。镜像CRC值指将镜像通过CRC-32算法计算得出的一个数值。镜像长度和镜像CRC值经过汉明码校验指两个数据按照4bit进行拆分,每4bit进行汉明码校验后,再组合为一个整体存放。模块M1包括如下子模块:
模块M1.1:从emmc裸扇区读取正确的当前版本镜像暂存在内存中。,模块M1.1包括如下模块:模块M1.1.1:读取当前版本镜像三个镜像文件的CRC值通过汉明码解码得到三个镜像的实际CRC值,若有至少一个汉明码解码失败,则触发模块M1.1.2;若汉明码解码成功,则触发模块M1.1.3。模块M1.1.2:对三个镜像的CRC值进行三取二操作,尝试恢复单粒子翻转,触发模块M1.1.1。模块M1.1.3:读取当前版本镜像三个镜像文件的长度值通过汉明码解码得到三个镜像的实际长度值,若有至少一个汉明码解码失败,则触发模块M1.1.4;若汉明码解码成功,则触发模块M1.1.5模块M1.1.4:对三个镜像的长度值进行三取二操作,尝试恢复单粒子翻转,触发模块M1.1.3。模块M1.1.5:根据得到镜像正确长度值,重新计算三个镜像的CRC值。模块M1.1.6:将计算出的镜像CRC值与从emmc裸扇区取出的正确CRC值进行比较,选择CRC值一致的正确的镜像读取到内存。模块M1.2:将内存中的当前版本正确镜像覆写到emmc裸扇区中上一版本镜像的位置。模块M1.3:将新镜像存放到emmc裸扇区的当前镜像位置。
模块M2:在操作系统启动后,启动一个任务,用于定期检查存储在emmc裸扇区中的操作系统镜像做恢复操作。模块M2包括以下子模块:模块M2.1:将一组镜像中的三份镜像从emmc裸扇区读取到内存中。模块M2.2:将每一份镜像的镜像长度和镜像CRC值通过汉明码解码为原始值。模块M2.3:对三份镜像的的镜像长度和镜像CRC值进行三取二操作,获取正确值。模块M2.4:依次计算三份镜像的CRC值,与正确的CRC值进行比较,确定出错镜像。模块M2.5:将正确镜像覆写到出错镜像位置。
模块M3:uboot引导操作系统启动时,对当前使用的emmc裸扇区中的镜像进行校验,选择正确的镜像加载。三取二操作指将三份数据按照字节为单位,两两相与,再将两两相与的三份结果进行或操作,得出正确结果。模块M3包括以下子模块:模块M3.1:读取当前版本镜像中三份镜像从emmc裸扇区读取到内存中。模块M3.2:将每一份镜像的镜像长度和镜像CRC值通过汉明码解码为原始值。模块M3.3:对三份镜像的的镜像长度和镜像CRC值进行三取二操作,获取正确的CRC值。模块M3.4:依次计算三份镜像的CRC值,与正确的CRC值进行比较,确定是否有正常镜像,若是,则uboot加载镜像;若否,则在上一版本镜像中重复触发模块M3.1至模块M3.4。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种星载计算机操作系统对单粒子反转的恢复启动方法,其特征在于,包括:
步骤S1:将操作系统镜像按照三模冗余的方式分三组存放在emmc裸扇区中;
步骤S2:在所述操作系统启动后,启动一个任务,用于定期检查存储在所述emmc裸扇区中的操作系统镜像做恢复操作;
步骤S3:uboot引导操作系统启动时,对当前使用的emmc裸扇区中的镜像进行校验,选择正确的镜像加载。
2.根据权利要求1所述的星载计算机操作系统对单粒子反转的恢复启动方法,其特征在于,所述三模冗余指三份一样的镜像为一组存放在emmc的裸扇区中,三份镜像互为备份;
所述存放在emmc裸扇区中的三组镜像包括当前版本镜像、上一版本镜像和原始版本镜像;
所述裸扇区指未加载文件系统的部分。
3.根据权利要求1所述的星载计算机操作系统对单粒子反转的恢复启动方法,其特征在于,所述操作系统镜像包括镜像长度、镜像CRC值和镜像;
所述镜像CRC值指将镜像通过CRC-32算法计算得出的一个数值;
所述镜像长度和镜像CRC值经过汉明码校验指两个数据按照4bit进行拆分,每4bit进行汉明码校验后,再组合为一个整体存放。
4.根据权利要求1所述的星载计算机操作系统对单粒子反转的恢复启动方法,其特征在于,所述步骤S1包括如下子步骤:
步骤S1.1:从emmc裸扇区读取正确的当前版本镜像暂存在内存中;
步骤S1.2:将内存中的当前版本正确镜像覆写到emmc裸扇区中上一版本镜像的位置;
步骤S1.3:将新镜像存放到emmc裸扇区的当前镜像位置。
5.根据权利要求1所述的星载计算机操作系统对单粒子反转的恢复启动方法,其特征在于,所述步骤S1.1包括如下步骤:
步骤S1.1.1:读取当前版本镜像三个镜像文件的CRC值通过汉明码解码得到三个镜像的实际CRC值,若有至少一个汉明码解码失败,则执行步骤S1.1.2;若汉明码解码成功,则执行步骤S1.1.3;
步骤S1.1.2:对三个镜像的CRC值进行三取二操作,尝试恢复单粒子翻转,执行步骤S1.1.1;
步骤S1.1.3:读取当前版本镜像三个镜像文件的长度值通过汉明码解码得到三个镜像的实际长度值,若有至少一个汉明码解码失败,则执行步骤S1.1.4;若汉明码解码成功,则执行步骤S1.1.5;
步骤S1.1.4:对三个镜像的长度值进行三取二操作,尝试恢复单粒子翻转,执行步骤S1.1.3;
步骤S1.1.5:根据得到镜像正确长度值,重新计算三个镜像的CRC值;
步骤S1.1.6:将计算出的镜像CRC值与从emmc裸扇区取出的正确CRC值进行比较,选择CRC值一致的正确的镜像读取到内存。
6.根据权利要求1所述的星载计算机操作系统对单粒子反转的恢复启动方法,其特征在于,所述步骤S2包括以下子步骤:
步骤S2.1:将一组镜像中的三份镜像从emmc裸扇区读取到内存中;
步骤S2.2:将每一份镜像的镜像长度和镜像CRC值通过汉明码解码为原始值;
步骤S2.3:对三份镜像的的镜像长度和镜像CRC值进行三取二操作,获取正确值;
步骤S2.4:依次计算三份镜像的CRC值,与正确的CRC值进行比较,确定出错镜像;
步骤S2.5:将正确镜像覆写到出错镜像位置。
7.根据权利要求6所述的星载计算机操作系统对单粒子反转的恢复启动方法,其特征在于,所述三取二操作指将三份数据按照字节为单位,两两相与,再将两两相与的三份结果进行或操作,得出正确结果。
8.根据权利要求1所述的星载计算机操作系统对单粒子反转的恢复启动方法,其特征在于,所述步骤S3包括以下子步骤:
步骤S3.1:读取当前版本镜像中三份镜像从emmc裸扇区读取到内存中;
步骤S3.2:将每一份镜像的镜像长度和镜像CRC值通过汉明码解码为原始值;
步骤S3.3:对三份镜像的的镜像长度和镜像CRC值进行三取二操作,获取正确的CRC值;
步骤S3.4:依次计算三份镜像的CRC值,与所述正确的CRC值进行比较,确定是否有正常镜像,若是,则uboot加载所述镜像;若否,则在上一版本镜像中重复执行步骤S3.1至步骤S3.4。
9.一种星载计算机操作系统对单粒子反转的恢复启动系统,其特征在于,包括:
模块M1:将操作系统镜像按照三模冗余的方式分三组存放在emmc裸扇区中;
模块M2:在所述操作系统启动后,启动一个任务,用于定期检查存储在所述emmc裸扇区中的操作系统镜像做恢复操作;
模块M3:uboot引导操作系统启动时,对当前使用的emmc裸扇区中的镜像进行校验,选择正确的镜像加载。
10.根据权利要求1所述的星载计算机操作系统对单粒子反转的恢复启动系统,其特征在于,所述三模冗余指三份一样的镜像为一组存放在emmc的裸扇区中,三份镜像互为备份;
所述存放在emmc裸扇区中的三组镜像包括当前版本镜像、上一版本镜像和原始版本镜像;
所述裸扇区指未加载文件系统的部分;
所述操作系统镜像包括镜像长度、镜像CRC值和镜像;所述镜像CRC值指将镜像通过CRC-32算法计算得出的一个数值;所述镜像长度和镜像CRC值经过汉明码校验指两个数据按照4bit进行拆分,每4bit进行汉明码校验后,再组合为一个整体存放。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311748843.5A CN117762523A (zh) | 2023-12-18 | 2023-12-18 | 星载计算机操作系统对单粒子反转的恢复启动方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311748843.5A CN117762523A (zh) | 2023-12-18 | 2023-12-18 | 星载计算机操作系统对单粒子反转的恢复启动方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117762523A true CN117762523A (zh) | 2024-03-26 |
Family
ID=90321431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311748843.5A Pending CN117762523A (zh) | 2023-12-18 | 2023-12-18 | 星载计算机操作系统对单粒子反转的恢复启动方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117762523A (zh) |
-
2023
- 2023-12-18 CN CN202311748843.5A patent/CN117762523A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111552590B (zh) | 一种电力二次设备内存位翻转的检测恢复方法及系统 | |
US11474708B2 (en) | Memory system for handling a bad block and operation method thereof | |
KR101557572B1 (ko) | 메모리 회로들, 메모리에 액세스하는 방법 및 메모리를 복구하는 방법 | |
CA2588858A1 (en) | System and method for efficient uncorrectable error detection in flash memory | |
CN1971536A (zh) | 基本输入输出系统的纠错系统及方法 | |
CN107220097B (zh) | 一种大规模复杂结构软件的在轨烧写与重载方法 | |
US11886705B2 (en) | System and method for using free space to improve erasure code locality | |
CN111176890A (zh) | 一种星载软件数据存储及异常恢复方法 | |
US20140281316A1 (en) | Data management device and method for copying data | |
US9189327B2 (en) | Error-correcting code distribution for memory systems | |
CN115904798A (zh) | 存储器的纠错检错方法、系统以及控制器 | |
CN115309589A (zh) | 一种基板管理控制器恢复暂存区域的方法、系统及装置 | |
US8271854B2 (en) | Embedded electronic device and method for storing data | |
US11003531B2 (en) | Memory system and operating method thereof | |
US20180122494A1 (en) | Raid decoding architecture with reduced bandwidth | |
US7240272B2 (en) | Method and system for correcting errors in a memory device | |
CN110489268B (zh) | 一种应用于星上恶劣环境中存储系统的两级纠错编码方法与系统 | |
CN117762523A (zh) | 星载计算机操作系统对单粒子反转的恢复启动方法及系统 | |
CN109643261B (zh) | 闪存中的纠错方法 | |
CN111857884B (zh) | 高可靠星载软件启动系统及方法 | |
CN116737089B (zh) | 配置数据的存储方法、装置和系统 | |
JP2005056144A (ja) | フラッシュメモリ搭載電子装置、そのメモリデータ管理方法およびプログラム | |
CN111858126B (zh) | 一种基于k+m纠删集群的数据处理方法及装置 | |
CN113050887A (zh) | 闪存分区数据处理方法、装置、计算机设备和存储介质 | |
CN111061520B (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 |