一种大规模复杂结构软件的在轨烧写与重载方法与流程

文档序号:11199041阅读:701来源:国知局
一种大规模复杂结构软件的在轨烧写与重载方法与流程
本发明涉及星载计算机软件在轨编程领域,特别涉及一种属于大规模复杂结构软件的在轨烧写与重载方法。
背景技术
:星载计算机软件在轨编程功能作为星载计算机软件的一项必备功能对于软件在轨功能扩展和除错具有重要意义。软件在轨编程一般分为sram在轨编程和eeprom在轨编程,前者一般采用对部分模块进行修复的方式,可快速实现更改模块软件的在轨编程及在轨验证,但是若出现掉电则需要重新实施在轨编程;后者具有掉电保持的特点,但是一般要在轨注入完整功能软件,实施复杂,且对更改后的软件在轨验证往往不够充分。技术实现要素:本发明的目的是提供一种大规模复杂结构软件的在轨烧写与重载方法,实现在sram在轨编程基础上实现对eeprom的在轨烧写的目的。为了实现以上目的,本发明通过以下技术方案实现:一种大规模复杂结构软件的在轨烧写与重载方法,包含以下过程:步骤s1、通过ram在轨编程方式实现rom烧写功能软件和解压缩及二次搬场软件代码的在轨注入和运行。通过连续注数方式将所述rom烧写功能软件、解压缩及二次搬场软件代码注入到软件ram在轨编程区,校验正确后,通过背景任务的钩子函数调用rom烧写功能软件。步骤s2、在轨动态生成烧写镜像文件;所述rom烧写功能软件查询是否收到镜像文件生成指令注数;若已收到,首先初始化镜像文件生成区及软件烧写过程参数,生成解压缩及二次搬场代码烧写文件、主功能软件压缩烧写文件和在轨编程软件压缩烧写文件,对烧写镜像文件进行crc校验和长度进行验证。步骤s3、在轨动态实现镜像文件的冗余备份烧写;所述rom烧写功能软件将所述烧写镜像文件信息通过遥测下传地面,地面确认所述烧写镜像文件各部分代码长度、校验正确无误。通过注数启动第n份程序存储器烧写第n份烧写镜像文件;烧写完成后生成第n份程序存储器的校验并通过遥测下传地面,地面确认烧写结果正确后可以启动下一份程序存储器烧写直至得到通过地面注数设置的镜像文件的冗余备份的份数。步骤s4、由解压缩代码实现冗余备份软件的解压搬场;计算机重新上电后,首先由prom区中的引导软件搬场运行解压缩软件,解压缩软件依次完成主功能软件和在轨编程软件部分的解压搬场,并对各功能软件的解压搬场结果进行校验,搬场校验正确后引导运行各功能软件。优选地,所述镜像文件通过采用改进的霍夫曼压缩算法生成;所述霍夫曼压缩算法根据数据的出现频率对该数据进行重新编码,编码规则为出现频率高的数据编码长度短,出现频率低的数据编码长度长,根据该编码对源码数据进行重新编码生成压缩文件。优选地,烧写镜像文件包含:解压缩代码、主功能软件压缩代码与在轨编程软件压缩代码;其中解压缩代码为原始代码,未经压缩,直接运行,用于对主功能软件压缩代码和在轨编程软件压缩代码进行解压缩搬场并引导主功能软件运行。优选地,所述解压缩代码、主功能软件压缩代码与在轨编程软件压缩代码分别包含:烧写标识字和代码,烧写标识字包含该部分源代码的crc校验和代码长度信息,用于烧写过程及软件搬场时的正确性验证。优选地,所述软件烧写过程参数包含但不限于解压缩及二次半场代码crc校验、主功能软件crc校验、在轨编程软件crc校验、烧写文件crc校验、烧写文件长度、烧写状态与软件烧写份数。优选地,所述步骤s3进一步包含以下过程:采用按份烧写eeprom的方式,烧写镜像文件的冗余备份的份数由地面注数选择,同时采用页写保护模式,每页烧写两遍,第一遍烧写镜像文件,第二遍烧写相应的edac校验码;每份eeprom烧写完成后均进行crc校验,校验结果与烧写前的镜像文件结果一致则表明烧写正确。本发明与现有技术相比具有以下优点:软件烧写代码通过ram在轨编程方式注入并由后台程序运行。避免了软件烧写功能误启动,防止错误烧写;同时由于后台运行程序,从而不影响星载计算机软件主功能软件的正常运行,保障了能源、姿态等的安全。与现有的ram在轨编程方式相比,可将在轨编程后的代码烧写到rom中,实现了在轨编程代码的掉电保存,避免了计算机重新上电或复位后在轨编程代码的丢失;与现有的rom在轨编程方式相比,由于待烧写代码可通过预先ram编程方式实现在轨验证,避免了对未经在轨验证的代码进行在轨烧写的风险。烧写镜像文件经过无损数据压缩方式生成,减小了代码体积,节约了rom空间,提高了rom利用率,可用于卫星长期在轨运行时的软件烧写。烧写过程安全、可靠,压缩烧写及解压搬场各阶段均通过校验、冗余搬场、冗余存储方式保证正确性;新程序出现功能缺陷时,可快速实现原程序的恢复烧写。附图说明图1为本发明一种大规模复杂结构软件的在轨烧写与重载方法中的霍夫曼压缩文件结构示意图;图2为本发明一种大规模复杂结构软件的在轨烧写与重载方法中的eeprom中的软件存储结构变化示意图;图3为本发明一种大规模复杂结构软件的在轨烧写与重载方法中的eeprom烧写流程示意图;图4为本发明一种大规模复杂结构软件的在轨烧写与重载方法中的软件搬场过程变化示意图;图5是本发明一种大规模复杂结构软件的在轨烧写与重载方法中的软件烧写过程状态示意图。具体实施方式以下结合附图,通过详细说明一个较佳的具体实施例,对本发明做进一步阐述。本发明一种大规模复杂结构软件的在轨烧写与重载方法,包含以下过程:步骤s1、通过ram在轨编程方式实现rom烧写功能软件和解压缩及二次搬场软件代码的在轨注入和运行;通过连续注数方式将烧写软件、解压缩及二次搬场软件代码注入到软件ram在轨编程区,校验正确后,通过背景任务的钩子函数运行烧写功能软件。背景任务预留的钩子函数可作为eeprom烧写功能软件的入口,背景任务运行该软件时不影响主任务的正常功能,可保障整星的姿态能源安全。步骤s2:在轨动态生成烧写镜像文件烧写功能软件查询是否收到镜像文件生成指令注数。若已收到,首先初始化镜像文件生成区及相关参数,依次生成解压缩及二次搬场代码烧写文件、主功能软件压缩烧写文件、在轨编程软件压缩烧写文件,并对烧写镜像文件各组成部分进行crc校验和长度验证,确保烧写镜像文件正确无误。镜像文件生成过程采用改进的霍夫曼压缩算法。星载计算机软件在轨运行状态一般由两部分组成:主功能软件和sram在轨编程区软件。主功能软件为射前烧写在eeprom中的三模冗余软件,计算机初始上电时由prom引导软件搬场运行,掉电可恢复,是完成星载计算机任务的主要软件配置项;在轨编程区软件是后续通过在轨编程方式注入的“补丁”软件,掉电不可恢复。星载计算机软件的存储方式一般为多模冗余存储,随着在轨编程规模的不断增大,可能会出现eeprom存储容量不够的情况,因此需要考虑通过数据压缩方式存储以节约eeprom空间,烧写内容还应包括解压缩代码。软件压缩采用改进的霍夫曼压缩算法,其根据每个数据的出现频率对该数据进行重新编码,编码规则为出现频率高的数据编码长度短,出现频率低的数据编码长度长,根据该编码对源码数据进行重新编码生成压缩文件,霍夫曼压缩文件结构如图1所示,霍夫曼压缩数据格式包含:源数据长度、数据编码表、编码长度表与压缩位码。eeprom烧写后镜像文件存储结构变化如图2所示,在轨烧写前,eeprom代码存的储镜像文件为三份,每份仅由主功能软件组成;在轨烧写后,eeprom代码存储的镜像文件由三部分组成:解压缩代码+主功能软件压缩代码+在轨编程软件压缩代码。其中解压缩代码为原始代码,未经压缩,可直接运行,用于对主功能软件压缩代码和在轨编程软件压缩代码进行解压缩搬场并引导主功能软件运行。镜像文件中的每个组成部分均由烧写标识字+代码组成,烧写标识字包含该部分源代码的crc校验和代码长度信息,用于烧写过程及软件搬场时的正确性验证。步骤s3:在轨动态实现镜像文件的冗余备份烧写烧写镜像文件生成后,即可进行eeprom烧写。为避免烧写错误,采用按份烧写eeprom的方式,烧写份数由地面注数选择,同时采用页写保护模式,每页烧写两遍,第一遍烧写镜像文件,第二遍烧写相应的edac校验码。每份eeprom烧写完成后均进行crc校验,校验结果与烧写前的镜像文件结果一致则表明烧写正确。单份eeprom存储区烧写如图3所示,置第一份eeprom起始地址、镜像文件起始地址、置烧写页数为第1页;判断本份eeprom是否烧写完成。若未完成,且本份eeprom的第n页是未烧写,则打开代码存储区eeprom锁,将数据填充到对应本页eeprom中,对此页的镜像文件进行烧写。然后打开edac校验码区eeprom锁,将edac校验码填充到本页eeprom,对本页的edac校验码进行烧写;之后将本份eeprom的烧写页数累加进行判断本份eeprom是否烧写完成,完成则结束;未完成则继续按照上述过程对需要烧写的eeprom中的镜像文件与edac校验码进行烧写直至本份eeprom烧写完成。烧写功能软件将烧写镜像文件信息通过遥测下传到地面,地面接收并确认文件各部分代码长度、校验正确无误;则注数启动第n份程序存储器烧写;烧写完成后生成第n份程序存储器的校验并通过遥测下传地面,地面确认烧写结果正确后可以启动下一份程序存储器烧写,共三份存储。步骤s4:由解压缩代码实现冗余备份软件的解压搬场计算机重新上电后,首先由prom区中的引导软件搬场运行解压缩软件,解压缩软件依次完成各功能软件(一般包括主功能软件和在轨编程软件两部分)的解压搬场,并对各功能软件的解压搬场结果进行校验,搬场校验正确后引导运行各功能软件。如图4所示,由prom引导软件和解压缩软件实现二次解压搬场。eeprom中的软件存储结构发生变化引起软件搬场运行方式变化。prom引导软件仅负责搬场运行解压缩软件,由解压缩软件依次实现对主功能软件与在轨编程软件的解压缩搬场与引导运行。软件解压缩过程为压缩过程的逆向过程,根据压缩文件信息生成解压缩编码表,并实现对压缩文件的解压还原。软件解压搬场过程中根据烧写标识字对解压后的软件代码进行校验判断,正确后可引导运行,否则产生冷复位。在本实施例中,a.通过连续地址注数方式在轨注入eeprom烧写功能软件和解压缩软件,启动sram在轨编程,通过主功能软件的背景任务中预留的钩子函数运行eeprom烧写功能软件;本例中eeprom配置1mb,软件按三模冗余存储方式,每份占用340kb,主功能软件约338kb,在轨编程区软件约55kb。表1为镜像文件烧写前校验信息1变量名1值1源码101_3c:解压缩代码校验35h0×35201_3c:压缩包1校验cah0×ca301_3c:压缩包2校验8ah0×8a401_3c:烧写文件校验cah0×ca501_3c:烧写后的文件校验00h0×00601_3c:2.06’压缩代码长度2642770×040855701_3c:在轨编程区压缩代码长度341220×00854a801_3c:烧写文件总长度3118240×04c210b.注数生成烧写镜像文件,镜像文件生成后,通过遥测观察镜像文件校验信息,确认镜像文件中各组成部分的代码长度和校验与地面仿真结果一致;镜像文件生成后的状态信息如表1所示,其中包含镜像文件各组成部分的软件校验信息和长度信息。表2为镜像文件烧写后校验信息1变量名1值1源码101_3c:解压缩代码校验35h0×35201_3c:压缩包1校验cah0×ca301_3c:压缩包2校验8ah0×8a401_3c:烧写文件校验cah0×ca501_3c:烧写后的文件校验cah0×ca601_3c:2.06’压缩代码长度2642770×040855701_3c:在轨编程区压缩代码长度341220×00854a801_3c:烧写文件总长度3118240×04c210c.注数eeprom烧写份数并启动eeprom在轨烧写,待烧写完成后,通过遥测观察镜像文件烧写后的校验信息与烧写前是否一致,确认该份eeprom烧写有效,软件烧写完成后的状态信息如表2所示,图中可见烧写后的eeprom校验信息与烧写前的镜像文件校验信息一致。d.重复步骤a~c,继续完成另外两份eeprom的烧写。e.三份eeprom存储区均烧写完成后,计算机即可重新上电,上电过程首先由prom引导软件搬场运行解压缩软件,解压缩软件依次完成主功能软件和在轨编程软件的解压搬场,搬场校验正确后引导运行主功能软件(在轨编程软件由主功能软件中的相关功能模块调用运行)。f.镜像文件生成及烧写过程状态字如图5所示:数值0x55表示镜像文件正在生成;数值0xaa表示镜像文件已生成;数值n(n为1、2、3)表示正在烧写第n份eeprom存储区;数值24n表示第n份eeprom存储区已烧写完成。尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1