一种航天器DSP芯片的数据保护方法技术

技术编号:7487789 阅读:274 留言:0更新日期:2012-07-09 22:41
本发明专利技术公开了一种航天器DSP芯片的数据保护方法,包括对内存中变量地址进行调整的步骤、获取系统维护变量地址的步骤、系统维护变量备份的步骤和系统维护变量刷新的步骤,采用本发明专利技术能够解决TI公司DSP芯片存在的无法对系统区数据单粒子打翻进行保护的问题。

【技术实现步骤摘要】

本专利技术涉及一种航天器DSP芯片的数据保护方法
技术介绍
TI公司的SMJ320C3X系列的芯片可采用标准C和TI公司DSP汇编语言联合编写, 软件开发工具为TI公司的CC集成环境。由于首次空间交会对接过程复杂,对基于航天器软件有高可靠性要求,目前使用TI公司DSP芯片的航天器,由于硬件功能的限制,没有检错与纠错功能。为了保护内存数据的可靠性,可以采取已经普遍采用的软件三取二技术,但是由于DSP编译器的上述特殊性,编译器自动产生一些系统维护变量并不出现在最终的MAP 文件中,对用户是不透明的。因而对这些数据的保护用传统的变量三取二技术无法实现。同时,存储器件在空间应用中容易发生单粒子翻转。单粒子翻转效应(SEU =Single Event Upset)表现在 CPU 中 SRAM 里的数据发生 0、1 的翻转。EDAC(Error Detection and Correction)技术纠检错能力具有自动纠一位错和检出两位错的能力。但是,目前DSP芯片没有EDAC功能,当出现单粒子翻转后,会导致计算机异常等问题,程序数据区的翻转错误会导致计算错误
技术实现思路
本专利技术的技术解决问题是针对现有技术的不足,提供了一种航天器DSP芯片的数据保护方法,采用本专利技术能够解决TI公司DSP芯片存在的无法对系统区数据单粒子打翻进行保护的问题。本专利技术的技术解决方案是一种航天器DSP芯片的数据保护方法,用于对TI公司DSP芯片中的数据进行保护,包括以下步骤(1)对内存中变量地址进行调整根据TI公司DSP编译器对DSP芯片中所使用C语言文件的编译规则,将C语言中的所有全局变量在一个C语言文件中进行定义,并将定义全局变量的C语言文件置于所有 C语言文件的首位;(2)获取系统维护变量地址利用所述DSP编译器对C语言文件进行编译,利用编译后获得的MAP文件,获得全局变量的内存地址,并进一步获得位于全局变量内存地址之后的系统维护变量的内存地址;(3)系统维护变量备份根据步骤(1)中得到的系统维护变量的内存地址对系统维护变量进行复制,将获得的多份系统维护变量分别存储于内存中,构成多个不同的备份内存段;(4)系统维护变量刷新在每个控制周期中,从多个备份内存段中分别获得多份存储的系统维护变量;对多份系统维护变量进行选举获得正确的系统维护变量,并按系统维护变量的地址存储回多个不同备份内存段中。在所述步骤(3)中,对系统维护变量复制为3份,将3份系统维护变量分别存储到 3个不同备份内存段中;对于每个备份内存段的首地址分别利用3个变量进行保存;在所述步骤中,利用三选二的方法确定每个备份内存段的首地址;利用确定的3个备份内存段的首地址,获取3份系统维护变量,再利用三选二的方法获得正确的系统维护变量。本专利技术与现有技术相比具有如下优点(1)本专利技术通过研究DSP编译环境和生成MAP文件特性,通过规划全局变量在C语言文件中的位置,以及规划定义有全局变量的C语言文件在所有C语言文件中的位置,实现了用户软件变量区和系统维护数据区的分离,使得经编译后获得的全局变量和系统维护变量分别位于连续的内存地址范围中,从而可以对系统维护变量的进行连续的存取。(2)在实际应用中,针对系统维护变量数据量不大,需要周期性刷新的的特点。通过对复制后获得的几个连续备份内存段中的数据进行复制刷新,实现了在满足软件实时性的要求下对系统维护变量数据准确性的保护(3)该方法在软件中增加了对备份内存段同步回写保护功能,完全不影响系统原有调用常量的所有代码,同步刷新备份内存段的操作可放在程序最适当的时间调用,不影响嵌入式系统软件的中断响应等时序性。因而该方法不仅具有极高的安全性还具备极好的可移植性,能够非常方便的在同类型星上软件中直接增加该保护功能,而不影响其软件主体功能的实现。附图说明图1为本专利技术流程图;图2为本专利技术实施例结构图;图3为系统维护三区同步更行流程图。具体实施例方式下面就结合附图对本专利技术做进一步介绍。(1)对内存中变量地址进行调整,获取系统维护变量地址TI的DSP编译器内存分配和存储方式有如下特点1.编译器对常量、宏定义和立即数,在编译时候会处理为系统维护变量,在程序初始化时将这些值预装入内存中,需要使用这些数据时,从内存中相应的系统维护变量中读取,而不是从PROM中读取。2.系统维护变量排列在C文件全局变量的后面,且排序有一定规律。如果工程中多个C文件均定义有全局变量,则每个C文件的系统维护变量将分隔出现在各个C文件的全局变量后面。工程中各C文件变量是按照C文件名的字母倒序排列的。基于全局变量与系统维护变量数据在内存中的上述排序规则,将软件中所有全局变量集中在一个C文件中进行统一定义,使得所有全局变量使用连续的地址(各变量的地址先后并不是根据变量定义的先后顺序决定,而是由编译器分配)。并且基于C文件按文件名字母倒序排列的规则,合理选取该C文件的文件名,使得定义有全局变量的C文件位于所有C文件之前,实现存储系统维护变量的系统维护区的处于连续地址范围内。根据MAP文件(MAP文件为通过编译器编译后生成的用于记录全局变量名和全局变量对应的内存地址的文件),在MAP文件,可以根据全局变量的变量名获取对应的地址, 全局变量之后为系统维护变量,但是在MAP文件中系统维护变量的变量名和地址对用户是不透明的,并不能实现对变量名和变量地址的检索。因此,根据上述的排序方法,将全局变量的地址在连续的内存区中进行分配,根据从MAP文件中获得的分配信息得到全局变量的最大地址,其后一个地址即为系统维护区变量的起始地址,根据系统维护区变量的起始地址,便可结合程序计算出系统维护变量在内存在所占地址的长度范围,实现针对地址对系统维护变量的检索。(2)系统维护变量备份通过得到系统维护变量的地址分配情况,以及存储系统维护变量内存地址的长度。在DSP芯片上电或复位后,将系统维护变量存储的数据进行复制,并选取多个与系统维护变量存储空间相对应的地址空间,将复制后的备份保存在未用到的内存部分,生成多个备份内存段。完成对备份内存段的选取和存储后,在对每个备份内存段的首地址进行复制和备份,以保证备份内存段首地址的正确。例如,如图2所示,本专利技术在具体实施时,采用3备份的策略,将系统维护数据复制为3份,分别存储到3个备份内存段中,其中有一个备份内存段属于经编译后获得的系统维护变量区的原始内存段,再选取九个变量分别分别将系统维护区和两个备份区的起始地址均赋值给三个变量(共9个变量),通过地址变量定位存储有系统维护变量的备份内存段。在整个星上程序运行过程中,仅在上电时用于对9个存储首地址的变量赋初值。 完成初始化后,软件代码仅对9个变量操作,而不再对常量段中的首地址进行任何读取操作。因而,用于记录备份内存段首地址的变量在受到单粒子打翻事件后,经过下一步骤(3) 的处理仍然可以通过选举后获得正确的内存地址,可以不影响系统的稳定运行。(3)系统维护变量刷新进一步结合上述步骤(2)中3备份的策略进行说明。由于系统维护变量的重要性, 数据备份时对每个备份内存段的首地址均采用了三个变量进行保存,在每个程序控制周期性运行开始时,先对三份系统维护区的九个地址数据进行常规的三取二处理,得到正确的起始地址。再根据确定的地址,获取备份内存区本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:高进陈朝晖魏高乐张威泰刘鲁林琳
申请(专利权)人:北京控制工程研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术