CN105446783B - 一种皮卫星dsp程序快速加载方法 - Google Patents

一种皮卫星dsp程序快速加载方法 Download PDF

Info

Publication number
CN105446783B
CN105446783B CN201510995332.2A CN201510995332A CN105446783B CN 105446783 B CN105446783 B CN 105446783B CN 201510995332 A CN201510995332 A CN 201510995332A CN 105446783 B CN105446783 B CN 105446783B
Authority
CN
China
Prior art keywords
dsp
fpga
spi
byte
program
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
Application number
CN201510995332.2A
Other languages
English (en)
Other versions
CN105446783A (zh
Inventor
苏星
王慧泉
王婵
张佳慧
储佳承
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN201510995332.2A priority Critical patent/CN105446783B/zh
Publication of CN105446783A publication Critical patent/CN105446783A/zh
Application granted granted Critical
Publication of CN105446783B publication Critical patent/CN105446783B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种皮卫星DSP程序快速高可靠三取二加载方法,DSP程序分别存储在3片SPI Flash上,运行在Sequential Read模式下的DSP通过作为中间模块的FPGA从3片SPI Flash加载DSP程序,具体包括:(1)DSP在向FPGA发送命令字与地址,请求加载DSP程序;(2)FPGA同时在3片SPI Flash的相应地址中逐字节读取数据,并将读取的每个字节进行三取二校验;(3)DSP从FPGA读取校验后的字节数据,同时FPGA进行下一字节的读取和校验。本发明DSP程序三取二加载方案,基于DSP的Sequential Read的快速加载模式,使用3片SPI Flash作为程序存储器,并通过FPGA的逻辑设计来实现。相比于基于Random Read模式的三取二加载方法,可以更快速完成DSP加载,加载时间会至少缩短50%。

Description

一种皮卫星DSP程序快速加载方法
技术领域
本发明涉及皮卫星、空间应用电子系统,尤其涉及一种基于FPGA实现的,应用于皮卫星的快速、高可靠DSP程序三取二加载方法。
背景技术
皮卫星是指重量为公斤级的超微小卫星,它一般以微电子、微机电系统(MEMS)、多芯片封装组装等微小型化技术为基础,具有自主控制程度高、重量轻、研制周期短、机动性强、造价和发射成本低等特点。皮卫星是现代航天技术中的重要研究领域,它能以更低的成本完成卫星搭载试验等空间科学实验,已成为国际上的研究热点。
皮卫星工作环境比较复杂,轨道上高低温、辐射、单粒子事件等都会导致皮卫星出错概率增加,由于DSP软件运行在RAM中,容易收到辐射影响,发生单粒子事件,所以当星上DSP软件死机或者跑飞时,需要对DSP进行重新加载。DSP程序由于比较灵活,难以在设计早中期定型,一般存放在NAND Flash、SPI Flash、EEPROM等可重复擦写的存储器中,以便调试、更改。然而这些存储器并非专用的宇航级器件,无抗辐射指标,抵抗单粒子能力有限,一旦存储于其中的代码发生了单粒子翻转,那么可能导致整个软件无法正常加载起来,后果十分严重。故需要在设计上对其进行加固处理。
设计上一般采取冗余加固处理。采用冗余设计的思路均为将软件代码在存储器中存放多份,但是加载方案各有不同。已有的一种方法为:先设计DSP加载的二级bootloader程序,将此程序存放在反熔丝存储器中,再将任务程序以3倍冗余的形式存储在可重复擦写的存储器中。DSP上电后先加载二级bootloader程序,二级bootloader程序运行起来之后,再从外部存储器中读取任务程序,进行三取二校验,然后再更新DSP内部程序,之后任务程序就可以运行起来了。
这种方法仅靠DSP自身就可以完成三取二加载,提高了加载的可靠性,但其性能并非最优。这是因为DSP加载完成二级bootloader程序后,二级bootloader程序还要再去依次读取3份程序进行冗余校验,最后再完成加载,这一步消耗的时间就增加到了3倍,很大的延长了加载总耗时;
另一种已公开的三取二加载方法是:将软件代码存放3份在EEPROM中,利用CPLD中的逻辑设计,完成三取二加载。然而该方法适用的是Random Read模式,即每加载1字节数据,命令字(1字节)和地址(3字节)都要发送一次,加载耗时为本发明的5倍。如果在32位DSP上按32bit模式加载(即每次发一次命令字与地址,读取4个字节),加载耗时也仍然会增加1倍。
发明内容
本发明是为了克服现有DSP三取二加载技术消耗时间长、以及无多软件版本保存的问题,提供了一种快速、多备份的高可靠DSP加载管理方案。
一种皮卫星DSP程序快速高可靠三取二加载方法,DSP程序分别存储在3片SPIFlash上,运行在Sequential Read模式下的DSP通过作为中间模块的FPGA从3片SPI Flash加载DSP程序,具体包括:
(1)DSP在向FPGA发送命令字与地址,请求加载DSP程序;
(2)FPGA同时在3片SPI Flash的相应地址中逐字节读取数据,并将读取的每个字节进行三取二校验;
(3)DSP从FPGA读取校验后的字节数据,同时FPGA进行下一字节的读取和校验。
本发明DSP程序三取二加载方案,基于DSP的Sequential Read的快速加载模式,使用3片SPI Flash作为程序存储器,并通过FPGA的逻辑设计来实现。相比于基于Random Read模式的三取二加载方法,可以更快速完成DSP加载,加载时间会至少缩短50%。
作为优选,3片SPI Flash中存有不同版本的DSP程序,所述FPGA直接接收带有偏移地址的遥控指令,根据该偏移地址从3片SPI Flash中读取相应版本的DSP程序并发送至DSP。
本发明具有存储并加载多个软件版本的功能,除正常的软件版本之外,额外存储一份只包含基本功能的核心版本,当正常的卫星软件由于某些原因出故障时,可以加载核心版本,以维持卫星的基本功能,为进一步进行故障恢复提供基础。
作为优选,FPGA内带有用于保存地址偏移量的BIAS寄存器,步骤(1)中DSP所发送的地址以及所述遥控指令中的偏移地址均存放在该BIAS寄存器,每次FPGA按照BIAS寄存器中的地址偏移量从在3片SPIFlash中读取相应的数据。
步骤(1)中,FPGA通过检测来自DSP的CS信号的状态以触发加载DSP程序。
DSP上电后进入SPI串行加载模式,开始发出加载时序,CS信号被拉低;FPGA采集到CS信号下降沿后,开始进行DSP程序加载的相关步骤。
FPGA中开启两个能够相互检测状态的状态机(FSM),分别对应SPI_Master模块和SPI_Slave模块,其中SPI_Slave模块与DSP通信,SPI_Master模块与3片SPI Flash通信;FPGA中预设两个寄存器,分别为寄存器A1和寄存器A2;
步骤(2)中SPI_Master模块在预定周期内从3片SPI Flash中逐字节读取数据,当前字节数据读取完成后立即进行三取二校验,将结果存入寄存器A1中。
步骤(3)中的预定周期结束后,SPI_Slave模块将寄存器A1的值赋给寄存器A2,再把寄存器A2的值输出给DSP;完成输出后重新判断CS信号的状态以进行相应的后续步骤。
步骤(3)中在SPI_Slave模块与DSP通信的同时,SPI_Master模块进行下一字节的读取和校验。
本发明应用于皮卫星上的快速、高可靠DSP程序三取二加载方法基于DSP的Sequential Read的快速加载模式,使用3片SPI Flash作为程序存储器,并通过FPGA的逻辑设计来实现。可以更快速完成DSP加载,除正常的软件版本之外,额外存储一份只包含基本功能的核心版本,当正常的卫星软件由于某些原因出故障时,可以加载核心版本,以维持卫星的基本功能。
由于皮卫星研制周期一般较短,软件很难有充足的时间充分测试,其成熟度比一般较低。某些皮卫星会使用软件在轨更新功能来应对软件成熟度不足的问题,但此功能又会引入新的风险。本发明提供的核心版本机制可以较好的应对软件成熟度不足、以及在轨更新潜在的风险,增加了整星的可靠性。在研制周期较短的皮纳卫星的应用中,具有较大的实用价值;在其他软件成熟度不足的应用场合,也具备一定借鉴意义。
附图说明
图1是本发明DSP程序加载方法的硬件构架示意图
图2是图1中硬件构架的内部原理示意图。
图3为DSP在32bit串行加载模式下的Random Read时序,每读取一个字长(32bit)的数据都需要重复发送读命令、地址。
图4为DSP在32bit串行加载模式下的Sequential Read时序,只需要发送一次读命令、地址,就可以读出整份代码数据。
图5为FPGA内三取二加载模块的逻辑框图。
图6为SPI Slave模块内部有限状态机,主要功能为负责与DSP的通信。
图7为SPI Master模块的内部有限状态,主要功能为负责与3片SPI Flash的通信并校验。
具体实施方式
参见图1,本发明DSP程序快速三取二加载的方法所涉及的硬件包括由DSP(DSP芯片),FPGA,3片SPI Flash。
其中3片SPI Flash通过独立总线的方式与FPGA连接,参见图2,SPI Flash存储空间划分为0,1,2……n几个块,每个块存放一个版本的代码,3片存储器同地址存放同样的代码,这样就形成了3倍冗余的n个版本的代码的存储体系。
本发明DSP为TI TMS32C6000系列,根据器件技术手册,该DSP的SPI串行加载有的Random Read模式与Sequential Read模式,如附图3和图4所示。可以看出Random Read模式下每读一个字长的数据,都需要发送一次8bit读命令(CMD),一次24bit地址(ADDRESS),然后回读32bit数据;Sequential Read模式下,只需发一次8bit读命令(CMD),一次24bit地址(ADDRESS),然后可以回读所有数据,显然在相同的加载时钟频率下,Sequential Read模式加载效率会高出1倍。本发明适用的就是快速的Sequential Read模式。
生成烧写用AIS文件时,在AIS配置页面,将“Sequential Read”对勾勾上,设置SPI读模式为Sequential Read。
DSP是加载的发起端,其加载模式选择由芯片上的BOOT0,BOOT1,BOOT2,BOOT7管脚决定,要求这几个管脚处于以下状态:BOOT0下拉,BOOT1上拉,BOOT2上拉,BOOT7下拉,以选择SPI Flash串行加载模式。
DSP加载的时序由FPGA识别,读取SPI Flash的时序也由FPGA产生,如图2,FPGA的功能主要为分以下三个模块:指令接收模块,加载版本切换模块,三取二加载模块。
指令接收模块:接收测控系统发送过来的遥控指令,实现了与测控系统的接口通信。
加载版本切换模块:设有BIAS寄存器,用于保存地址偏移量,实现不同版本软件的选择。根据指令接收模块获得的加载版本信息,改变BIAS的值以切换到对应的目标地址,通过改变偏移地址的方式实现不同软件版本的加载;
参见图5,三取二加载模块包含SPI_Slave模块与SPI_Master模块。其中SPI_Slave模块负责与DSP通信,对DSP加载时钟进行计数,依据此计数值确定读取SPI Flash的时刻以及地址,并负责把校验后的数据给DSP;SPI_Master模块负责并行读取3片SPI Flash,读取的时刻与地址由SPI_Slave模块提供,并负责三取二校验读到的数据,提供给SPI_Slave模块。
SPI_Slave模块与SPI_Master模块也可视为两个能够相互检测状态的状态机(FSM),SPI_Slave模块内部有限状态机包括IDLE,RX_CMD,RX_ADDR,SET,TX_DAT五个状态,SPI_Master模块内部有限状态机包括IDLE,RX_FLASH,RELEASE,DECODE四个状态。
图6~图7描述了三取二加载模块的逻辑关系与状态转换图。其中SPI_Slave模块负责与DSP通信,对DSP加载时钟进行计数,依据此计数值确定读取SPI Flash的时刻以及地址,并负责把校验后的数据给DSP;SPI_Master模块负责并行读取3片SPI Flash,读取的时刻与地址由SPI_Slave模块提供,并负责三取二校验读到的数据,提供给SPI_Slave模块。实际应用时,在向SPI Flash烧写软件的时候,需要在三片SPI Flash相同的存储位置分别烧写一遍相同的程序,以保证三取二校验可以正常执行。
本发明具体实现步骤如下:
1.DSP上电后,扫描boot脚(boot脚在硬件上需这样配置:BOOT0下拉,BOOT1上拉,BOOT2上拉,BOOT7下拉,其余BOOT脚任意),进入SPI串行加载模式,开始发出加载时序,CS信号被拉低;
2.FPGA内所有计数器的初始值设为0。FPGA的SPI_Slave模块采集到CS信号下降沿后,从复位状态IDLE进入RX_CMD状态,同时加载时钟计数器CNT开始对时钟的个数进行计数;FPGA内的BIAS寄存器,用于保存地址偏移量,实现不同版本软件的选择。
3.当SPI_Master检测到SPI_Slave处于RX_CMD状态时,会从IDLE状态进入RX_FLASH状态,开始并行地从3片SPI Flash第BIAS+0个字节地址起,读取32bit数据,读取完成后立即进行三取二校验,将结果存入寄存器A1中。此过程需要在32个时钟周期内完成。32个时钟周期之后CNT=32,SPI_Slave进入SET状态,SPI_Master会再回到IDLE状态;
4.SPI_Slave进入SET状态后,将CNT赋值为32,将A1的值赋给A2,然后进入TX_DAT状态;
5.SPI_Slave进入TX_DAT状态后,FPGA内会同时执行两项任务:
(a)SPI_Slave根据SPI时序,把寄存器A2的值输出给DSP,最后1bit输出之后(即32个时钟周期后,CNT=64时),判断CS是否是低电平,如果是,则回到状态SET;否则回到IDLE状态,表明加载结束。
(b)SPI_Master检测到SPI_Slave已经处于TX_DAT状态,将并行地从3片SPI Flash第BIAS+4n(n=1,2…)个字节地址读取数据,在32个时钟周期内完成读取与三取二校验,将结果存入寄存器A1中,并将n值+1。在检测到SPI_Slave已经处于SET状态后,自己回到IDLE状态。此步骤中FPGA要“提前”准备好校验后的数据,即在送给DSP数据的同时,从3片SPIFlash中读取后续的数据。这样就实现了适用于Sequential Read模式的三取二加载。
重复(4)~(5)直到DSP程序加载完成。
本发明中,三取二表决是通过1bit加法进位获得。若a,b,c均为1bit数据,那么abc三取二的结果就是a+b+c的进位值。利用该逻辑关系可以很方便在FPGA内实现三取二表决。
本发明基于DSP的Sequential Read模式,通过FPGA逻辑设计实现了适用于该模式的三取二加载方案,并不会额外增加DSP的加载时间,并且有多软件版本机制。目前已有的两种三取二加载方法,与本发明的三取二加载方法,性能对比如下:
三种三取二加载方法的性能对比
相比于基于Random Read模式的三取二加载方法,本发明可以更快速完成DSP加载,加载时间会至少缩短50%。

Claims (4)

1.一种皮卫星DSP程序快速高可靠三取二加载方法,其特征在于,DSP程序分别存储在3片SPI Flash上,运行在Sequential Read模式下的DSP通过作为中间模块的FPGA从3片SPIFlash加载DSP程序,具体包括:
(1)DSP在向FPGA发送命令字与地址,请求加载DSP程序;
(2)FPGA同时在3片SPI Flash的相应地址中逐字节读取数据,并将读取的每个字节进行三取二校验;
(3)DSP从FPGA读取校验后的字节数据,同时FPGA进行下一字节的读取和校验;
FPGA中开启两个能够相互检测状态的状态机,分别对应SPI_Master模块和SPI_Slave模块,其中SPI_Slave模块与DSP通信,SPI_Master模块与3片SPI Flash通信;FPGA中预设两个寄存器,分别为寄存器A1和寄存器A2;
步骤(2)中SPI_Master模块在预定周期内从3片SPI Flash中逐字节读取数据,当前字节数据读取完成后立即进行三取二校验,将结果存入寄存器A1中;
步骤(2)中的预定周期结束后,SPI_Slave模块将寄存器A1的值赋给寄存器A2,再把寄存器A2的值输出给DSP;完成输出后重新判断CS信号的状态以进行相应的后续步骤;
步骤(3)中在SPI_Slave模块与DSP通信的同时,SPI_Master模块进行下一字节的读取和校验。
2.如权利要求1所述的皮卫星DSP程序快速高可靠三取二加载方法,其特征在于,3片SPI Flash中存有不同版本的DSP程序,所述FPGA直接接收带有偏移地址的遥控指令,根据该偏移地址从3片SPI Flash中读取相应版本的DSP程序并发送至DSP。
3.如权利要求2所述的皮卫星DSP程序快速高可靠三取二加载方法,其特征在于,FPGA内带有用于保存地址偏移量的BIAS寄存器,步骤(1)中DSP所发送的地址以及所述遥控指令中的偏移地址均存放在该BIAS寄存器,每次FPGA按照BIAS寄存器中的地址偏移量从在3片SPI Flash中读取相应的数据。
4.如权利要求3所述的皮卫星DSP程序快速高可靠三取二加载方法,其特征在于,步骤(1)中,FPGA通过检测来自DSP的CS信号的状态以触发加载DSP程序。
CN201510995332.2A 2015-12-25 2015-12-25 一种皮卫星dsp程序快速加载方法 Active CN105446783B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510995332.2A CN105446783B (zh) 2015-12-25 2015-12-25 一种皮卫星dsp程序快速加载方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510995332.2A CN105446783B (zh) 2015-12-25 2015-12-25 一种皮卫星dsp程序快速加载方法

Publications (2)

Publication Number Publication Date
CN105446783A CN105446783A (zh) 2016-03-30
CN105446783B true CN105446783B (zh) 2019-01-29

Family

ID=55557024

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510995332.2A Active CN105446783B (zh) 2015-12-25 2015-12-25 一种皮卫星dsp程序快速加载方法

Country Status (1)

Country Link
CN (1) CN105446783B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649173B (zh) * 2016-10-10 2019-04-09 上海航天控制技术研究所 基于1553b总线的高可靠星载计算机在轨自修正系统及方法
CN107562647A (zh) * 2017-08-31 2018-01-09 王洋 一种对数字信号程序处理器可靠性扩展的控制方法及装置
CN108197063B (zh) * 2017-12-29 2021-01-22 西安智多晶微电子有限公司 Fpga的spi接口主动串行配置方法及装置
CN111176908B (zh) * 2019-12-11 2023-07-14 北京遥测技术研究所 一种基于三模冗余的程序在轨加载刷新方法
CN111625286B (zh) * 2020-06-04 2021-04-27 中国科学院长春光学精密机械与物理研究所 一种星载dsp程序外部引导加载方法及加载系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102945217A (zh) * 2012-10-11 2013-02-27 浙江大学 一种基于三模冗余的星载综合电子系统
CN104239084A (zh) * 2013-06-24 2014-12-24 南京南瑞继保电气有限公司 一种dsp程序自动加载的实现方法
CN104281463A (zh) * 2013-07-12 2015-01-14 中国航天科工集团第三研究院第八三五八研究所 一种可选择版本的dsp处理器程序加载方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI227409B (en) * 2003-06-05 2005-02-01 Carry Computer Eng Co Ltd Storage device capable of enhancing transmission speed

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102945217A (zh) * 2012-10-11 2013-02-27 浙江大学 一种基于三模冗余的星载综合电子系统
CN104239084A (zh) * 2013-06-24 2014-12-24 南京南瑞继保电气有限公司 一种dsp程序自动加载的实现方法
CN104281463A (zh) * 2013-07-12 2015-01-14 中国航天科工集团第三研究院第八三五八研究所 一种可选择版本的dsp处理器程序加载方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
高可靠皮卫星综合电子系统研究;童杰文;《中国优秀硕士学位论文全文数据库 工程科技Ⅱ辑》;20140615;第43-44页

Also Published As

Publication number Publication date
CN105446783A (zh) 2016-03-30

Similar Documents

Publication Publication Date Title
CN105446783B (zh) 一种皮卫星dsp程序快速加载方法
US10831507B2 (en) Configuration load of a reconfigurable data processor
US11768241B2 (en) Test systems for executing self-testing in deployed automotive platforms
CN104484214B (zh) 一种sram型fpga的配置、刷新与程序上注一体化系统
CN104239090A (zh) 一种基于fpga的卫星星务计算机在轨重构系统及方法
US8060767B1 (en) Ultra low power sleep mode
TWI521441B (zh) 運用rfid之多插槽伺服器管理技術
CN104035843B (zh) 用于提高锁步核可用性的系统和方法
US9726723B2 (en) Scan chain processing in a partially functional chip
CN105760250A (zh) 一种具有码流纠检错功能的单粒子加固fpga配置电路
WO2018064885A1 (zh) 一种对可编程逻辑器件进行配置或更新的装置和方法
CN106201590B (zh) 一种fpga配置文件加载方法和系统
CN101828174A (zh) 用于同步串行接口nand的数据读取的系统及方法
CN105930186A (zh) 多cpu的软件加载方法及基于多cpu的软件加载装置
CN105159695B (zh) 一种基于非易失控制的射频模块初始化系统及方法
CN104969300A (zh) 优化用于存储器修复的熔丝rom
CN113703803B (zh) 基于fpga的远程升级系统、方法及介质
EP2359372A1 (en) Error detection method and a system including one or more memory devices
CN107301042A (zh) 一种带自检功能的SoC应用程序引导方法
CN108319465A (zh) 对fpga配置数据进行升级的电路及方法
CN114661655B (zh) 一种星载测控数传一体机fpga程序在轨重构系统及方法
US11526409B2 (en) Parallel processing system runtime state reload
WO2020205882A1 (en) Scan chain self-testing of lockstep cores on reset
CN109725941A (zh) 一种用于显示驱动芯片的可编程初始化方法及系统
CN112214345A (zh) 一种基于多重加载的多fpga软件烧写故障恢复方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant