SMJ320C6415的高可靠程序加载方法
doi: 10.3969/j.issn.1671-0576.2025.02.007
张衡 , 顾泽凌 , 杨明远 , 胡鑫 , 赵建华
上海无线电设备研究所, 上海 201109
High-reliability Program Loading Method for SMJ320C6415
ZHANG Heng , GU Zeling , YANG Mingyuan , HU Xin , ZHAO Jianhua
Shanghai Radio Equipment Research Institute, Shanghai 201109 , China
摘要
针对航天产品在轨期间可擦除的磁性随机存取存储器(magnetic random access memory,MRAM)存在单粒子翻转(single-event upset,SEU)的问题,提出了一种数字信号处理器(DSP)芯片SMJ320C6415的高可靠程序加载方法。该方法采用多重冗余设计,在MRAM中备份多个DSP加载程序和用户程序,并通过三选二多数表决以剔除发生单粒子翻转的程序。试验结果表明该方法提高了DSP程序加载的可靠性和可维护性。
Abstract
To address the single-event upset (SEU) issue in erasable magnetic random access memory (MRAM) of aerospace products during the orbital operation,a high-reliability program loading method for DSP chip SMJ320C6415 was proposed.The method employed a multiple-redundancy design that stored backup copies of both DSP loading programs and user programs in MRAM,incorporating a two-out-of-three majority voting mechanism to eliminate programs corrupted by SEU.The experimental results show that the method greatly improves the reliability and maintainability of DSP programs loading.
0 引言
为了避免存储在外部存储器中的数字信号处理器(DSP)程序受到单粒子翻转(single-event upset,SEU)的影响,文献[1-2]将DSP程序存储在反熔丝存储器中,提高了DSP程序加载的可靠性。但由于反熔丝器件储存容量较小,单片最大容量仅为32 kB,工程中通常需要多片并联才能满足需求。采用反熔丝存储器存储程序时,需要使用专用烧录设备固化程序,且完整的程序加载流程包括成型、固化、落焊和试验等多道复杂工序。
大容量可擦除磁性随机存取存储器(magnetic random access memory,MRAM)因其天然的抗辐照性能在航天产品中得到了越来越广泛的应用[3]。MRAM的单片容量可达512 kB,且采用外部编程口即可实现DSP程序的多次在线烧录。但航天产品在轨期间,MRAM存在单粒子翻转风险。因此,有必要采取措施提高基于MRAM的DSP程序加载系统的可靠性。
SMJ320C6415是TI公司推出的高性能定点DSP芯片,具有主频高、处理速度快、抗辐照能力强的特点,在航天产品中得到了广泛应用。本文根据该DSP芯片的加载特性,设计基于MRAM的多重冗余DSP程序加载系统。使用MRAM中的3个基片备份DSP程序,其中每个基片分别备份3份DSP程序;在DSP上电复位后,首先可编程逻辑阵列(FPGA)对每个基片中的3份DSP用户程序进行三选二多数表决[4],再对3个基片的DSP用户程序进行三选二多数表决,最后将表决后的用户程序加载至DSP的内部随机存取存储器(RAM)中运行。
1 硬件方案
本文采用具有4个基片的大容量可擦除MRAM作为DSP的程序存储器,并使用FPGA连接DSP与MRAM。FPGA通过对DSP的外部存储器的片选信号与地址线进行译码,来确定DSP需要访问的MRAM地址空间,从而控制DSP对MRAM的不同基片进行相应的程序读写。基于MRAM的DSP程序加载控制电路示意图如图1所示,图中FPGA用于DSP程序加载的地址线译码和数据流方向控制。
1基于MRAM的DSP程序加载控制电路示意图
DSP芯片具有多种接口,包括主机接口(HPI)、外设器件互联接口(PCI)、多通道缓存串口(McBSP)、通用输入输出(GPIO)以及外部存储器接口(EMIF)等[5]。其中,EMIF因具有更高的并行数据传输速率、更大的外设存储容量和更灵活的读写时序配置方式,已成为DSP开发中最常用的接口[6]
本文采用的SMJ320C6415是一款具有EMIFA、EMIFB两组EMIF总线的高性能定点DSP芯片,其中EMIFB接口一般用于完成芯片上电或复位时的程序加载,EMIFA接口则用于用户数据的传输与控制[7]。DSP的EMIF地址空间分配如表1所示。
1DSP的EMIF地址空间分配
本文采用EMIFB进行DSP的程序加载,SMJ320C6415芯片的EMIF默认程序加载空间为EMIFB CE1[8]。SMJ320C6415芯片通常采用只读存储器(ROM)加载方式,在上电复位后,从存储空间EMIFB CE1中拷贝1 kB数据到DSP内部的RAM中,并从其地址0x0处自动执行 [9]。因此,需要用户设计二次加载程序,将应用程序复制到DSP内部的RAM中运行。
在FPGA程序设计过程中,一般选用MRAM的第1个基片作为DSP加载程序的默认存储空间。FPGA程序中的EMIFB地址空间与MRAM基片选择的对应关系如表2所示。当FPGA检测到DSP访问EMIFB地址空间的信号时,则将其对应基片的片选信号置为有效。
2EMIFB地址空间与MRAM基片选择的对应关系
2 程序加载冗余设计
2.1 FPGA程序加载冗余设计
为了提高将DSP程序数据写入MRAM基片的可靠性,先通过FPGA将该数据分别写入第1个基片中3段相互独立的存储空间中,存储空间的起始地址分别为0x0,0x60000,0xC0000;然后再分别对第2个基片和第3个基片执行相同的操作。
DSP读取MRAM基片程序数据的方法相同。设EMIFB的时钟周期为TEB,该时钟周期由外部时钟晶振决定。DSP的EMIFB接口配置的读写周期为81TEB,其中读写建立时间为15TEB,读写选通时间为63TEB,读写保持时间为3TEB。当FPGA检测到DSP的读使能或写使能信号的下降沿时,则进行计数。计数的时钟信号周期为2TEB,最大计数值为31。当计数值分别为0,5,15,20,25时,FPGA控制DSP读写MRAM的操作如表3所示。
3FPGA控制DSP读写MRAM的操作
以DSP读取MRAM数据为例,FPGA在DSP读使能信号的下降沿时刻开始进行三选二多数表决处理,在DSP选通时间结束之前完成处理。FPGA在DSP读周期内将执行3次读取MRAM数据操作。根据表3的操作步骤,在DSP读使能有效时间段内,FPGA产生MRAM的3段地址与读信号。MRAM在每段地址对应的读信号达到有效脉冲宽度后输出数据。当完成第3段地址的数据输出后,将3段地址输出的数据进行三选二多数表决,并将表决后数据映射到DSP数据端口。DSP在读使能信号上升沿时刻读取三选二多数表决后的MRAM数据。通过这种冗余方式可以提高DSP读取MRAM数据的可靠性。FPGA中DSP读取MRAM数据冗余设计的时序如图2所示。
2FPGA中DSP读取MRAM数据冗余设计时序图
2.2 DSP程序加载冗余设计
DSP程序是按照段进行管理的,主要包括加载程序和用户程序。加载程序使用汇编语言编写,汇编器产生1个boot_up段;用户程序使用C语言编写,编译器产生.text、.data、.bss、.cinit等多个不同类型的段[10]。DSP程序及数据与内部存储空间的映射关系如表4所示。
4DSP程序及数据与内部存储空间的映射关系
本文将DSP加载模式管脚BOOTMODE4~BOOTMODE0配置为0,1,1,0,1,即采用8 bit的 ROM加载方式。DSP上电复位后,从MRAM的0x64000000地址处读取加载程序,程序大小为1 kB。加载程序被复制到DSP内部RAM 的0x00000000~0x000003FF地址空间后自动运行。再从MRAM 的0x00000400地址处开始加载用户程序。DSP程序加载过程示意图如图3所示。
3DSP程序加载过程示意图
使用汇编语言编写DSP加载程序,DSP程序加载的步骤为:
a) 配置EMIF的寄存器,使DSP能够通过FPGA访问所连接的外部MRAM,并将DSP的EMIFB CE1空间配置成8 bit异步模式;
b) 通过FPGA读取外部MRAM中3个基片的加载程序和用户程序进行三选二多数表决,将表决结果加载至DSP内部RAM中;
c) 跳转到用户程序入口函数_c_int00(),完成DSP程序加载。
数据复制和三选二多数表决的流程如图4所示。加载程序一般保存在文件second_boot.asm中,与其他用户程序文件和库文件共同组成完整的DSP程序。DSP使用CCS(code composer studio)软件进行编译后产生COFF(common object file format)目标文件,并通过烧录程序将目标文件写入MRAM的3个基片中,完成DSP上电加载前的程序固化。
3 试验验证
在基于FPGA和DSP(SMJ320C6415)的数字信号处理硬件平台上,采用MRAM作为DSP程序外部存储芯片,对本文所提程序加载方法进行试验验证。DSP加载程序中包含加载引导程序,用户程序采用信号检测软件。信号检测软件的主要功能是实现对目标的检测并输出脉压遥测信号。试验中通过示波器观察输出的脉压遥测信号,来判断用户程序是否正常加载。试验验证过程包括写入用户程序、注入故障模式、执行加载程序等步骤。
4数据复制和三选二多数表决流程图
(1) 写入用户程序
将通用目标文件通过在线烧写程序从DSP内部RAM中复制到外部MRAM的3个基片中,并通过DSP的MEMORY工具验证程序是否正确写入。3个基片存储空间的起始地址分别为0x60000000,0x64000000,0x68000000,在MEMORY工具中分别设置3个基片存储空间的起始地址,观察MEMORY工具显示的数据是否与复制的数据一致。
(2) 注入故障模式
通过在线烧写程序,将数据0写入MRAM第1个基片的第1段存储空间,擦除该段数据,以模拟航天产品在轨期间存储器单粒子翻转。利用DSP的MEMORY工具查看擦除结果,如果MEMORY工具显示的数据为0,则说明擦除成功。
(3) 执行加载程序
对DSP复位后进行程序加载,使用FPGA仿真工具抓取MRAM的地址线和内部数据,抓取的DSP程序加载过程波形如图5所示。
5DSP程序加载过程波形图
图5可以看到:在MRAM的数据读取期间,MRAM地址总线分为3段,分别为0x000400、0x060400、0x0C0400;第1段地址输出数据为0x00,其他地址输出数据均为0xFF;在读取完第3段地址数据后,FPGA三选二多数表决输出结果为0xFF。仿真工具抓取到的三选二多数表决结果为最终的输出数据。
(4)验证加载结果
待DSP程序加载完成后,通过示波器观察用户程序输出的脉压遥测信号,其波形如图6所示。实际输出脉压遥测信号与期望输出完全一致,证明用户程序加载及工作正常。
6脉压遥测信号波形图
试验结果表明,可擦除型MRAM通过多重冗余加载设计,避免了因单粒子翻转导致程序无法正常运行的问题,提高了程序存储和加载的可靠性。
4 结论
本文提出一种SMJ320C6415的高可靠程序加载方法,该方法采用多重冗余加载设计,避免了航天产品在轨期间存储器单粒子翻转导致程序无法正常运行的问题,提高了可擦除MRAM在航天产品上使用的可靠性。该方法还可根据用户需求灵活调整,无需将程序固化至反熔丝存储器中,缩短了产品研制周期、降低了产品维护成本。
1基于MRAM的DSP程序加载控制电路示意图
2FPGA中DSP读取MRAM数据冗余设计时序图
3DSP程序加载过程示意图
4数据复制和三选二多数表决流程图
5DSP程序加载过程波形图
6脉压遥测信号波形图
1DSP的EMIF地址空间分配
2EMIFB地址空间与MRAM基片选择的对应关系
3FPGA控制DSP读写MRAM的操作
4DSP程序及数据与内部存储空间的映射关系
马传干. 基于FPGA和DSP的星载软件动态重构设计[J]. 电子设计工程,2021,29(11):50-55.
高艳, 刘建, 李朝阳, 等. 一种基于DSP的惯性寻北组件通讯软件可靠性设计方法[J]. 工业控制计算机,2022,35(4):53-55.
杨茂森, 周昕杰, 陈瑶. MRAM空间粒子辐射效应关键技术研究[J]. 电子与封装,2021,21(4):58-66.
王番, 施敏华, 常亮. 星上SRAM型FPGA抗SEU内部刷新系统设计[J]. 航天器工程,2022,31(2):108-116.
孙秀芳, 姜凯. 基于DSP的SPI接口自举引导程序的实现[J]. 信息与电脑,2021,33(20):116-118.
杨海学, 张伟, 李小齐, 等. 基于TMS320C6678的多级加载与动态重构[J]. 电子设计工程,2022,30(19):39-43.
于长海. 基于EMIF总线的FPGA动态配置方案设计与实现[J]. 计算机与网络,2020,46(21):64-68.
赵飞. 一种基于DSP+FPGA架构的软件在线升级实现[J]. 现代导航,2021,12(6):462-465.
祖文祥, 丁劲涛. 基于DSP在线程序加载的研究与实现[J]. 通信电源技术,2020,37(7):76-78.
姜同全, 薛淑娟, 张腾, 等. 一种高可靠的工业级星载计算机及其引导设计[J]. 计算机测量与控制,2022,30(6):253-258.