一种星载dsp程序外部引导加载方法及加载系统

文档序号:1215066 发布日期:2020-09-04 浏览:2次 >En<

阅读说明:本技术 一种星载dsp程序外部引导加载方法及加载系统 (External boot loading method and loading system for satellite-borne DSP (digital Signal processor) program ) 是由 武昆 宋克非 孙亮 代霜 张佩杰 于 2020-06-04 设计创作,主要内容包括:一种星载DSP程序外部引导加载方法及加载系统,涉及DSP程序加载技术,解决现有DSP程序加载方法存在程序内存必须小于DSP的内部RAM内存,并且如果与外部引导相关的硬件电路或者FPGA时序逻辑出现故障,引导过程将会失败,导致DSP不能工作等问题,由DSP、FPGA和EEPROM依次相连组成。EEPROM中存储三份二级bootloader程序,所述FPGA作为DSP引导加载三取二的关键,实现了SPI通信协议,分别与DSP和EEPROM进行通信,并对EEPROM中的三份二级bootloader程序数据按位进行三取二校验。本发明所述的引导方法同时具有内部引导和外部引导功能,以防外部引导电路硬件或者FPGA程序出现故障,遥控指令能够通过FPGA灵活切换引导方式,保证用户程序正常运行。(A satellite-borne DSP program external guide loading method and a loading system relate to a DSP program loading technology and solve the problems that a program memory must be smaller than an internal RAM memory of a DSP in the existing DSP program loading method, and if a hardware circuit or FPGA time sequence logic related to external guide fails, a guide process fails, the DSP cannot work and the like. The FPGA is used as a key for the DSP to guide and load the three-to-two, the SPI communication protocol is realized, the communication with the DSP and the EEPROM is respectively realized, and the three-to-two verification is carried out on the data of the three-to-two bootloader programs in the EEPROM according to bits. The guiding method has the functions of internal guiding and external guiding simultaneously, so that the external guiding circuit hardware or the FPGA program is prevented from being in failure, the remote control instruction can flexibly switch the guiding mode through the FPGA, and the normal operation of the user program is ensured.)

一种星载DSP程序外部引导加载方法及加载系统

技术领域

本发明涉及一种星载DSP程序外部引导加载方法及系统,防止数字信号处理器TMS320F2812单粒子翻转现象。

背景技术

随着航天技术的不断发展,设备的高集成度、高复杂度、高可靠性成为星上设备必然发展趋势,大规模集成电路现已广泛地应用于航天设备的研制。然而空间工作环境比较复杂,对大规模集成电路的影响日益严重,轨道上高低温、辐射、空间单粒子翻转(SEU)等现象导致卫星出现故障的事件频繁发生。单粒子翻转事件最易发生在数字信号处理器(DSP)、复杂可编程逻辑器件(FPGA)等逻辑器件中。通常DSP软件程序一般存放在Flash或者可编程只读存储器(EEPROM) 等可重复擦写的存储器中,以便调试、更改。然而这些存储器抗辐射指标低,抵抗单粒子能力有限,一旦存储于其中的代码发生了单粒子翻转,那么可能导致整个软件无法正常加载。故需要在设计上对其进行加固处理。

一般抗单粒子翻转的方法主要通过硬件抗辐照加固和软件冗余加固两种措施。首先,通过硬件来提高抗辐射性能,通常都是增加器件冗余或者是采用抗辐射指标高的处理器和存储器。其次,软件设计上采取冗余加固处理。采用冗余设计的思路均为将软件代码在存储器中存放多份,但是加载方案各有不同。

针对上述需求,目前,国内外也有很多关于软件冗余加载的解决方案。

公开号CN102043754A的专利提出一种提高星载DSP加载引导可靠性的方法。该发明采用CPLD实现了对DSP的串行EEPROM加载进行三取二表决,并对 DSP的管脚进行扩展,时分复用,减小了硬件冗余,该方法方便灵活,减小了开发时间和开发成本。但也存在一些问题如,当外部引导出现软件或者硬件的问题,则DSP不能正常工作。另外,该发明只针对于小于内部RAM内存的程序,增加了方法的使用局限性。

公开号CN105446783A的专利提出一种皮卫星DSP程序快速加载方法。该发明在3片SPI Flash中存有不同版本的DSP程序,FPGA接收带有偏移地址的遥控指令,读取相应版本的DSP程序并发送至DSP。当卫星软件出故障时,可以加载核心版本,为进行故障恢复提供基础。该发明存在同样的一些问题如,当外部引导出现软件或者硬件的问题,则DSP不能正常工作。另外,该发明只针对于小于内部RAM内存的程序,增加了方法的使用局限性。

综上,现有常规思路是将程序存储三份在外部存储器EEPROM中,通过外部逻辑电路FPGA对其进行三取二校验,将校验结果引导加载到TMS320F2812 的内部RAM中运行,这种方法的局限性在于程序内存必须小于TMS320F2812的内部RAM内存,同时,如果与外部引导相关的硬件电路或者FPGA时序逻辑出现故障,引导过程将会失败,DSP不能工作。然而,目前好多航天程序功能复杂,占用的内存比较大,很可能满足不了该引导方法的要求,本发明基于以上技术的不足,提出了基于TMS320F2812的大内存用户程序高效可靠的引导加载方法。

发明内容

本发明为解决现有DSP程序加载方法存在程序内存必须小于DSP的内部 RAM内存,并且如果与外部引导相关的硬件电路或者FPGA时序逻辑出现故障,引导过程将会失败,导致DSP不能工作等问题,提供一种星载DSP程序外部引导加载方法及加载系统。

一种星载DSP程序外部引导加载方法,该方法具体由以下步骤实现:

步骤一、系统上电,初始化SPI模块,使能SPI时钟,并设置所述SPI时钟频率;使能信号SPISIMO、信号SPISOMI、时钟脉冲信号SPICLK和片选信号

Figure BDA0002523423670000021

设置SPI模块的工作模式为:8位数据流、内部时钟以及主模式;

步骤二、所述FPGA同时逐字节读取所述EEPROM的三个不同地址段上的数据,并按位进行三取二校验,将校验后的数据存储到寄存器中;

步骤三、所述DSP通过SPI串口引导加载数据,具体过程为:

步骤三一、所述DSP读取GPIOF3端口的状态,启动SPI引导模式,使能片选信号

Figure BDA0002523423670000021

由高变低,FPGA识别信号下降沿后,对DSP加载时钟脉冲信号 SPICLK进行计数,并将步骤二存储到寄存器中的校验后的数据通过引脚 SPISOMI发送至DSP;

步骤三二、所述DSP调用SPI_Boot程序,接收关键字,并判断接收的关键字是否为0x08AA,如果是,则执行步骤三三,如果否,执行步骤三四;

步骤三三、开启SPI外部引导,所述DSP通过SPI串口继续接收数据,并将接收的两个字节分别设置为低速时钟寄存器和SPI波特率寄存器的数值,继续读取 7个字节丢弃后,按照外部引导文件数据流格式将接收的数据段复制DSP的内部 RAM区的指定地址,然后指针跳到程序入口地址,启动内部RAM区的二级 bootloader程序,执行步骤四;

步骤三四、所述DSP时钟脉冲信号SPICLK不再发送脉冲,FPGA停止发送数据,启动内部引导模式,跳转到内部FLASH入口地址取出跳转指令,然后再跳转到内部FLASH区的二级bootloader程序中,执行步骤五;

步骤四、执行内部RAM区的codestart跳转指令模块,指针跳转到RAM区的WD_DISABLE模块,WD_DISABLE模块关闭DSP内部的看门狗,然后指针跳到RAM区的三取二模块,利用三取二校验方法对用户程序段1的三个不同存储区逐字节读取数据,并将分别读取的每个字节进行三取二校验,复制校验后的用户程序段1数据到CMD文件指定的RAM区内,最后指针跳转到用户程序入口_C_INT00,执行步骤六;

步骤五、执行内部FLASH区的codestart跳转指令模块,指针跳转到FLASH 区的WD_DISABLE模块,WD_DISABLE模块关闭DSP内部的看门狗,然后指针跳到FLASH区的三取二模块,利用三取二校验方法对用户程序段1的三个不同存储区逐字节读取数据,并将分别读取的每个字节进行三取二校验,复制校验后的用户程序段1数据到CMD文件指定的FLASH区内,最后指针跳转到用户程序入口_C_INT00,执行步骤六;

步骤六、通过用户程序入口_C_INT00,跳转到main函数,所述main函数对所述用户程序段2进行三取二校验和烧写Flash操作;具体过程为:

步骤六一、扇区擦除;利用Flash API函数Flash_Erase擦除内部FLASH的扇区I;

步骤六二、程序分割;即:将所述用户程序段2按所述内部RAM区的长度分为N段,每段烧写一次;设定t≤N,t为烧写次数;

步骤六三、三取二校验;对用户程序段2中每段需要烧写的数据进行三取二校验,将校验后的数据段复制到内部RAM区;

步骤六四、数据烧写和验证;

首先,调用API函数Flash_Program将内部RAM区对应数据烧写到内部 FLASH扇区I中;

其次,再调用API函数Flash_Verify验证烧写到内部FLASH区中的数据是否正确;

步骤六五、烧写次数t加1,循环执行步骤六三和步骤六四,直到全部烧写完成;

步骤七、完成用户程序外部引导加载,初始化DSP,实现系统的正常运行。

一种星载DSP程序外部引导加载系统,包括FPGA和EEPROM,所述FPGA 包括SPI通讯模块和三取二校验模块;所述EEPROM用于存储三个二级引导程序数据段;

所述SPI通讯模块用于与DSP以及EEPROM通信,三取二校验模块用于对 EEPROM传送的程序数据进行校验;

所述DSP的SPI_Boot程序用于使能信号SPISIMO、信号SPISOMI、时钟脉冲信号SPICLK和片选信号

Figure BDA0002523423670000041

还用于接收FPGA发送的关键字,根据关键字的值,DSP启动SPI外部引导模式或内部引导模式;开启SPI外部引导模式时,执行内部RAM区的二级bootloader程序,内部引导模式时,执行内部 FLASH区的二级bootloader程序。

本发明的有益效果:本发明所述的DSP程序外部引导加载方法,解决了SPI 外部引导的程序内存局限性,用户程序不需要小于内部RAM内存,这样,方便了许多复杂程序的引导过程。

本发明所述的引导方法同时具有内部引导和外部引导功能,以防外部引导电路硬件或者FPGA程序出现故障,遥控指令能够通过FPGA灵活切换引导方式,保证用户程序正常运行。

附图说明

图1为本发明所述的一种星载DSP程序外部引导加载系统的原理框图;

图2为本发明所述的一种星载DSP程序外部引导加载方法中DSP外部引导加载时序图;

图3为本发明所述的一种星载DSP程序外部引导加载方法的流程图;

图4为本发明所述的一种星载DSP程序外部引导加载方法中程序的分布结构图。

具体实施方式

具体实施方式一、结合图1至图4说明本实施方式,一种星载DSP程序外部引导加载方法,结合图1,硬件系统主要由数字信号处理器DSP、复杂可编程逻辑器件FPGA和可编程只读存储器EEPROM依次相连组成。EEPROM中存储三份二级bootloader程序,程序的数据流格式见表1,表1为TMS320F2812 SPI 8bit外部引导文件数据流。所述FPGA作为DSP引导加载三取二的关键,实现了SPI通信协议,分别与DSP和EEPROM进行通信,并对EEPROM中的三份二级bootloader程序数据按位进行三取二校验,主要功能框图见图1。

表1

Figure BDA0002523423670000051

在表1中,数据块1为三取二模块,主要功能是对用户程序数据段1进行三取二校验。数据块2为WD_DISABLE模块,主要功能是关闭DSP内部看门狗,然后跳转到三取二模块。数据块3为codestart跳转指令模块,判断DSP内部狗是否关闭,如果关闭,则直接跳转到数据块1代码,否则跳转到数据块2 代码。

由于外部三取二模块和内部三取二模块相同,最后跳转的位置都是用户程序入口_C_INT00,因此数据块1可以直接拷贝内部三取二模块内存数据获得。然而,WD_DISABLE模块和codestart跳转指令模块与对应内部的模块是不同的,需要研究其数据具体内容。codestart跳转指令模块只有2个字,通过内部codestart 跳转指令代码与其内存数据的对比,可以发现,codestart第一个字是 WD_DISABLE模块地址的高十六位加上固定数值0x40,codestart第二个字是 WD_DISABLE模块地址的低十六位,如下表2,表2为codestart跳转指令模块内容。

表2

WD_DISABLE模块地址 codestart模块第一个字 codestart模块第二个字
0x00009d36 0x0040 0x9d36
0x003f418c 0x007f 0x418c
0x003e4000 0x007e 0x4000

除此之外,还可以通过更改程序的CMD文件方式,将内部WD_DISABLE 模块运行地址改为外部WD_DISABLE模块指定的地址,得到外部codestart跳转指令的数据。另外,WD_DISABLE模块只有8个字,通过内部WD_DISABLE 代码与其内存数据的对比,可以发现,前6个字为关闭DSP内部看门狗的代码数据,后2个字为跳转到三取二模块的指令。同样,通过上述更改CMD文件的方法,将内部三取二模块运行地址改为外部三取二模块指定的地址,最后通过拷贝得到外部WD_DISABLE模块的内容。最终,数据块1、数据块2和数据块 3组成SPI外部引导文件数据流。

本实施方式的具体实现过程为:

一、系统上电,初始化SPI串口,使能SPI时钟,设置时钟频率。

二、使能信号SPISIMO、信号SPISOMI、时钟脉冲信号SPICLK和片选信号

Figure BDA0002523423670000071

引脚功能描述见表3,表3为TMS320F2812SPI信号功能描述。

表3

Figure BDA0002523423670000072

通过DSP外部GPIO引脚设置SPI工作模式为:8位数据流、内部时钟以及主模式。

三、FPGA实现三取二校验功能,逐字节读取EEPROM三个不同地址段上的数据,并按位进行三取二校验的操作,将校验数据存储到寄存器中。具体三取二校验方法如下:

由于加载数据位值非0即1,三取二校验可以对三份数据进行逐位判定,若该数据位相同则取此相同数据位值,若不完全相同,则取占多数的数据位值。三取二校验的输出真值表见表4,表4为三取二校验真值表,通过真值表可以得到三取二校验的输出结果,公式如下:

式中,A、B、C分别为三个数值,

Figure BDA0002523423670000074

分别为对A、B、C三个数值进行逻辑非操作,&为逻辑与符号。

表4

Figure BDA0002523423670000075

四、DSP通过SPI串口引导加载数据,具体过程见流程图3。根据读取GPIOF3 端口的状态,启动SPI引导模式,使能片选信号由高变低,FPGA识别信号下降沿后,对DSP加载时钟脉冲SPICLK进行计数,负责把校验后的数据通过引脚SPISOMI发送给DSP,时序图见图2。DSP调用SPI_Boot,接收关键字,判断其是否为0x08AA,同时,如果有需求,遥控指令能够通过FPGA改变关键字数值,达到切换引导方式的目的。

A、关键字为0x08AA时,开启SPI外部引导,DSP通过SPI串口继续接收数据,紧接着两个字节分别为设置低速时钟寄存器(LOSPCP)和SPI波特率寄存器(SPIBRR)数值,然后读取7个字节丢弃,然后按照数据流格式将各个数据段搬移到内部RAM区的指定地址,指针跳到程序入口地址,启动二级bootloader 程序。

B、关键字为其他值时,DSP时钟脉冲信号SPICLK不再发送脉冲,FPGA 将不会继续发送数据,引导模式将转为内部引导,跳转到内部FLASH入口地址 (0x003F7FF6)取出跳转指令,然后再跳转到内部FLASH的二级bootloader程序中。

本实施方式中,整体程序分为二级bootloader程序和用户程序,具体程序分布结构见图4。为了三取二校验功能,用户程序分别存储三份在内部FLASH段 GH、段EF和段CD中,由于用户程序运行所需内存大于内部RAM区内存,因此,用户程序将分为两部分运行,包括内部RAM区的用户程序段 1(.const、.cinit、.econst、.pinit、.switch、.text、Flash_API、Iqmath、ramfuncs) 和内部FLASH扇区I的用户程序段2(Flashfuncs),具体地址分布详见表5。表5 为用户程序段内存分布表。

表5

程序段 内存大小 存储地址1 存储地址2 存储地址3 运行地址
.cinit 0x0c83 0x003dfc70 0x003e7c70 0x003efc70 0x003f8000
.econst 0x0046 0x003e1116 0x003e9116 0x003f1116 0x003f8c98
.text 0x1c8d 0x003ddfe3 0x003e5fe3 0x003edfe3 0x00008000
Flash_API 0x0551 0x003e08f4 0x003e88f4 0x003f08f4 0x003f8d00
Iqmath 0x0233 0x003e0e45 0x003e8e45 0x003f0e45 0x00009d20
ramfuncs 0x009d 0x003e1078 0x003e9078 0x003f1078 0x003f9a00
Flashfuncs 0x1fe3 0x003dc000 0x003e4000 0x003ec000 0x003da000

根据内部引导或者外部引导模式的设置,用户程序段引导分为两种不同过程:

外部SPI引导过程中,根据SPI引导的数据流格式设置,二级bootloader程序需搬移到内部RAM区指定地址运行。首先,执行RAM区的codestart跳转指令模块,指针跳转到RAM区的WD_DISABLE模块,WD_DISABLE将会关闭 DSP内部的看门狗,执行后指针跳到RAM区的三取二模块,然后,同样利用三取二校验方法对用户程序段1的三个不同存储区逐字节读取数据,并将读取的每个字节进行三取二校验,复制校验后的用户程序段1数据到CMD文件指定的 RAM区内,最后跳转到用户程序入口_C_INT00;

内部SPI引导过程与外部引导过程相同,均是由codestart跳转指令模块、 WD_DISABLE模块和三取二校验模块组成,只是模块运行的地址不同而已,内部引导过程都是在内部FLASH区内进行的,最终会跳转到用户程序入口 _C_INT00。

五、通过用户程序入口_C_INT00,直接跳转到main函数,函数先对用户程序段2进行三取二校验和烧写Flash流程,过程如下:

a)扇区擦除。利用Flash API函数Flash_Erase擦除内部FLASH的扇区I。

b)程序分割。根据Datasheet中关于API函数的说明,只能将内部RAM数据烧写到内部FLASH扇区I内,因此,需要先把校验后的用户程序段2复制到RAM 区。由于程序段2内存长度为0x1fe3,RAM区剩余内存长度只有0x300,因此,如果把程序段2完全烧写到内部Flash中,需将程序段2均分割为11段,每段烧写一次,共烧写11次即可。

c)三取二校验。对用户程序段2中每段需要烧写的数据进行三取二校验,将校验后的数据段复制到RAM区。

d)数据烧写和验证。首先,调用API函数Flash_Program把RAM区对应数据烧写到内部FLASH扇区I中。其次,再调用API函数Flash_Verify验证烧写到Flash中的数据是否正确。

e)步骤c)和d)循环执行11次后,引导过程结束。

六、初始化DSP,开始系统正常运行。

本实施方式中,外部引导方法都是针对整个用户程序的引导,可以直接将用户程序的.out文件通过hex2000.exe转换成SPI数据流即可。由于本实施方式只将二级bootloader程序转成数据流,因此,在清晰外部引导数据流格式的基础上,需要得到数据流中每段程序的数据内容,本实施方式通过两种方法获得其内容,其中一种方法为,通过跳转指令内容与跳转目的地址之间的关系,即跳转指令第一个字是目的地址的高十六位加上固定数值0x40,第二个字是目的地址的低十六位,第二种方法是通过更改程序的CMD文件获得,最终获得SPI外部引导文件的数据流。

具体实施方式二、本实施方式为具体实施方式一所述的一种星载DSP程序外部引导加载方法的加载系统,结合图1,包括FPGA和EEPROM,所述FPGA 包括SPI通讯模块和三取二校验模块;所述EEPROM用于存储三个二级引导程序数据段;

所述SPI通讯模块用于与DSP以及EEPROM通信,三取二校验模块用于对 EEPROM传送的程序数据进行校验;

所述DSP的SPI_Boot程序用于使能信号SPISIMO、信号SPISOMI、时钟脉冲信号SPICLK和片选信号还用于接收FPGA发送的关键字,根据关键字的值,DSP启动SPI外部引导模式或内部引导模式;开启SPI外部引导模式时,执行内部RAM区的二级bootloader程序,开启内部引导模式时,执行内部FLASH区的二级bootloader程序。

所述SPI外部引导模式中,所述DSP通过SPI串口继续接收数据,并将接收的两个字节分别设置为低速时钟寄存器和SPI波特率寄存器的数值,继续读取7个字节丢弃后,按照外部引导文件数据流格式将接收的数据段复制DSP的内部RAM区的指定地址;

内部引导模式中,所述DSP时钟脉冲信号SPICLK不再发送脉冲,FPGA停止发送数据。

所述SPI外部引导模式和内部引导模式相同,二级bootloader程序均由codestart跳转指令模块、WD_DISABLE模块和三取二校验模块;

首先,执行codestart跳转指令模块,指针跳转到WD_DISABLE模块, WD_DISABLE模块关闭DSP内部的看门狗,然后指针跳到三取二模块,利用三取二校验方法对用户程序段1的三个不同存储区逐字节读取数据,并将分别读取的每个字节进行三取二校验,复制校验后的用户程序段1数据到CMD文件指定的 RAM区或FLASH区,最后指针跳转到用户程序入口_C_INT00,通过main函数对 FLASH区的用户程序段2进行三取二校验和烧写Flash操作,完成用户程序外部引导加载。

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于诱饵效应的雾节点任务卸载方法、系统、介质及设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!