星载导航设备的DSP程序运行方法及其DSP系统与流程

文档序号:23003253发布日期:2020-11-20 11:51阅读:250来源:国知局
星载导航设备的DSP程序运行方法及其DSP系统与流程

本发明涉及星载导航设备领域,具体的涉及一种星载导航设备的dsp程序运行方法及其dsp系统。



背景技术:

人造卫星是人类探索、利用空间资源的重要媒介,而星载导航设备中大量使用dsp进行信号处理,目前dsp在卫星通信、导航、雷达等多种类型的星载设备上均有所应用。

星载导航设备一般使用dsp作为逻辑控制及运算单元,其控制与算法通常都集成到dsp中完成。dsp芯片内部采用程序和数据分开的哈佛总线结构,采用专门的硬件乘法器,使用流水处理技术,实现快速处理各种数字信号的目的。

在星载导航设备中,考虑到dsp片内ram存储区容量较小,且抗辐照能力较弱,通常会在片外增加抗辐照能力强的片外存储器。一般的dsp芯片抗辐照总剂量为1e5rad,抗单粒子闩锁域值为89mev-cm2/mg。而常用的宇航级别sram芯片smv512k32,其抗辐照总剂量为3e5rad,抗单粒子闩锁域值为110mev-cm2/mg,抗辐照能力远强于一般的dsp芯片。因此,dsp程序通常主要在片外存储空间运行。与此同时,星载导航设备发射入轨后面临太空的复杂电磁环境,因此对软件具有很高的可靠性要求,当dsp外部存储器件被单粒子打翻而瞬时失效时,需要能够检测到并尝试恢复。目前的dsp无法解决星载导航设备dsp在复杂电磁环境下片内ram易单粒子打翻的问题。



技术实现要素:

本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种星载导航设备的dsp程序运行方法及其dsp系统,能够解决星载导航设备dsp在复杂电磁环境下片内ram易单粒子打翻的问题。

根据本发明实施例的一种星载导航设备的dsp程序运行方法,包括:主代码与检测代码空间区别分配、片内片外程序联合加载、上电片外存储自检和片外sram的edac校验;

主代码与检测代码空间区别分配:将dsp程序中的主代码段和重要数据段放置到片外程序存储空间,将片外存储自检代码放置到片内存储空间;

片内片外程序联合加载:将dsp的加载模式设置为默认从片外程序存储空间启动执行,将程序分为三个地址空间连续的区块,分别是外部程序和数据块、内部代码块和其它数据块,外部程序和数据块包含主代码段和重要的数据段,内部代码块包含片外存储自检代码段,其它数据块包含非重要的数据段;

dsp上电复位后,硬件自动将外部程序和数据块中的二次搬移程序搬移到片外程序存储空间起始处;搬移完毕后从片外程序存储空间启动执行二次搬移程序进行二次搬移,二次搬移程序先将剩余的外部程序块全部搬移至片外存储空间指定位置,再将内部代码块搬移至片内代码存储区,最后将其它数据块搬移至片内数据存储区;

上电片外存储自检:所述步骤b1中二次搬移程序在执行二次搬移前先转跳到位于片内存储空间的片外存储自检代码进行片外存储自检,若自检通过则进行二次搬移,否则二次搬移程序中断搬移过程,并进行整机复位;

片外sram的edac校验:外部存储芯片选用自带edac的sram芯片,并且在初始化时将edac校验功能开启。

一种星载导航设备的dsp,包括dsp芯片,所述dsp芯片运行上述的星载导航设备的dsp程序运行方法。

根据本发明实施例的星载导航设备的dsp程序运行方法及其dsp系统,至少具有如下技术效果:本发明实施方式通过片外运行结合片内检测的有效方案,综合运用主代码与检测代码空间区别分配、片内片外程序联合加载、上电片外存储自检、片外sram的edac校验这四个步骤。将主体代码和重要数据分配到外部sram,同时增加edac校验,增强了程序抗单粒子能力,保障核心功能稳定运行。上电片外存储自检可在上电时检出外部sram地址线或数据线问题,确保后续程序运行不会出现问题,并在外部sram因为单粒子影响出现瞬时问题时,通过整机复位来恢复,进一步保障可靠性。

本发明实施例采用多种手段融合的方法,解决了星载导航设备dsp片内ram抗单粒子能力弱的问题,提升了程序运行的稳定性,可以实现星载接收机2年以上在轨长时间稳定运行。本发明适应性好,不仅适用于导航系统的星载设备,还可适用于雷达、通信系统的星载设备,同时还适用部分星载发射机,能够增强星载设备的单粒子防护能力。

根据本发明的一些实施例,所述步骤片内片外程序联合加载中dsp的加载模式通过硬件配置为map0方式。

根据本发明的一些实施例,所述步骤片内片外程序联合加载中将二次搬移程序指定到外部程序和数据块的起始处,并且不超过64kb。

根据本发明的一些实施例,所述步骤片内片外程序联合加载中二次搬移程序将内部代码块搬移至片内代码存储区时通过dma方式间接完成。

根据本发明的一些实施例,所述步骤上电片外存储自检中片外存储自检时自检函数在编译时指定分配到片内代码存储区且只在上电时进行。

根据本发明的一些实施例,所述步骤上电片外存储自检中片外存储自检的测试算法采用1的移位测试分别对32bit宽的数据线和地址线进行测试。

本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1为本发明实施例中主代码与检测代码空间分配示意图;

图2为本发明实施例中片内片外程序联合加载的流程示意图;

图3为发明实施例中上电片外存储自检的逻辑流程图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。

一种星载导航设备的dsp程序运行方法,包括:主代码与检测代码空间区别分配、片内片外程序联合加载、上电片外存储自检和片外sram的edac校验四个步骤。

本发明实施例以型号为smj320c6701的dsp芯片为例来详细描述四个步骤,smj320c6701是ti设计的一款宇航级别抗辐照浮点dsp处理器,是星载导航设备中一款常用的数字处理dsp芯片。其最高工作频率可达140mhz,具有64kb的片内代码存储区和64kb的片内数据存储区。

a1、主代码与检测代码空间区别分配:smj320c6701dsp程序使用ti提供的工具codecomposerstudio(ccs)开发,程序中的代码和数据以段的形式表示,其中“.text”段为代码段,剩余为数据段。ccs通过链接器控制各代码段的生成,提供“.cmd”文件对代码段进行自定义分配。利用ccs提供的“.cmd”文件,将重要的代码段和数据段放置到外部存储器,指定默认的“.text”主代码段及重要的数据段如“.bss”、“.cinit”等到片外存储空间,额外再创建“.inner_text”代码段,并将其指定到片内存储空间,用于放置片外存储自检代码,同时结合ccs编译器提供的“code_section”预编译指令,将片外存储自检代码指定到“.inner_text”代码段,从而实现主代码与检测代码空间区别分配。

参考图1,主代码与检测代码空间分配的具体步骤为:

a11:在ccs的“.cmd”文件中创建“.boot”代码段,将其定位到片外程序存储空间起始处,并将二次搬移程序指定到“.boot”代码段;

a12:在ccs的“.cmd”文件中创建“.text”代码段,将其定位到片外存储空间其它位置,编译器默认将代码指定到“.text”代码段;

a13:在ccs的“.cmd”文件中创建“.inner_text”代码段,将其定位到片内存储代码空间起始处,并将上电自检功能函数代码通过“code_section”预编译指令指定到“.inner_text”代码段;

a14:在ccs中通过配置编译器内存选项将“.bss”、“.cinit”等默认数据段定位到片外存储空间。

主代码与检测代码空间区别分配的作用为:外部sram由于辐照能力强,同时有edac,主代码与检测代码空间区别分配的步骤通过将主体代码和重要数据分配到外部sram,能保证程序主体和重要的数据不被单粒子打翻,增强稳定性。

b1、片内片外程序联合加载:将smj320c6701dsp加载模式通过硬件配置为map0方式,使其默认从外程序存储空间启动执行。为简化设计,将程序分为三个地址空间连续的区块,分别是“外部程序和数据块”、“内部代码块”和“其它数据块”,其中,“外部程序和数据块”包含重要的数据段和代码段,“内部代码块”仅包含片外存储自检代码段,“其它数据块”仅包含数据段。

在map0方式下,启动地址位于片外程序存储空间,二次搬移程序需指定到“外部程序和数据块”的起始处,并且不超过64kb。dsp上电复位后,硬件自动将“外部程序和数据块”从0x01000000地址全部搬移到片外程序存储空间起始处,共搬移64kb。搬移完毕后,从片外程序存储空间启动执行。当二次搬移程序开始执行时,先执行片外存储自检,自检通过后,将剩余的“外部程序块”全部搬移至片外存储空间指定位置,再将“内部代码块”搬移至64kb片内代码存储区,最后将“其它数据块”搬移至64kb片内数据存储区。

需要额外注意的是,由于dsp内核对64kb片内代码存储空间没有写权限,因此当二次搬移程序搬移“内部代码块”时,需要通过dma方式间接完成。

参考图2,程序分块加载的具体步骤为:

b11:dsp硬件自动从0x01000000地址将64kb的“外部代码块”全部搬移到片外程序存储空间;

b12:二次搬移程序将“外部程序块”剩余部分搬移至片外存储空间0x00010000位置;

b13:二次搬移程序将“内部代码块”64kb全部搬移至片内存储空间0x01400000位置;

b14:二次搬移程序将“其它数据块”64kb的程序数据搬移至片内数据空间0x80000000位置。

片内片外程序联合加载的作用为:主代码与检测代码的区别分配方式,决定了要采用片内片外程序联合加载,该方法解决了map0方式下,多段程序的映射问题,让程序可以在内部sram和外部sram同时运行,加载完成后,位于片内空间的片外存储自检代码以及程序主体便可以运行。

c1、上电片外存储自检:二次搬移程序在执行搬移前先转跳到位于片内空间的片外存储自检代码进行片外存储自检,若自检通过则进行二次搬移,否则二次搬移程序中断搬移过程,并进行整机复位。上电片外存储自检对整个片外存储地址空间进行自检操作,由于片外存储自检会破坏片外存储内容,因此自检函数需要在编译时指定分配到片内代码存储区,并只在上电时进行。测试算法采用简单的“1的移位测试”,分别对32bit宽的数据线和地址线进行测试。

参考图3,具体步骤为:

c11:dsp复位;

c12:硬件搬迁前64kb的程序,也就是搬移整个二次搬移程序;

c13:二次搬移程序初始化硬件;

c14:对整个片外存储地址空间进行自检操作,分别对数据线和地址线进行“1的移位测试”,若正常则启动应用程序执行,否则执行整机复位。

上电片外存储自检的作用为:目的是在程序主体运行之前,检测外部sram是否存在地址线或数据线问题,如果是单粒子问题,可通过整机复位解决,因此上电自检检出问题即采取复位策略。

d1、片外sram的edac校验:外部存储芯片选用自带edac的sram芯片,例如smv512k32,并在初始化时将edac校验功能打开。

片外sram的edac校验的作用为:edac的作用是片外sram内容被单粒子打翻时,可通过edac算法修正回来,同样可增强程序运行稳定性,并且片内ram没有edac校验的功能。

本发明实施例还包括一种运行上述方法的dsp芯片,除了举例的smj320c6701外,同样适用于其他型号的dsp芯片。

综上所述,本发明实施例针对星载导航设备dsp处理器在复杂电磁环境下片内ram易单粒子打翻的问题,设计了片外运行结合片内检测的有效方案。该方案综合运用主代码与检测代码空间区别分配、片内片外程序联合加载、上电片外存储自检、片外sram的edac校验四个步骤。

能有效降低星载导航设备dsp处理器内部存储器件由单粒子效应对程序运行带来的负面影响。

上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所述技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1