CN111625286B - 一种星载dsp程序外部引导加载方法及加载系统 - Google Patents
一种星载dsp程序外部引导加载方法及加载系统 Download PDFInfo
- Publication number
- CN111625286B CN111625286B CN202010497475.1A CN202010497475A CN111625286B CN 111625286 B CN111625286 B CN 111625286B CN 202010497475 A CN202010497475 A CN 202010497475A CN 111625286 B CN111625286 B CN 111625286B
- Authority
- CN
- China
- Prior art keywords
- dsp
- program
- data
- spi
- internal
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
一种星载DSP程序外部引导加载方法及加载系统,涉及DSP程序加载技术,解决现有DSP程序加载方法存在程序内存必须小于DSP的内部RAM内存,并且如果与外部引导相关的硬件电路或者FPGA时序逻辑出现故障,引导过程将会失败,导致DSP不能工作等问题,由DSP、FPGA和EEPROM依次相连组成。EEPROM中存储三份二级bootloader程序,所述FPGA作为DSP引导加载三取二的关键,实现了SPI通信协议,分别与DSP和EEPROM进行通信,并对EEPROM中的三份二级bootloader程序数据按位进行三取二校验。本发明所述的引导方法同时具有内部引导和外部引导功能,以防外部引导电路硬件或者FPGA程序出现故障,遥控指令能够通过FPGA灵活切换引导方式,保证用户程序正常运行。
Description
技术领域
本发明涉及一种星载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和片选信号设置SPI模块的工作模式为:8位数据流、内部时钟以及主模式;
步骤二、所述FPGA同时逐字节读取所述EEPROM的三个不同地址段上的数据,并按位进行三取二校验,将校验后的数据存储到寄存器中;
步骤三、所述DSP通过SPI串口引导加载数据,具体过程为:
步骤三一、所述DSP读取GPIOF3端口的状态,启动SPI引导模式,使能片选信号由高变低,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和片选信号还用于接收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
在表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时钟,设置时钟频率。
表3
通过DSP外部GPIO引脚设置SPI工作模式为:8位数据流、内部时钟以及主模式。
三、FPGA实现三取二校验功能,逐字节读取EEPROM三个不同地址段上的数据,并按位进行三取二校验的操作,将校验数据存储到寄存器中。具体三取二校验方法如下:
由于加载数据位值非0即1,三取二校验可以对三份数据进行逐位判定,若该数据位相同则取此相同数据位值,若不完全相同,则取占多数的数据位值。三取二校验的输出真值表见表4,表4为三取二校验真值表,通过真值表可以得到三取二校验的输出结果,公式如下:
表4
四、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操作,完成用户程序外部引导加载。
Claims (9)
1.一种星载DSP程序引导加载方法,其特征是:该方法具体由以下步骤实现:
步骤一、系统上电,初始化SPI模块,使能SPI时钟,并设置所述SPI时钟频率;使能信号SPISIMO、信号SPISOMI、时钟脉冲信号SPICLK和片选信号设置SPI模块的工作模式为:8位数据流、内部时钟以及主模式;
步骤二、FPGA逐字节读取EEPROM的三个不同地址段上的数据,并按位进行三取二校验,将校验后的数据存储到寄存器中;
步骤三、所述DSP通过SPI串口引导加载数据,具体过程为:
步骤三一、所述DSP读取GPIOF3端口的状态,启动SPI引导模式,使能片选信号由高变低,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=1且t≤N,t为烧写次数;
步骤六三、三取二校验;对用户程序段2中每段需要烧写的数据进行三取二校验,将校验后的数据段复制到内部RAM区;
步骤六四、数据烧写和验证;
首先,调用API函数Flash_Program将内部RAM区对应数据烧写到内部FLASH扇区I中;
其次,再调用API函数Flash_Verify验证烧写到内部FLASH区中的数据是否正确;
步骤六五、烧写次数t加1,循环执行步骤六三和步骤六四,直到全部烧写完成;
步骤七、完成用户程序外部引导加载,初始化DSP,实现系统的正常运行。
3.根据权利要求1所述的一种星载DSP程序引导加载方法,其特征在于:步骤三二中,通过FPGA改变DSP接收的关键字数值,实现切换引导模式。
4.根据权利要求1所述的一种星载DSP程序引导加载方法,其特征在于:程序分为二级bootloader程序和用户程序;所述用户程序分别存储三份在内部FLASH段GH、段EF和段CD中;
所述用户程序将分为两部分运行,包括内部RAM区的用户程序段1和内部FLASH扇区I的用户程序段2。
5.根据权利要求1所述的一种星载DSP程序引导加载方法,其特征在于:所述SPI外部引导和内部引导过程中,二级bootloader程序均由codestart跳转指令模块、WD_DISABLE模块和三取二校验模块组成。
6.根据权利要求1所述的一种星载DSP程序引导加载方法,其特征在于:步骤三三中,根据外部引导文件数据流格式,采用两种方法获得所述数据流中每段程序的数据内容;一、通过跳转指令内容与跳转目的地址之间的关系,即:跳转指令第一个字是目的地址的高十六位加上固定数值0x40,第二个字是目的地址的低十六位,获得SPI外部引导文件的数据流;二、通过更改程序的CMD文件,获得SPI外部引导文件的数据流。
7.根据权利要求1所述的一种星载DSP程序引导加载方法的加载系统,其特征是:包括FPGA和EEPROM,所述FPGA包括SPI通讯模块和三取二校验模块;所述EEPROM用于存储三个二级引导程序数据段;
所述SPI通讯模块用于与DSP以及EEPROM通信,三取二校验模块用于对EEPROM传送的程序数据进行校验;
8.根据权利要求7所述的一种星载DSP程序引导加载系统,其特征在于:SPI外部引导模式中,所述DSP通过SPI串口继续接收数据,并将接收的两个字节分别设置为低速时钟寄存器和SPI波特率寄存器的数值,继续读取7个字节丢弃后,按照外部引导文件数据流格式将接收的数据段复制DSP的内部RAM区的指定地址;
内部引导模式中,所述DSP时钟脉冲信号SPICLK不再发送脉冲,FPGA停止发送数据。
9.根据权利要求7所述的一种星载DSP程序引导加载系统,其特征在于:SPI外部引导模式和内部引导模式相同,二级bootloader程序均由codestart跳转指令模块、WD_DISABLE模块和三取二校验模块;
首先,执行codestart跳转指令模块,指针跳转到WD_DISABLE模块,WD_DISABLE模块关闭DSP内部的看门狗,然后指针跳到三取二模块,利用三取二校验方法对用户程序段1的三个不同存储区逐字节读取数据,并将分别读取的每个字节进行三取二校验,复制校验后的用户程序段1数据到CMD文件指定的RAM区或FLASH区,最后指针跳转到用户程序入口_C_INT00,通过main函数对FLASH区的用户程序段2进行三取二校验和烧写Flash操作,完成用户程序外部引导加载。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010497475.1A CN111625286B (zh) | 2020-06-04 | 2020-06-04 | 一种星载dsp程序外部引导加载方法及加载系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010497475.1A CN111625286B (zh) | 2020-06-04 | 2020-06-04 | 一种星载dsp程序外部引导加载方法及加载系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111625286A CN111625286A (zh) | 2020-09-04 |
CN111625286B true CN111625286B (zh) | 2021-04-27 |
Family
ID=72270496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010497475.1A Active CN111625286B (zh) | 2020-06-04 | 2020-06-04 | 一种星载dsp程序外部引导加载方法及加载系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111625286B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112114888B (zh) * | 2020-09-29 | 2024-05-17 | 上海大郡动力控制技术有限公司 | 一种电动汽车电控系统通用客户端引导程序生成方法 |
CN113110131B (zh) * | 2021-03-22 | 2022-06-17 | 北京航天飞腾装备技术有限责任公司 | 一种飞行控制器的多段程序加载系统 |
CN113778487A (zh) * | 2021-09-10 | 2021-12-10 | 深圳朴生智能科技有限公司 | 一种智能处理模组的软件上注系统和方法 |
CN114091038A (zh) * | 2021-11-30 | 2022-02-25 | 中国科学院长春光学精密机械与物理研究所 | 一种基于dsp6701的高可靠性程序引导、回写方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10203962B2 (en) * | 2016-03-28 | 2019-02-12 | Crrc Qingdao Sifang Rolling Stock Research Institute Co., Ltd. | Tigersharc DSP boot management chip and method |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831090B (zh) * | 2012-05-07 | 2015-06-10 | 中国科学院空间科学与应用研究中心 | 一种用于星载dsp与fpga通讯接口的地址线及其优化方法 |
CN105446783B (zh) * | 2015-12-25 | 2019-01-29 | 浙江大学 | 一种皮卫星dsp程序快速加载方法 |
CN108089876B (zh) * | 2017-12-29 | 2020-09-18 | 中国科学院国家空间科学中心 | 一种星载dsp软件在轨更新方法 |
-
2020
- 2020-06-04 CN CN202010497475.1A patent/CN111625286B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10203962B2 (en) * | 2016-03-28 | 2019-02-12 | Crrc Qingdao Sifang Rolling Stock Research Institute Co., Ltd. | Tigersharc DSP boot management chip and method |
Non-Patent Citations (2)
Title |
---|
FPGA在航天遥感器中的应用;宋克非;《光机电信息》;20101225;全文 * |
高精度多通道数据实时采集与监控系统;张佩杰等;《仪表技术与传感器》;20140516;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111625286A (zh) | 2020-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111625286B (zh) | 一种星载dsp程序外部引导加载方法及加载系统 | |
US6587916B2 (en) | Microcomputer with built-in programmable nonvolatile memory | |
CN102132354B (zh) | 闪存中的数据的快速低功率读取 | |
US20050281113A1 (en) | Data processing system and data processing method | |
CN104425019A (zh) | 存取快闪存储器中储存单元的方法以及使用该方法的装置 | |
KR20090022435A (ko) | 멀티 비트 플래시 메모리 장치를 포함하는 시스템 및그것의 데이터 처리 방법 | |
CN104424127A (zh) | 存取快闪存储器中储存单元的方法以及使用该方法的装置 | |
CN104424040A (zh) | 存取快闪存储器中储存单元的方法以及使用该方法的装置 | |
CN104425020A (zh) | 存取快闪存储器中储存单元的方法以及使用该方法的装置 | |
US8065563B2 (en) | System for booting from a non-XIP memory utilizing a boot engine that does not have ECC capabilities during booting | |
KR20080017089A (ko) | 플래시 프로그램 메모리를 구비한 마이크로컨트롤러에서프로그램 브레이크 포인트를 제공하는 메커니즘 | |
CN102043725A (zh) | 用于闪存的数据写入方法及其控制器与储存系统 | |
CN103136111A (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN104425018A (zh) | 存取快闪存储器中储存单元的方法以及使用该方法的装置 | |
US10402118B2 (en) | Methods for atomic writes in an SSD (solid state disk) system and apparatuses using the same | |
CN115080471A (zh) | 基于FPGA的nand flash接口控制器及读写方法 | |
JP2002091831A (ja) | データ処理システム及びデータ処理方法 | |
CN113157334B (zh) | Fpga多版本程序加载方法 | |
CN103106155A (zh) | 存储器储存装置、存储器控制器与其数据传输方法 | |
CN112306726B (zh) | 一种抗单粒子翻转系统及方法 | |
CN106504788B (zh) | 具有空闲存储器件的存储系统及其操作方法 | |
CN108763148B (zh) | 一种支持上注的容错存储器控制器 | |
CN113836600A (zh) | 一种Embedded Flash误写保护方法 | |
CN107145805B (zh) | 一种flash/mtp内部数据防误擦写的实现方法 | |
US11733879B2 (en) | Data processing system and method for reading instruction data of instruction from memory including a comparison stage for preventing execution of wrong instruction data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |