CN103984630B - 一种基于at697处理器的单粒子翻转故障处理方法 - Google Patents
一种基于at697处理器的单粒子翻转故障处理方法 Download PDFInfo
- Publication number
- CN103984630B CN103984630B CN201410228339.7A CN201410228339A CN103984630B CN 103984630 B CN103984630 B CN 103984630B CN 201410228339 A CN201410228339 A CN 201410228339A CN 103984630 B CN103984630 B CN 103984630B
- Authority
- CN
- China
- Prior art keywords
- address
- error
- ram
- space
- data
- 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.)
- Expired - Fee Related
Links
Abstract
本发明提出了一种针对AT697处理器的单粒子翻转故障处理方法,所述方法包含:步骤101)定义AT697处理器变量的格式;步骤102)初始化AT697F处理器的EDAC功能模块及RAM空间的数据;步骤103)检测并修改与EDAC模块相连的RAM或EEPROM存储器由单粒子翻转造成的错误;步骤104)建立维护策略,主动周期性的遍历访问所有RAM和EEPROM存储器的存储空间,进而减少并消除单bit错误。本发明根据AT697处理器提供EDAC检测接口的特点,针对空间单粒子故障提出一套完成的软件处理设计方案。本方案不需额外增加芯片,不增加设备的重量、体积、功耗;处理方法简单、高效;接口灵活、可移植性强,对提高我国卫星发展的可靠性与安全性具有重要的意义。
Description
技术领域
本发明涉及航空、航天电子综合化技术领域,更具体地涉及一种针对航天抗辐照处理器AT697系列处理器单粒子翻转故障软件处理设计方案。
背景技术
随着航天技术的不断发展,设备的高集成度、高复杂度、高可靠性成为星上设备必然发展趋势,大规模集成电路现已广泛的应用于航天设备的研制。然而复杂的空间环境对大规模集成电路的影响也日益严重,特别是空间单粒子翻转(SEU)现象,已成为星载设备的最为常见的故障之一。空间单粒子翻转现象是指宇宙中单个高能粒子射入半导体器件的灵敏区,使器件存储的内容发生翻转变化(“0”->“1”或“1”->“0”),导致系统功能紊乱,严重时会发生灾难性事故。单粒子事件最易发生在SRAM、RAM、EEPROM等存储器件及CPU、FPGA等逻辑器件中。
目前处理器、FPGA抗辐照技术日益成熟,可以实现单粒子翻转免疫或发生概率极低,但是CPU的抗辐照能力优秀不能决定整个星载设备的安全可靠,如何减少RAM、EEPROM等最易受到单粒子事件影响的存储器件对星载设备的发展至关重要。目前对于SRAM、RAM、EEPROM等器件抗单粒子事件设计通常采用EDAC(错误检测与纠正)的设计方式,由EDAC专用芯片或FPGA实现对RAM、EEPROM的1bit翻转错误和多bit错误的检测接口。
ATMEL公司生产的宇航级抗辐照处理器AT697系列(ATMEL697D\E\F),作为一款完全抗辐照设计的处理器,集成了EDAC单元模块,目前被广泛应用。其提供了对RAM、EEPROM等存储器件的单粒子翻转检测功能及纠错接口。但是没有提供具体的处理策略及实现功能,需要设计人员在实际使用中完成。
本发明基于AT697系列处理器,根据其提供EDAC检测接口的特点,针对空间单粒子故障提出一套完成的软件处理设计方案。
发明内容
本发明的目的在于,为克服上述问题,本发明提供了一种基于AT697处理器的单粒子翻转故障处理方法。
为实现上述目的,本发明提供了一种基于AT697处理器的单粒子翻转故障处理方法,所述方法包含:
步骤101)定义AT697处理器变量的格式;
步骤102)初始化AT697F处理器的EDAC功能模块及RAM空间的数据;
步骤103)检测并修改与EDAC模块相连的RAM或EEPROM存储器由单粒子翻转造成的错误;
步骤104)建立维护策略,主动周期性的遍历访问所有RAM和EEPROM存储器的存储空间,进而减少并消除单bit错误。
根据AT697处理器的硬件特征定义变量类型,并将全局变量分为重要变量和常规变量,具体为;
a.将所有变量使用32位宽定义;
b.将重要变量集中存放在指定地址空间内,并且存储内容一式三份,在读取时进行按位三取二处理。
可选的,上述步骤102)进一步包含:
步骤102-1)将RAM或EEPROM存储器的控制寄存器初始化并清除错误地址寄存器;
步骤102-2)将RAM存储空间的存储单元清零;
步骤102-3)配置RAM或EEPROM存储器的第二控制寄存器的保护位PE位使能;
步骤102-4)清除错误状态寄存器的内容。
将发生错误的地址存放在AT697处理器的错误地址寄存器中,并将发生错误的状态类型存放在AT697处理器的CPU错误状态寄存器中。
可选的,步骤103-1)检测一比特错误并进行纠错:
a关闭中断;
b读取错误地址寄存器;
c检查是否发生EDAC模块的单比特错误,如果没有发生则清除错误状态寄存
器后,重新开启中断后结束;
d当发生单比特错误时,读取错误地址;检查错误地址是否在RAM空间,如果出错地址在RAM空间,则从错误地址寄存器中读出错误地址,读取错误地址空间的对应的数据,并将该数据回写至错误地址中,记录错误状态;
如果错误发生在EEPROM空间,开启EEPROM写使能后,从错误地址寄存器中读出错误地址,读取错误地址空间的对应的数据,并将该数据回写至错误地址中,执行EEPROM写禁止,记录错误状态;如果不在上述空间,清除错误状态寄存器后,重新开启中断后结束;
e完成RAM和EEPROM存储器的纠错后,清除错误状态寄存器后,重新开启中断后结束;
步骤103-2)检测指令访问异常错误并纠错;
a关闭中断;
b记录发生异常时PC指针;
c读取错误地址寄存器;
d判断错误地址是否在RAM存储器存储的代码空间中,如果错误不在RAM存储的代码空间则清除状态寄存器后,记录错误状态,开中断结束;
如果错误在RAM存储器的代码空间中,计算指令代码对应的在EEPROM存储中的位置;读取三次EEPROM回写指令代码;对回写代码进行三取二动作后写入至出错地址;清除状态寄存器后,记录错误状态,开中断结束;
步骤103-3)检测数据访问异常处理错误并纠错:
a关闭中断;
b记录发生异常时PC指针;
c读取错误地址寄存器;
d判断错误地址是否在RAM存储器存储的重要变量空间中,如果错误地址不在RAM存储器存储的重要变量空间中则清除状态寄存器后,记录错误状态,开中断结束;
如果错误地址在RAM存储器存储的重要变量空间中,则计算错误数据冗余存储位置,再读取其他两个冗余数据,错误地址数据按照全零处理与其他两个冗余数据进行三取二纠错,将正确数据回写至出错地址,清除状态寄存器后,记录错误状态,开中断结束。
可选的,上述步骤104)之后还包含:对单位或多位错误故障处理进行验证,具体为:
步骤205)计算待测试数据的EDAC校验码,即获得待测数据的tcb码,其中待测试的数据的长度为32bit;
步骤206制造待测试数据的单比特位或多位错误,即将待测试数据的一位或多位进行取反操作;
步骤207)将处理器中存储器控制寄存器中的写旁路检测wb位使能,同时写入待测试数据的正确tcb码;使能写旁路检测wb位后,向RAM和EEPROM空间写数据时校验位不由处理器EDAC模块产生,而是由此次操作所写入的固定tcb码;
步骤208)向设定地址写入步骤206)输出的待测试数据;
步骤209)将存储器的第三控制寄存器写旁路检测wb位禁止;
步骤210)从设定地址中读取步骤208)写入的测数据;
步骤211)由于tcb码与实际写入数据存在单比特位或多位错误,触发EDAC异常或中断ISR验证异常纠错;
步骤212)程序进入EDAC异常或中断ISR,处理单比特位或多位错误,完成纠错、返回动作;
步骤213)重复读取设定地址中写入的数据,如果没有纠正则再次进入EDAC异常或中断ISR,如此循环;如果纠正结果正确则不会再次触发EDAC异常或中断ISR;
步骤214)查询纠错计数进行比对验证,单粒子翻转故障的处理情况。
与现有方法相比,本发明的技术优势在于:
本发明基于AT697系列处理器,根据其提供EDAC检测接口的特点,针对空间单粒子故障提出一套完成的软件处理设计方案。本方案不需额外增加芯片,不增加设备的重量、体积、功耗;处理方法简单、高效;接口灵活、可移植性强,对提高我国卫星发展的可靠性与安全性具有重要的意义。
附图说明
图1是本发明中的软件框架结构示意图;
图2是本发明中是本发明中EDAC模块初始化程序流程图;
图3是本发明中1bit错误的纠正程序流程图;
图4是本发明中指令访问异常处理程序流程图;
图5是本发明中数据访问异常处理程序流程图;
图6是本发明中系统维护模块在系统组成中的结构图;
图7是本发明中系统维护任务在系统组成中的结构图;
图8是本发明中EDAC功能验证程序流程图。
具体实施方式
下面通过具体实施例对本发明的方法做进一步阐述。
本发明的目的是通过软件设计并使用AT697系列处理器提供的空间单粒子翻转故障检测接口(EDAC功能模块),采取异常时处理、主动维护、程序设计约束的方式,实现在RAM、EEPROM器件的空间1bit错误的消除,多bit错误的分区处理,可以最大程度的对多bit错误进行纠正、对于不可纠正的错误进行容错设计,避免由于空间单粒子翻转导致系统功能出现严重错误。
软件运行环境为:
处理器:AT697系列处理器;
EEPROM大小:1MB字节;
RAM大小:256MB字节;
软件存储于EEPROM中,上电后将代码复制到RAM中运行。
AT697系列处理器EDAC功能检测接口如下:
AT697系列处理器具有32位EDAC(错误检测和校正)功能,EDAC机制采用7位汉明码,可检查出40位总线上的任何单、多位错误,并通过异常中断方式通知处理器软件进行处理,并且可以区分单位还是多位错误。1.发生单位错误,通过硬件总线异常(trap0x11)通知处理器软件;2.对于多位错误,处理器分别通过指令访问异常(trap0x01)和数据访问异常(trap0x09)通知处理器软件,指令访问异常(trap0x01)和数据访问异常(trap0x09)两者的区别在于,前者多位错误发生在处理器取址阶段,后者多位错误发生在数据访问阶段。发生单、多位错误处理器在触发中断的同时会更新系统错误相关寄存器,将发生错误的地址存放在处理器错误地址寄存器(FAILAR)中,发生错误的状态类型存放在CPU错误状态寄存器(FAILSR)中,作为软件异常处理的辅助信息,具体包括:a.CPU错误状态寄存器(FAILSR)中的D9位EDAC可纠错误检测位(eed);b.错误地址寄存器(FAILAR);c.发生异常时的PC指针、堆栈信息的内容。
本发明的软件处理方案中包括:1.程序实现前的变量类型与定义设计约束;2.初始化处理器EDAC模块、3.单bit错误纠正、多bit错误处理、4.建立主动维护策略,主动消除单bit错误、5.发明一种检测软件EDAC处理正确性的验证方法,具体内容包括:
1.在程序实现前提出设计约束,所有变量全部定义为32位宽的数据结构,将所有全局变量定义为重要变量与常规变量。重要变量采取三模冗余存储方式,常规变量采取单变量存储方式。当发生多bit不可纠错误时,对于不同类型变量采取区别处理。重要变量进行冗余纠错并回写,常规变量则退出等待后续逻辑判断纠错。
2.在软件初始化设计时增加对处理器EDAC功能模块的初始化配置。
3.通过AT697系列提供的硬件异常接口,完成对1bit错误的纠正,包括EEPROM与RAM、EEPROM存储空间,同时记录错误状态。
4.通过AT697系列提供的硬件异常接口,完成对多bit错误的区分处理,包括指令访问异常(trap0x01)和数据访问异常(trap0x09)的处理,同时记录错误状态。
5.在程序设计建立系统维护模块(任务),主动周期性的遍历访问所有RAM和EEPROM的空间,1bit的单粒子错误可以被及时检测并进行纠正。
6.空间单粒子翻转纠错软件功能的验证方法,在完成了所有AT697系列处理单粒子翻转故障处理后,设计一套通过软件注入的方式对单位或多位错误故障处理设计方案进行验证的手段。
与传统的通过外扩EDAC芯片或增加FPGA功能模块相比本发明具有如下优点:
(1)该种设计方式不需额外增加芯片,不增加设备的重量、体积、功耗等系统资源,提高系统的可靠性、安全性;
(2)处理方法简单、高效,不降低系统性能和增大存储空间;
(3)保存错误现场,便于对故障的诊断与分析;
(4)接口灵活、可移植性强,便于其他SPARC V8体系结构处理器移植操作,使用范围广。设计思路同样适用于其他对可靠性、安全性要求高的国防、工业领域。
方案内容:
一、在程序实现前提出设计约束,由于AT697F系列处理器采用RISC体系结构,采用32位统一取址、译码、执行、EDAC模块采用32位统一取址,将所有变量全部定义为32位宽的数据结构,可以提高EDAC模块纠错的效率;将所有全局变量定义为重要变量与常规变量(全局变量定义空间分配图见附图1),重要变量指一旦出错将影响整个软件核心功能及设备安全的关键变量;常规变量指出错后可以通过后期处理消除或纠正的一些全局变量或局部变量。重要变量集中存放在指定地址空间内,并且存储内容所有变量一式三份,在读取时进行按位三取二处理(前两个变量按位“与”后与第三个变量进行“或”操作),确保使用时不会因为某一变量发生错误导致关键部分发生异常;写操作将三个变量统一赋值,一式三份,完成变量写操作。当发生多bit不可纠错误时,对于不同类型变量采取区别处理。重要变量进行冗余纠错并回写,常规变量则退出等待后续逻辑判断纠错。
二、在软件初始化设计时增加对处理器EDAC功能模块的初始化配置。在系统加电,启动代码程序运行在EEPROM空间时,需要对CPU寄存器中RAM接口寄存器进行初始化,程序流程图见附图2所示。具体包含以下几步:
1、首先根据存储空间硬件配置(RAM)对处理器中的存储器配置寄存器2(MCFG2Memory Configuration Register 2)中的相关定义位进行配置,配置值按照硬件芯片手册进行配置即可,主要包括存储空间的大小,位宽,刷新时间、读写等待时间等内容。如果使用EDAC功能必须保证软件设置位宽为32位,最后使能RAM工作。
2、将RAM存储空间中的数据进行清零初始化,目的是将EDAC校验码写入初始值,防止程序在RAM中运行时访问到没有进行初始化校验位的存储空间而产生单位、双位错误,该清零操作必不可少。对于启动时间苛刻要求的系统,程序在EEPROM中运行速度较低,可以初始化最小存储空间,保证程序顺利运行在RAM后,其他RAM、EEPROM存储空间可以在后续RAM中执行初始化过程。
3.对处理器中的存储器配置寄存器3(MCFG3 Memory Configuration Register3)中的PE位(RAM EDAC保护位)使能,对于AT697系列处理器而言只要硬件连接、存储空间设置正确,无论是否开关EDAC功能在初始化清零操作时都会将校验码写入对应的校验位。
4.将处理器中的CPU错误状态寄存器(FAILSR-Fail Status Register)清零,保证发生错误时会将错误地址更新到出错地址寄存器(FAILAR-Fail Address Register)。
三、通过AT697系列提供的硬件异常接口,完成对1bit错误的纠正,包括EEPROM与RAM、EEPROM存储空间,同时记录错误状态。当CPU检测到RAM或EEPROM有1位可纠错错误时,CPU进入硬件错误(Hardware error)中断(trap0x11),该中断包含AT697F中所有与硬件错误相关内容,具体为:CPU内部总线错、写保护错,EDAC可纠错、EDAC不可纠错、PCI接口错误。进入异常中断后需要根据CPU错误状态寄存器(FAILSR)中的D9位EDAC可纠错误检测位(eed)判断是否发生EDAC可纠错误,如果发生可就错误,eed为1并且CPU会更新错误地址寄存器(FAILAR),该地址存放发生可纠EDAC错误的地址;如果不是EDAC可纠错误则eed为0,此次中断(trap0x11)不属于EDAC可纠错误。对于EDAC可纠错误的异常中断处理原理为:关中断,将发生EDAC错误的地址从错误地址寄存器(FAILAR)读出,判断发生EDAC错的地址空间是否在RAM、EEPROM存储空间,如果发生地址确为该空间,则将该地址的值重新读出(完成EDAC纠错)并再回写到发生错误的地址,清除CPU错误状态寄存器(FAILSR-Fail StatusRegister),保正当发生EDAC中断时,更新错误地址寄存器(FAILAR),记录错误状态,并开启中断后退出;如果EDAC错误的地址发生在EEPROM空间,则关闭EEPROM写保护使EEPROM进入到可写状态,则将该地址的值重新读出(完成EDAC纠错)并再回写到发生错误的EEPROM地址,打开EEPROM写保护,使EEPROM恢复到不可写状态,清除CPU错误状态寄存器(FAILSR-Fail Status Register),保正当发生EDAC中断时,更新错误地址寄存器(FAILAR),记录错误状态,并开启中断后退出。记录的错误状态包括发生EDAC错的地址,及纠错成功计数。EDAC可纠中断处理程序流程图见附图3所示。
四、通过AT697系列提供的硬件异常接口,完成对多bit错误的区分处理,包括指令访问异常(trap0x01)和数据访问异常(trap0x09)的处理,同时记录错误状态。
对于指令访问异常(trap0x01)是指程序运行过程中,在CPU取指令时,由于受到单粒子事件影响,所取的指令码发生多位不可纠错误,出现该异常中断。发生该异常后软件立即跳转至指令访问异常处理程序。因为软件设计时程序是从EEPROM空间复制到RAM、EEPROM存储空间中运行,所以指令代码在RAM和EEPROM的内容一致,且相对位置也是可以计算出的,因此对于指令访问异常可以将EEPROM中的指令代码重新复制到RAM、EEPROM存储空间可以解决该问题。对于指令访问多位不可纠错误的异常中断处理为:关中断,记录发生异常时的程序位置即PC指针,将发生多位取址错误的地址从错误地址寄存器(FAILAR)读出,判断发生多位取址错的地址空间是否在RAM、EEPROM存储空间中的代码段,如果发生地址确为代码空间,则根据该地址计算出EEPROM存储该指令的地址,将该地址指令连续读取三次进行三取二后,回写到RAM、EEPROM存储空间中出错的地址,清除CPU错误状态寄存器(FAILSR-Fail Status Register),保正当发生EDAC中断时,更新错误地址寄存器(FAILAR),并开启中断后,设置中断退出后执行PC指针为该指令即中断退出后重复执行该指令;如果发生地址不为代码空间,清除CPU错误状态寄存器(FAILSR-Fail Status Register),保正当发生EDAC中断时,更新错误地址寄存器(FAILAR),记录错误状态,并开启中断后,设置中断退出后执行PC指针为该指令即中断退出后重复执行该指令。记录的错误状态包括发生指令访问异常的地址,及纠错成功计数。指令访问异常处理程序流程图见附图4所示。
对于数据访问异常(trap0x09)是指程序执行取址操作时,由于受到单粒子事件影响,所取的数据发生多位不可纠错误,出现该异常中断。发生该异常后软件立即跳转至数据访问异常处理程序。数据访问异常处理必须依据到出错数据重要性分开情况处理,即依靠此前设计约束对变量的重要程度进行针对处理。重要数据一旦发生错误对系统运行造成影响,设计为三取二校验操作,如此设计即使其中数据发生错误,也可以从其他两个数据中进行纠正,对于重要变量发生多位错误,在异常处理程序中出记录出错地址,同时可以计算出该数据冗余存储的其他两个地址,执行错误地址数据三取二读取数据,并将三取二修正后的数据重新回写到出错数据地址实现多位错误纠错。对于常规变量,如仅采集转发的探测数据或状态数据,或某些不重要的状态值,就可以将数据访问值回写为某些自定义特征值(如0xEB9001CF)在后续的运算中对该值加以判断,并进行相应的后续处理。对于数据访问多位不可纠错误的异常中断处理为:关中断,记录发生异常时的程序位置即PC指针,将发生多位取址错误的地址从错误地址寄存器(FAILAR)读出,判断发生多位取址错的地址空间是否在RAM、EEPROM存储空间中的重要变量段,如果发生地址确为重要变量段,则计算该数据的冗余存放地址,并进行出错地址的三取二纠错计算,之后将纠错后的数据回写至出错地址,实现纠错动作;如果发生地址不为重要变量段,将向该错误地址写入特征码即可;此后按照既定流程执行,清除CPU错误状态寄存器(FAILSR-Fail Status Register),保正当发生EDAC中断时,更新错误地址寄存器(FAILAR),记录错误状态,并开启中断后,设置中断退出后执行PC指针为该指令即中断退出后重复执行该指令,继续读取地址数据。记录的错误状态包括发生指令访问异常的地址,及纠错成功计数。数据访问异常处理程序流程图见附图5所示。
五、在程序设计建立系统维护模块(适用于无操作系统环境)或系统维护任务(适用于有操作系统环境),由于对多bit错误不能使用处理器的纠错功能进行纠正,所以在程序运行时应避免多bit错的发生,采用主动周期性的遍历访问RAM及EEPROM的空间的方式,进行数据的读操作,1bit的单粒子错误可以被及时检测并进行纠正,可以减少多bit发生的几率,如图6、7所示。同一宇宙高能粒子打翻RAM或EEPROM的同一地址空间多bit数据的概率极低,一般都由1bit错误累计所致,如此操作还可以极大减少多bit不可纠错误的概率。在周期性遍历RAM及EEPROM的空间时,为了提高系统实时性,不能一次遍历所有空间,而是采用分段遍历的方式,循环覆盖的方式,当超出可访问的地址空间时,地址归零从新进行遍历。
六、在软件实现了空间单粒子翻转事件的处理后,需对软件的纠错功能进行验证,由于单粒子翻转事件只能在空间发生,所以在地面只能模拟该现象,检查软件处理的正确性。使用AT697系列处理器中EDAC验证模块可以简单高效的模拟出空间单粒子翻转现象、从而检查软件处理的正确性。模块AT697系列CPU中存储器的配置寄存器3(MCFG3 MemoryConfiguration Register 3)中的写检测位(wb)和读检测位(rb)及校验修改位(tcb[0-7])组合使用,以实现对EDAC功能的测试。MCFG3寄存器可以通过对wb或rb位来控制校验位的读写开关开关。当wb及rb位置0时,为正常工作模式所有校验码(tcb[0-7])由CPU EDAC模块根据写入内容生成;当wb或rb位置1时,为EDAC测试模式,此时7bit的tcb(tcb[6:0])码由MCFG3寄存器的0~6bit内的值决定。两者的区别在于:wb有效时,对存储空间进行写操作时将校验修改位直接写入RAM、EEPROM存储空间的校验位中;rb位有效时,进行读操作直接屏蔽实际的校验位,直接从校验修改位中直接读取校验位,对RAM、EEPROM存储空间的校验位不做修改RAM、EEPROM存储空间。使用以上策略采用软件打桩的方式即可实现对所有存储的EDAC功能的验证,不需要进行外部硬件改造或专门研制检测设备。本专利使用wb有效方式进行EDAC功能测试,具体流程为:1计算待测试数据的EDAC校验值(即tcb值),对待写入数据进行单位或多位的修改;2使能MCFG3寄存器中的wb位,并将计算好的tcb值,一起写入MCFG3寄存器中;3再将修改后的待测试数据写入对应地址,并关闭MCFG3寄存器wb位;4读取测试数据,当CPU对该测试地址进行访问时就会引起EDAC错误相关中断(trap0x1、trapx09、trap0x11),进入EDAC异常处理或中断服务程序;5执行EDAC处理后,再次读取该地址,查询纠错计数进行比对验证,EDAC验证功能流程图如8所示。当纠错计数增加值满足单粒子翻转处理计数时则基于AT697处理器的单粒子翻转故障处理方法满足要求,否则说明该处理方案中的部分内容不正确,需要进行修改,具体情况可分为:
1)针对单比特错情况可以考虑以下几方面:
a.处理器EDAC功能模块是否已经使能;
b.错误地址寄存器中的错误地址是否为设定地址;
c.CPU错误状态寄存器是否在上次纠错后及时清除;
d.真对EEPROM空间的单比特错误,在修改EERPOM时,EEPROM的写使能操作是否有效,回写数据是否存储到EEPRM空间。
2)针对多比特错指令访问情况可以考虑以下几方面:
a.处理器EDAC功能模块是否已经使能;
b.错误地址寄存器中的错误地址是否为出错的指令地址;
c.CPU错误状态寄存器是否在上次纠错后及时清除;
d.出错代码在EEPROM空间位置的偏移计算是否正确。
3)针对多比特错指令访问情况可以考虑以下几方面:
a.处理器EDAC功能模块是否已经使能;
b.错误地址寄存器中的错误地址是否为出错的指令地址;
c.CPU错误状态寄存器是否在上次纠错后及时清除;
d.错误地址如果在重要变量空间,两冗余备份偏移地址计算是否正确,回写数据内容是否正确。
总之,本发明提供了一种航天抗辐照处理器AT697单粒子翻转故障软件处理设计方案。包括1.程序实现前的变量类型与定义设计约束;2.初始化处理器EDAC模块、3.单bit错误纠正、多bit错误处理、4.建立主动维护策略,主动消除单bit错误、5.发明一种检测软件EDAC处理正确性的验证方法。ATMEL公司生产的宇航级抗辐照处理器AT697系列(ATMEL697D\E\F),作为一款完全抗辐照设计的处理器,集成了EDAC单元模块,但是处理器只提供了对RAM、EEPROM等存储器件的单粒子翻转检测功能及纠错接口,没有提供具体的处理策略及实现功能,需要设计人员在实际使用中完成。本发明基于该系列处理器,根据其提供EDAC检测接口的特点,针对空间单粒子故障提出一套完成的软件处理设计方案。本方案不需额外增加芯片,不增加设备的重量、体积、功耗;处理方法简单、高效;接口灵活、可移植性强,对提高我国卫星发展的可靠性与安全性具有重要的意义。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (5)
1.一种基于AT697处理器的单粒子翻转故障处理方法,所述方法包含:
步骤101)定义AT697处理器变量的格式;
步骤102)初始化AT697F处理器的EDAC功能模块及RAM空间的数据;
步骤103)检测并修改与EDAC模块相连的RAM或EEPROM存储器由单粒子翻转造成的错误;
步骤104)建立维护策略,主动周期性的遍历访问所有RAM和EEPROM存储器的存储空间,进而减少并消除单bit错误;
其中,所述步骤104)之后还包含:对单位或多位错误故障处理进行验证,具体为:
步骤205)计算待测试数据的EDAC校验码,即获得待测数据的tcb码,其中待测试的数据的长度为32bit;
步骤206)制造待测试数据的单比特位或多位错误,即将待测试数据的一位或多位进行取反操作;
步骤207)将处理器中存储器控制寄存器中的写旁路检测wb位使能,同时写入待测试数据的正确tcb码;使能写旁路检测wb位后,向RAM和EEPROM空间写数据时校验位不由处理器EDAC模块产生,而是由此次操作所写入的固定tcb码;
步骤208)向设定地址写入步骤206)输出的待测试数据;
步骤209)将存储器的第三控制寄存器写旁路检测wb位禁止;
步骤210)从设定地址中读取步骤208)写入的测数据;
步骤211)由于tcb码与实际写入数据存在单比特位或多位错误,触发EDAC异常或中断ISR验证异常纠错;
步骤212)程序进入EDAC异常或中断ISR,处理单比特位或多位错误,完成纠错、返回动作;
步骤213)重复读取设定地址中写入的数据,如果没有纠正则再次进入EDAC异常或中断ISR,如此循环;如果纠正结果正确则不会再次触发EDAC异常或中断ISR;
步骤214)查询纠错计数进行比对验证,当纠错计数增加值满足单粒子翻转处理计数时则基于AT697处理器的单粒子翻转故障处理方法满足要求。
2.根据权利要求1所述的基于AT697处理器的单粒子翻转故障处理方法,其特征在于,根据AT697处理器的硬件特征定义变量类型,并将全局变量分为重要变量和常规变量,具体为;
a.将所有变量使用32位宽定义;
b.将重要变量集中存放在指定地址空间内,并且存储内容一式三份,在读取时进行按位三取二处理。
3.根据权利要求1所述的基于AT697处理器的单粒子翻转故障处理方法,其特征在于,所述步骤102)进一步包含:
步骤102-1)将RAM或EEPROM存储器的控制寄存器初始化并清除错误地址寄存器;
步骤102-2)将RAM存储空间的存储单元清零;
步骤102-3)配置RAM或EEPROM存储器的第二控制寄存器的保护位PE位使能;
步骤102-4)清除错误状态寄存器的内容。
4.根据权利要求1所述的基于AT697处理器的单粒子翻转故障处理方法,其特征在于,将发生错误的地址存放在AT697处理器的错误地址寄存器中,并将发生错误的状态类型存放在AT697处理器的CPU的错误状态寄存器中。
5.根据权利要求4所述的基于AT697处理器的单粒子翻转故障处理方法,其特征在于,所述步骤103)进一步包含:步骤103-1)检测一比特错误并进行纠错:
a关闭中断;
b读取错误地址寄存器;
c检查是否发生EDAC模块的单比特错误,如果没有发生则清除错误状态寄存
器后,重新开启中断后结束;
d当发生单比特错误时,读取错误地址;检查错误地址是否在RAM空间,如果出错地址在RAM空间,则从错误地址寄存器中读出错误地址,读取错误地址空间的对应的数据,并将该数据回写至错误地址中,记录错误状态;
如果错误发生在EEPROM空间,开启EEPROM写使能后,从错误地址寄存器中读出错误地址,读取错误地址空间的对应的数据,并将该数据回写至错误地址中,执行EEPROM写禁止,记录错误状态;如果不在上述空间,清除错误状态寄存器后,重新开启中断后结束;
e完成RAM和EEPROM存储器的纠错后,清除错误状态寄存器后,重新开启中断后结束;
步骤103-2)检测指令访问异常错误并纠错;
a关闭中断;
b记录发生异常时PC指针;
c读取错误地址寄存器;
d判断错误地址是否在RAM存储器存储的代码空间中,如果错误不在RAM存储的代码空间则清除状态寄存器后,记录错误状态,开中断结束;
如果错误在RAM存储器的代码空间中,计算指令代码对应的在EEPROM存储中的位置;读取三次EEPROM回写指令代码;对回写代码进行三取二动作后写入至出错地址;清除状态寄存器后,记录错误状态,开中断结束;
步骤103-3)检测数据访问异常处理错误并纠错:
a关闭中断;
b记录发生异常时PC指针;
c读取错误地址寄存器;
d判断错误地址是否在RAM存储器存储的重要变量空间中,如果错误地址不在RAM存储器存储的重要变量空间中则清除状态寄存器后,记录错误状态,开中断结束;
如果错误地址在RAM存储器存储的重要变量空间中,则计算错误数据冗余存储位置,再读取其他两个冗余数据,错误地址数据按照全零处理与其他两个冗余数据进行三取二纠错,将正确数据回写至出错地址,清除状态寄存器后,记录错误状态,开中断结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410228339.7A CN103984630B (zh) | 2014-05-27 | 2014-05-27 | 一种基于at697处理器的单粒子翻转故障处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410228339.7A CN103984630B (zh) | 2014-05-27 | 2014-05-27 | 一种基于at697处理器的单粒子翻转故障处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103984630A CN103984630A (zh) | 2014-08-13 |
CN103984630B true CN103984630B (zh) | 2017-02-01 |
Family
ID=51276620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410228339.7A Expired - Fee Related CN103984630B (zh) | 2014-05-27 | 2014-05-27 | 一种基于at697处理器的单粒子翻转故障处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103984630B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104898477B (zh) * | 2015-04-09 | 2016-10-19 | 北京空间飞行器总体设计部 | 一种卫星扩频应答机自主抗空间单粒子翻转故障方法 |
CN104866387A (zh) * | 2015-06-23 | 2015-08-26 | 上海航天测控通信研究所 | 基于erc32处理器内存数据抗干扰的存储方法及系统 |
CN105677504A (zh) * | 2015-12-30 | 2016-06-15 | 深圳市芯海科技有限公司 | 一种解决处理器死机问题的方法 |
CN106649173B (zh) * | 2016-10-10 | 2019-04-09 | 上海航天控制技术研究所 | 基于1553b总线的高可靠星载计算机在轨自修正系统及方法 |
CN106776100B (zh) * | 2017-01-17 | 2020-04-10 | 上海航天控制技术研究所 | 一种存储器数据分层校验方法 |
CN108491296B (zh) * | 2018-03-09 | 2019-04-05 | 中国人民解放军国防科技大学 | 微处理器单粒子翻转截面的测试方法 |
CN109739774A (zh) * | 2019-01-25 | 2019-05-10 | 上海创景信息科技有限公司 | Edac故障注入与检测方法 |
CN110781019B (zh) * | 2019-09-03 | 2023-06-23 | 惠州市德赛西威汽车电子股份有限公司 | 一种基于功能安全的汽车仪表设计方法 |
CN111143107B (zh) * | 2019-11-13 | 2022-06-17 | 广东高云半导体科技股份有限公司 | 一种fpga单粒子反转校验电路和方法 |
CN113696732A (zh) * | 2020-05-20 | 2021-11-26 | 北京新能源汽车股份有限公司 | 一种低压下电控制方法、装置及电动汽车 |
CN111708695A (zh) * | 2020-06-12 | 2020-09-25 | 上海航天计算机技术研究所 | 基于AT697的cache抗单粒子翻转效果验证方法 |
CN114595090A (zh) * | 2020-12-03 | 2022-06-07 | 华为技术有限公司 | 一种纠错方法及装置 |
CN112860500B (zh) * | 2021-02-22 | 2024-03-22 | 四川腾盾科技有限公司 | 一种多余度飞机管理计算机板卡上电自检测方法 |
CN115878365A (zh) * | 2021-09-27 | 2023-03-31 | 华为技术有限公司 | 内存纠错方法、装置及相关设备 |
CN114090327B (zh) * | 2022-01-20 | 2022-05-17 | 浙江吉利控股集团有限公司 | 单粒子错误处理方法、系统及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101968756A (zh) * | 2010-09-29 | 2011-02-09 | 航天东方红卫星有限公司 | 一种基于fpga的星载计算机自主切机系统 |
CN102521062A (zh) * | 2011-11-29 | 2012-06-27 | 西安空间无线电技术研究所 | 可全面在线自检测单粒子翻转的软件容错方法 |
CN102521066A (zh) * | 2011-11-15 | 2012-06-27 | 北京空间飞行器总体设计部 | 星载计算机空间环境事件容错方法 |
CN103700396A (zh) * | 2013-12-03 | 2014-04-02 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种面向sram的抗seu错误累积的控制器及方法 |
-
2014
- 2014-05-27 CN CN201410228339.7A patent/CN103984630B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101968756A (zh) * | 2010-09-29 | 2011-02-09 | 航天东方红卫星有限公司 | 一种基于fpga的星载计算机自主切机系统 |
CN102521066A (zh) * | 2011-11-15 | 2012-06-27 | 北京空间飞行器总体设计部 | 星载计算机空间环境事件容错方法 |
CN102521062A (zh) * | 2011-11-29 | 2012-06-27 | 西安空间无线电技术研究所 | 可全面在线自检测单粒子翻转的软件容错方法 |
CN103700396A (zh) * | 2013-12-03 | 2014-04-02 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种面向sram的抗seu错误累积的控制器及方法 |
Non-Patent Citations (1)
Title |
---|
用于星载计算机的CompactPCI总线技术的研究;薛国凤;《中国优秀硕士学位论文全文数据库 信息科技辑》;20110415;摘要,第20-26,59页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103984630A (zh) | 2014-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103984630B (zh) | 一种基于at697处理器的单粒子翻转故障处理方法 | |
CN108710551B (zh) | 基于sparc处理器单粒子翻转故障注入的测试方法及系统 | |
CN104035843B (zh) | 用于提高锁步核可用性的系统和方法 | |
CN102521062B (zh) | 可全面在线自检测单粒子翻转的软件容错方法 | |
US20080163014A1 (en) | Tracking health of integrated circuit structures | |
CN103140841A (zh) | 保护存储器的部分的方法和装置 | |
CN107799151A (zh) | 固态盘SSD及高可用性PCIe SSD的方法和系统 | |
CN105320579B (zh) | 面向sparc v8处理器的自修复双冗余流水线及容错方法 | |
CN106708655B (zh) | 基于二维纠错码的内存加固方法及电路 | |
CN108446189A (zh) | 一种星载嵌入式软件容错启动系统及方法 | |
Li et al. | RRAMedy: Protecting ReRAM-based neural network from permanent and soft faults during its lifetime | |
Quinn et al. | Robust duplication with comparison methods in microcontrollers | |
CN102841828A (zh) | 逻辑电路中的故障检测和减轻 | |
JP6290934B2 (ja) | プログラマブルデバイス、エラー保持システム、及び電子システム装置 | |
CN102968363A (zh) | 用于保护和无损地检查与安全相关的寄存器的装置和方法 | |
Höller et al. | FIES: a fault injection framework for the evaluation of self-tests for COTS-based safety-critical systems | |
EP3373144A1 (en) | Method and computer system for fault tolerant data integrity verification of safety-related data | |
US9984766B1 (en) | Memory protection circuitry testing and memory scrubbing using memory built-in self-test | |
CN105320575B (zh) | 一种双模冗余流水线的自校验及恢复装置与方法 | |
Polo et al. | Reliability-oriented design of on-board satellite boot software against single event effects | |
CN103902419A (zh) | 一种缓存测试方法及装置 | |
US8595442B1 (en) | Redundantly validating values with a processor and a check circuit | |
CN107480045A (zh) | 一种电能表软件的检错纠错与轨迹跟踪方法 | |
Rivers et al. | Reliability challenges and system performance at the architecture level | |
Kim et al. | A method for evaluating fault coverage using simulated fault injection for digitalized systems in nuclear power plants |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100190 No. two south of Zhongguancun, Haidian District, Beijing 1 Patentee after: NATIONAL SPACE SCIENCE CENTER, CAS Address before: 100190 No. two south of Zhongguancun, Haidian District, Beijing 1 Patentee before: NATIONAL SPACE SCIENCE CENTER, CHINESE ACADEMY OF SCIENCES |
|
CP01 | Change in the name or title of a patent holder | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170201 |
|
CF01 | Termination of patent right due to non-payment of annual fee |