CN103984566A - 一种在轨细粒度的功能函数增加方法 - Google Patents

一种在轨细粒度的功能函数增加方法 Download PDF

Info

Publication number
CN103984566A
CN103984566A CN201410060563.XA CN201410060563A CN103984566A CN 103984566 A CN103984566 A CN 103984566A CN 201410060563 A CN201410060563 A CN 201410060563A CN 103984566 A CN103984566 A CN 103984566A
Authority
CN
China
Prior art keywords
power function
orbit
function
file
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.)
Granted
Application number
CN201410060563.XA
Other languages
English (en)
Other versions
CN103984566B (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.)
Beijing Shenzhou Aerospace Software Technology Co.,Ltd.
Original Assignee
BEIJING SHENZHOU AEROSPACE SOFTWARE TECHNOLOGY Co Ltd
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 BEIJING SHENZHOU AEROSPACE SOFTWARE TECHNOLOGY Co Ltd filed Critical BEIJING SHENZHOU AEROSPACE SOFTWARE TECHNOLOGY Co Ltd
Priority to CN201410060563.XA priority Critical patent/CN103984566B/zh
Publication of CN103984566A publication Critical patent/CN103984566A/zh
Application granted granted Critical
Publication of CN103984566B publication Critical patent/CN103984566B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种在轨细粒度的功能函数增加方法,其特征在于:所述功能函数增加方法如下:通过链接脚本将需要增加的功能函数定义为专属段,且定位到程序末尾处,这样可以有效地利用内存没有使用的空间,通过专用的工具将专属段拷贝出来,上传到在轨星务系统内存中,并将此函数的地址增加到功能函数查找表中,等待任务的执行。本发明通过简单易操作的方法来简化增量程序文件的生成的步骤,通过特定的方法简化增量程序的在轨更新,且程序更新后不需重新启动计算机来运行增量程序,同时,还支持是否恢复更新之前的功能。

Description

一种在轨细粒度的功能函数增加方法
技术领域
本发明属于嵌入式实时操作系统开发领域,具体地说,涉及一种在轨细粒度的功能函数增加方法。 
背景技术
星务系统长期运行在轨道上,随着时间的推移,系统需要增加某些功能模块,来实现特殊的功能,需对现有的程序进行更新,通常实现方法包括增量程序生成、增量程序的上注、增量程序重组、更新程序的运行。 
现有技术存在的主要问题: 
针对增量程序的更新方法,通常通过字节对比,生成增量文件,增量文件中需要包含更新字节的地址和长度,当不同字节的数量多且比较零散时,这就造成增量文件的容量特别大,因此,将增量文件上传到在轨星务系统,这就增加了上传时间,同时为了接收这些增量文件也需要开辟相当大的内存空间,然后将增量文件烧写到非易失性存储器(FLASH或EEPROM)中。如果对新程序有一点的改动,就需要从新生成增量文件,上传,这样就降低了效率。 
针对增量重组,通常的方法就是将增量文件烧写到非易失性存储器(FLASH或EEPROM)中,然后重启系统,启动程序检测有增量文件,会根据增量文件地址和长度在RAM中替换掉原程序,如果跟新的字节比较零散,且多,这就增加了启动时间。 
发明内容
本发明要解决的技术问题是克服上述缺陷,提供一种在轨细粒度的功能函数增加方法,通过简单易操作的方法来简化增量程序文件的生成的步骤,通过 特定的方法简化增量程序的在轨更新,且程序更新后不需重新启动计算机来运行增量程序,同时,还支持是否恢复更新之前的功能。 
为解决上述问题,本发明所采用的技术方案是: 
一种在轨细粒度的功能函数增加方法,其特征在于:所述功能函数增加方法如下:通过链接脚本将需要增加的功能函数定义为专属段,且定位到程序末尾处,这样可以有效地利用内存没有使用的空间,通过专用的工具将专属段拷贝出来,上传到在轨星务系统内存中,并将此函数的地址增加到功能函数查找表中,等待任务的执行。 
所述功能函数增加方法的步骤为: 
步骤一:增量文件的生成:通过链接脚本将需要增加的功能函数定义为专属段,且定位到程序的末尾处,这样可以有效地利用内存没有使用的空间,通过专用工具将专属段拷贝出来,生成增量文件; 
步骤二:功能函数二进制文件的接收:生成的功能函数二进制通过远程传输,注入到在轨计算机中。 
所述步骤一中包括: 
1)、在需要定点编译的函数声明中添加attribute属性; 
2)、在连接脚本中添加.hooktext1、.hooktext2、.hooktext2为自定义的新段名;在连接脚本中添加*(.special*)为所有通过attribute定义的.special*的函数代码; 
3)、然后将最后编译出来的ELF文件XX.exe文件通过以下objcopy工具将定点编译的特定段.hooktext1段拷贝成功能函数二进制文件。 
由于采用了上述技术方案,与现有技术相比,本发明提供了一种全新的星务软件程序更新的方法,通过简单易操作的方法来简化增量程序文件的生成的 步骤,通过特定的方法简化增量程序的在轨更新,且程序更新后不需重新启动计算机来运行增量程序,同时,还支持是否恢复更新之前的功能。 
附图说明
图1为本发明一种实施例的程序流程图; 
图2为本发明一种实施例中在轨程序接收功能函数二进制文件的具体流程图; 
图3为本发明一种实施例中更新功能函数二进制文件前后的内存分配图; 
图4为本发明一种实施例中更新三个功能函数后的内存分配图和替换第三个功能函数的内存分配图; 
图5为本发明一种实施例中功能函数更新后开启功能函数的运行逻辑流程图。 
具体实施方式
实施例: 
如图1所示,一种在轨细粒度的功能函数增加方法,所述功能函数增加方法如下:通过链接脚本将需要增加的功能函数定义为专属段,且定位到程序末尾处,这样可以有效地利用内存没有使用的空间,通过专用的工具将专属段拷贝出来,上传到在轨星务系统内存中,并将此函数的地址增加到功能函数查找表中,等待任务的执行。 
上述功能函数增加方法的步骤为: 
步骤一:增量文件的生成:通过链接脚本将需要增加的功能函数定义为专属段,且定位到程序的末尾处,这样可以有效地利用内存没有使用的空间,通过专用工具将专属段拷贝出来,生成增量文件,具体实施步骤如下所示: 
1)、在需要定点编译的函数声明中添加attribute属性: 
修改后: 
int HookFun1(void)__attribute__((section(“.special1”))); 
其中__attribute__((section(".special")))就是将funcl函数的代码定义为.special段。如果不使用attribute设置默认的是.text。 
2)、在连接脚本中添加如下: 
.text:{……}>ram 
.data:{……}>ram 
.bss:{……}>ram 
.=ALIGN(0x8); 
end=.; 
_end=.; 
__end=.; 
.hooktext1:{*(.special1)} 
其中.hooktext1、.hooktext2、.hooktext2为自定义的新段名,冒号后面括号内规定分配的是具体段;*(.special*)为所有通过attribute定义的.special*的函数代码。 
3)、然后将最后编译出来的ELF文件XX.exe文件通过以下objcopy工具将定点编译的特定段.hooktext1段拷贝成功能函数二进制文件: 
sparc-elf-objcopy–O binary-j.hooktext1xx.exe HookFun1.bin 
功能函数二进制文件的接收:生成的功能函数二进制通过远程传输,注入到在轨计算机中,在轨程序接收功能函数二进制文件的具体流程图,如图2所示。流程表述如下:当上位机收到接收补丁命令,则进入接收补丁命令服务程序,开始进行接收,首先接收第一个32位数据,如果为补丁地址是有效的内存 地址,则进入下一步,否则退出服务函数;如果地址有效,则开始接受32位数据,判断是否为结束符0x0a0a0a0a,如果是则接收一个32位校验码,则进入下一步,否则重复本步骤;校验数据是否正确,如果正确,进入下一步,否则退出;更新函数查找表pHookFun[3],进入下一步;烧写到FLASH相应的区域,退出。 
更新功能函数二进制文件前后的内存分配图,如图3所示。更新三个功能函数后的内存分配图和替换第三个功能函数的内存分配图,如图4所示。 
功能函数查找表声明方法 
typedef void (*VOIDFUNCPTR)(); 
VOIDFUNCPTR pHookFun[3]={NULL,NULL,NULL}; 
功能函数更新后,开启功能函数的运行逻辑流程图如图5所示,运行描述:判断pHookFun[0]是否为空,如果非空则运行,进入下一步,否则跳过此步,进入下一步;判断pHookFun[1]是否为空,如果非空则运行,进入下一步,否则跳过此步,进入下一步;判断pHookFun[2]是否为空,如果非空则运行,进入下一步,否则跳过此步,进入下一步。 
本发明提供了一种全新的星务软件程序更新的方法,通过简单易操作的方法来简化增量程序文件的生成的步骤,通过特定的方法简化增量程序的在轨更新,且程序更新后不需重新启动计算机来运行增量程序,同时,还支持是否恢复更新之前的功能。 
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。 

Claims (3)

1.一种在轨细粒度的功能函数增加方法,其特征在于:
所述功能函数增加方法如下:
通过链接脚本将需要增加的功能函数定义为专属段,且定位到程序末尾处,这样可以有效地利用内存没有使用的空间,通过专用的工具将专属段拷贝出来,上传到在轨星务系统内存中,并将此函数的地址增加到功能函数查找表中,等待任务的执行。
2.根据权利要求1中所述的在轨细粒度的功能函数增加方法,其特征在于:所述功能函数增加方法的步骤为:
步骤一:增量文件的生成:通过链接脚本将需要增加的功能函数定义为专属段,且定位到程序的末尾处,这样可以有效地利用内存没有使用的空间,通过专用工具将专属段拷贝出来,生成增量文件;
步骤二:功能函数二进制文件的接收:生成的功能函数二进制通过远程传输,注入到在轨计算机中。
3.根据权利要求1中所述的在轨细粒度的功能函数增加方法,其特征在于:所述步骤一中包括:
1)、在需要定点编译的函数声明中添加attribute属性;
2)、在连接脚本中添加.hooktext1、.hooktext2、.hooktext2为自定义的新段名;在连接脚本中添加*(.special*)为所有通过attribute定义的.special*的函数代码;
3)、然后将最后编译出来的ELF文件XX.exe文件通过以下objcopy工具将定点编译的特定段.hooktext1段拷贝成功能函数二进制文件。
CN201410060563.XA 2014-02-21 2014-02-21 一种在轨细粒度的功能函数增加方法 Active CN103984566B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410060563.XA CN103984566B (zh) 2014-02-21 2014-02-21 一种在轨细粒度的功能函数增加方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410060563.XA CN103984566B (zh) 2014-02-21 2014-02-21 一种在轨细粒度的功能函数增加方法

Publications (2)

Publication Number Publication Date
CN103984566A true CN103984566A (zh) 2014-08-13
CN103984566B CN103984566B (zh) 2017-01-18

Family

ID=51276559

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410060563.XA Active CN103984566B (zh) 2014-02-21 2014-02-21 一种在轨细粒度的功能函数增加方法

Country Status (1)

Country Link
CN (1) CN103984566B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112214215A (zh) * 2020-12-07 2021-01-12 中国科学院软件研究所 一种面向软件定义卫星的软件快速开发系统与方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101980161A (zh) * 2010-11-01 2011-02-23 航天东方红卫星有限公司 一种星载计算机软件的在轨更新方法
CN102207877A (zh) * 2011-04-15 2011-10-05 中国科学院长春光学精密机械与物理研究所 空间相机在轨程序重注方法及其系统
CN102799502A (zh) * 2012-06-28 2012-11-28 航天恒星科技有限公司 一种星载嵌入式软件在轨维护方法
CN103077066A (zh) * 2013-02-02 2013-05-01 深圳市中兴移动通信有限公司 一种编译时嵌入产品关键信息的方法和系统
CN103226484A (zh) * 2013-04-15 2013-07-31 浙江大学 一种星载综合电子系统程序的在轨更新方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101980161A (zh) * 2010-11-01 2011-02-23 航天东方红卫星有限公司 一种星载计算机软件的在轨更新方法
CN102207877A (zh) * 2011-04-15 2011-10-05 中国科学院长春光学精密机械与物理研究所 空间相机在轨程序重注方法及其系统
CN102799502A (zh) * 2012-06-28 2012-11-28 航天恒星科技有限公司 一种星载嵌入式软件在轨维护方法
CN103077066A (zh) * 2013-02-02 2013-05-01 深圳市中兴移动通信有限公司 一种编译时嵌入产品关键信息的方法和系统
CN103226484A (zh) * 2013-04-15 2013-07-31 浙江大学 一种星载综合电子系统程序的在轨更新方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112214215A (zh) * 2020-12-07 2021-01-12 中国科学院软件研究所 一种面向软件定义卫星的软件快速开发系统与方法
CN112214215B (zh) * 2020-12-07 2021-11-02 中国科学院软件研究所 一种面向软件定义卫星的软件快速开发系统与方法

Also Published As

Publication number Publication date
CN103984566B (zh) 2017-01-18

Similar Documents

Publication Publication Date Title
CN103777983B (zh) 一种星载软件在轨维护及升级方法
CN104007996A (zh) 一种分布式控制系统的可靠固件升级实现方法
CN111258587B (zh) 一种安卓应用插件化的实现方法、装置、设备及存储介质
CN105930236A (zh) 一种基于BMS Bootloader升级的应用程序版本回退方法
CN101826027A (zh) 一种嵌入式系统及其升级方法
CN105760200A (zh) 终端设备及其系统升级方法
CN105573807A (zh) 一种基于can总线的ecu在线程序升级系统及方法
CN103810416A (zh) 一种软件安装或卸载方法及装置
CN105786542A (zh) 智能设备及其系统升级方法
CN107402776A (zh) 一种基于蓝牙4的手机无线升级stm32单片机控制器固件方法
CN104077161A (zh) 一种客户端应用的升级方法及装置
CN110597542A (zh) 软件自动ota升级方法及装置、电子设备
CN102646046A (zh) 一种升级方法和终端
CN105786549A (zh) 智能设备及其升级方法
WO2007020083A2 (en) Feedback linker for increased delta performance
Nikolov Research firmware update over the air from the cloud
CN110633091A (zh) 一种电子模块及其软件无线升级方法
CN112306540A (zh) 一种多工程独立编译方法、系统、终端及介质
CN102426528A (zh) 一种导航定位接收机内核程序在线更新方法
CN106569863B (zh) 基于资源和代码模块化的安卓app资源更新和修复的方法
CN104391714A (zh) 一种车辆的软件更新方法和装置
CN107015914A (zh) 数据标定方法及系统
CN106020882A (zh) 一种应用升级方法、智能终端及升级系统
CN105554577A (zh) 一种智能电视ota升级的方法、装置及智能电视
CN104699500A (zh) 智能设备中实现引导程序自动升级的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100094 No. 28, Yongfeng Road, Beijing, Haidian District

Patentee after: Beijing Shenzhou Aerospace Software Technology Co.,Ltd.

Address before: 100094 No. 28, Yongfeng Road, Beijing, Haidian District

Patentee before: BEIJING SHENZHOU AEROSPACE SOFTWARE TECHNOLOGY Co.,Ltd.