基于erc32处理器内存数据抗干扰的存储方法及系统的制作方法

文档序号:8543587阅读:839来源:国知局
基于erc32处理器内存数据抗干扰的存储方法及系统的制作方法
【技术领域】
[0001]本发明涉及卫星星载设备数据传输的可靠性设计,尤其涉及一种基于ERC32处理器内存数据抗干扰的存储方法及系统。
【背景技术】
[0002]星载计算机在外层空间环境下使用,由于缺少地球磁场保护,内存单元中的数据位更容易受到如太阳风暴、宇宙射线等因素影响,出现瞬态的“O”变成“I”或“I”变成“O”的故障情况,这种现象称为“单粒子翻转”。
[0003]目前卫星型号中实现内存数据抗干扰主要有两种方法:一种方法通过于硬件电路EDAC检纠错,软件定期读写刷新内存中的每个单元,读单元时由于硬件上加入了适当的监督码位,配合EDAC算法,使得读出的数据可以纠正或检测出可能的位翻转;另一种方法采取三模冗余的存储方式,存储时将数据分别存储在三个不同的内存区域,使用前进行三取二表决,选取占多数的数值。
[0004]上述的两种内存数据抗干扰方法存在明显的不足:EDAC检纠错的方法由于受监督码位长度限制,目前只能纠正每个32位单元中的I位错误,而不能纠正两位及两位以上的错误,后者三取二中的数据存储在地址间隔较远的三个区域内,被完全破坏的可能性非常低,但是一般数据三模冗余恢复时首先会先读取三个内存单元的数据,如果存在错误则会引起故障陷阱中的陷阱(TRAP IN TRAP),这种情况会使得程序陷入死循环,另外三模冗余占用内存的开销较大,特别是在软件中大量采用时,编码上的实现会使得软件可读性下降,复杂程度上升,从而在另一个侧面影响软件可靠性。

【发明内容】

[0005]为了解决以上提出的不足,本发明提供了一种基于ERC32处理器内存数据抗干扰的存储方法,包括:
[0006]开始存储数据后:
[0007]每隔一第一时间,将数据存储到RAM中应用程序变量表的三个不同的地址单元;直至所有数据均被存储到三个保持一定地址间隔的区域中;
[0008]每隔一第二时间,对RAM中存入的数据进行刷新,并检测数据是否存在错误;若地址单元中的数据存在一位错,则通过EDAC纠正,再将纠正后的数据写回原地址单元;若地址单元中的数据存在多位错,则将该地址单元中的数据清零;
[0009]每隔一第三时间或处理器被复位后,读取被存入同一数据的三个地址单元中的数据,将三个地址单元中的数据进行三取二的表决,将占多数的数据的数值覆盖写回占少数的数据的地址单元。
[0010]可选的,在开始存储数据之前,还包括对RAM进行内存初始化的过程。
[0011]可选的,存入同一数据的三个不同的地址单元的地址间差值为固定值,且该固定值不小于所述应用程序表中所需存储的所有数据的合计长度对应的值。
[0012]可选的,通过EDAC纠正,再将纠正后的数据写回原地址单元的过程至少包括:
[0013]判断错误数据对应的地址寄存器数值是否位于RAM区域,若位于RAM区域中,则从该地址寄存器指示的地址单元中取出数据,纠正后再写回。
[0014]可选的,将该地址单元中的数据清零的过程至少包括:
[0015]判断错误数据对应的地址寄存器数值是否位于RAM区域以及陷阱寄存器中陷阱类型值是否为一特定值,若位于RAM区域且陷阱类型值为该特定值,则将该地址单元中的数据清零。
[0016]可选的,将纠正后的数据写回原地址单元以及将地址单元中的数据清零之后,还包括错误计数和系统故障状态寄存器复位的过程。
[0017]本发明还提供了一种基于ERC32处理器内存数据抗干扰的存储系统,包括:
[0018]统一三存模块,用以将数据存储到RAM中应用程序变量表的三个不同的地址单元;直至所有数据均被存储到三个保持一定地址间隔的区域中;
[0019]统一三取一模块,用以读取被存入同一数据的三个地址单元中的数据,将三个地址单元中的数据进行三取二的表决,将占多数的数据的数值覆盖写回占少数的数据的地址单元;
[0020]一位错处理模块,用以响应所述存储单元的检测结果,针对地址单元中的数据存在一位错的情况,通过EDAC纠正,再将纠正后的数据写回原地址单元;
[0021]多位错处理模块,用以响应所述存储单元的检测结果,针对地址单元中的数据存在多位错的情况,将该地址单元中的数据清零,复位处理器;
[0022]存储单元,用以对RAM中存入的数据进行刷新,读出并检测数据是否存在错误,从而调用启动所述一位错处理模块或多位错处理模块;
[0023]主程序模块,至少用以依据时间以及处理器是否被复位调用启动所述统一三存模块、存储单元、统一三取一模块;
[0024]以及所述应用程序变量表。
[0025]可选的,所述的基于ERC32处理器内存数据抗干扰的存储系统还包括内存初始化模块,用以对RAM进行内存初始化。
[0026]可选的,所述的基于ERC32处理器内存数据抗干扰的存储系统还包括中断初始化模块,用以为所述一位错处理模块和多位错处理模块配置相应的中断,从而使得所述存储单元能够通过中断调用所述一位错处理模块和多位错处理模块。
[0027]可选的,所述存储单元进一步用以通过中断调用所述一位错处理模块和多位错处理模块;所述存储单元在对数据进行刷新时,进一步用以:
[0028]关中断,读取指定的地址单元的数据到寄存器,然后写回到地址单元中,再开中断。
[0029]本发明利用ERC32处理器的异常陷阱机制,将EDAC和三模冗余两个方法结合起来使用,软件定期刷新内存,如果出现一位翻转,则采用EDAC方式之间纠正错误,如果出现多位错误,则首先清除单元中的错误数据,并触发特定的异常复位,再通过三取二恢复数据,在底层程序实现上对每个数据统一三存三取,上层应用程序不必在使用每个数据前单独进行三取二,从而降低软件复杂程序,提高软件可靠性。
[0030]为此,一种基于ERC32处理器的内存数据抗干扰方法可以改变这种不足,这种方法结合了 EDAC刷新和三取二两种方法的优点,同时也避免了各自存在的缺点,既能够简单快速纠正一位错误,又可以通过三取二恢复多位错误,提高了内存数据抗干扰的能力。
【附图说明】
[0031]图1是本发明一实施例中基于ERC32处理器内存数据抗干扰的存储方法及系统的数据流图;
[0032]图2是本发明一实施例中一位错处理的逻辑框图;
[0033]图3是本发明一实施例中多位错处理的逻辑框图。
【具体实施方式】
[0034]以下将结合图1至图3对本发明提供的基于ERC32处理器内存数据抗干扰的存储方法及系统进行详细的描述,其为本发明可选的实施例,可以认为,本领域的技术人员在不改变本发明精神和内容的范围内能够对其进行修改和润色。
[0035]请参考图1,本发明提供了一种基于ERC32处理器内存数据抗干扰的存储方法,包括:
[0036]开始存储数据后:
[0037]每隔一第一时间,将数据存储到RAM中应用程序变量表的三个不同的地址单元;直至所有数据均被存储到三个保持一定地址间隔的区域中;
[0038]每隔一第二时间,对RAM中存入的数据进行刷新,并检测数据是否存在错误;在本发明一可选的实施例中,对数据进行刷新的过程具体可以包括读取指定的地址单元的数据到寄存器,然后在写回到地址单元中;
[0039]每隔一第三时间或处理器被复位后,读取被存入同一数据的三个地址单元中的数据,将三个地址单元中的数据进行三取二的表决,将占多数的数据的数值覆盖写回占少数的数据的地址单元。
[0040]请参考图2,其示意的实施例中,若地址单元中的数据存在一位错,则通过EDAC纠正,再将纠正后的数据写回原地址单元;进一步来说,至少包括:判断错误数据对应的地址寄存器数值是否位于RAM区域,若位于RAM区域中,则从该地址寄存器指示的地址单元中取出数据,纠正后再写回。
[0041]请参考图3,其示意的实施例中,若地址单元中的数据存在多位错,则将该地址单元中的数据清零;将该地址单元中的数据清零的过程至少包括判断错误数据对应的地址寄存器数值是否位于RAM区域以及陷阱寄存器中陷阱类型值是否为一特定值,若位于RAM区域且陷阱类型值为该特定值,则将该地址单元中的数据清零。
[0042]将纠正后的数据写回原地址单元以及将地址单元中的数据清零之后,还包括错误计数和系统故障状态寄存器复位的过程。请参考图2,在存在一位错的情况下,将纠正后的数据写回原地址单元后,还进行单比特错误计数,清中断,系统故障状态寄存器复位;请参考图3,在存在多位错的情况下,清零后,还进行多比特错误计数,系统故障状态寄存器复位。
[0043]在开始存储数据之前,还包括对RAM进行内存初始化的过程。内存初始化必须将RAM中全部单元清零。
[0044]本发明为了解决基于ERC32处理器的星载计算机内存单元受空间环境单粒子翻转效应引起的I位错和多位错数据恢复的问题,本发明的目的在于提出一种基于ERC32处理器的内存数据抗干扰的方法,利用本发明,可以实现提高星上数据可靠性和恢复能力的目的。
[0045]与该方法相对应的,本发明还提供了一种基于ERC32处理器内存数据抗干扰的存储系统,包括:
[0046]统一三存模块,用以将数据存储到RAM中应用程序变量表的三个不同的地址单元;直至所有数据均被存储到三个保持一定地址间隔的区域中;即每个数据都被存三份,每个数据的其中的一份存于一个地址区域中,三个地址区域之间
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1