用于嵌入式系统的程序生成方法及程序局部更新方法技术方案

技术编号:38129815 阅读:18 留言:0更新日期:2023-07-08 09:36
本申请涉及一种用于嵌入式系统的程序生成方法及程序局部更新方法,通过将源代码文件分为可升级部分文件以及固定部分文件,并在可升级部分文件中,提取被固定部分文件调用的函数,并对提取得到的被调用函数名称前增加预设前缀,在对链接脚本文件进行编写时,将可升级部分文件以及固定部分文件分别存储至存储区域第一片区和第二片区,并对名称前具有预设前缀的被调用函数分配固定存储地址,最后根据可升级部分文件、固定部分文件以及链接脚本文件进行编译,得到嵌入式系统可执行的二进制目标程序,该二进制目标程序包括进行分段存储的固定部分程序以及可升级部分程序。基于本方法生成的程序可进行局部更新升级。成的程序可进行局部更新升级。成的程序可进行局部更新升级。

【技术实现步骤摘要】
用于嵌入式系统的程序生成方法及程序局部更新方法


[0001]本申请涉及嵌入式系统
,特别是涉及一种用于嵌入式系统的程序生成方法及程序局部更新方法。

技术介绍

[0002]嵌入式终端设备是一种广泛用于工业现场、安防、消费、电力系统等领域的小型智能设备,主要由硬件和软件组成。从软件角度看可以将其分为两类:带操作系统和不带操作系统。对于那些带操作系统的如:VxWorks、Linux、Wince等其应用升级比较方便,而且大部分系统已经自带了丰富的升级功能。对于那些不带操作系统的嵌入式终端设主要由成本比较低、功耗体积小的CPU和特定功能的专用软件组成,其主要特点是硬件资源(内存、Flash)有限,功能比较简单,其应用软件的升级实现比较困难。随着应用场景的多样化,作为带软件的智能终端,应用功能升级成为越来越多的嵌入式设备必须具备的功能项。
[0003]目前在这类单一程序的嵌入式设备中比较常见的软件升级方法是单独再开发一个独立的升级程序,当需要升级时启动升级程序将应用程序完整的分段下载、烧录到设备,从而达到升级的目的。这种升级的特点是每次都要将一个完整的应用程序进行远程下载、烧录,这对流量、可靠性提出了挑战。针对这一弊端,有人提出了将应用程序分割成多个独立的小应用程序进行分段跳转运行、升级;也有人用增量方式进行远程升级。这些方法或多或少存在一些问题,分成多个独立的小应用程序这种方式增加了系统的复杂度,每个小应用程序都是一个完整的程序,每一程序在运行时之前都需要进行环境(堆栈初始化、全局变量初始化等)增加了系统运行时间、同时也增加了总的存储空间;对于增量式升级虽然可以减少传输通信流量,烧写程序没有减少。
[0004]现实中的升级需求大多数只需要对应用程序局部功能进行修改、增强,针对这类需求完全没有必要将整个程序进行升级,只需要对部分程序进行更新即可,对于非操作系统的单应用程序进行局部功能模块升级是本方法要解决的问题。

技术实现思路

[0005]基于此,有必要针对上述技术问题,提供一种能够对嵌入式系统中的程序进行局部更新的用于嵌入式系统的程序生成方法及程序局部更新方法。
[0006]一种用于嵌入式系统的程序生成方法,所述方法包括:
[0007]获取目标程序对应功能业务的源代码文件;
[0008]根据预设的划分方案将需要升级的功能部分对应的源代码与不需要升级的功能部分对应的源代码进行划分,并分别得到可升级部分文件以及固定部分文件;
[0009]在所述可升级部分文件中,提取其中被所述固定部分内容调用的函数,并对提取得到的所述被调用函数名称前增加预设前缀;
[0010]根据预设的存储方案对链接脚本文件进行编写,所述存储方案包括将所述可升级部分文件以及固定部分文件分别存储至存储区域第一片区和第二片区中,并对名称前具有
预设前缀的被调用函数分配固定存储地址;
[0011]根据所述可升级部分文件、固定部分文件以及链接脚本文件进行编译,得到所述嵌入式系统可执行的二进制目标程序,所述二进制目标程序包括进行分段存储的固定部分程序以及可升级部分程序。
[0012]在其中一实施例中,所述预设的划分方案中包括:
[0013]将硬件驱动功能、Flash烧写功能、硬件中断向量表以及通信协议话划分为不需要升级的固定部分;
[0014]将程序逻辑处理功能以及参数划分为需要升级的可升级部分。
[0015]在其中一实施例中,所述可升级部分文件中不包括需要被所述固定部分文件调用的全局变量。
[0016]在其中一实施例中,在对名称前具有预设前缀的被调用函数分配固定存储地址之后,还在该被调用函数前添加额外的编译代码,使得在进行编译时,将所述被调用函数存储在分配的固定存储地址指向的区域。
[0017]在其中一实施例中,所述存储区域为嵌入式系统的Flash存储模块。
[0018]一种用于嵌入式系统的程序生成装置,所述装置包括:
[0019]源代码文件获取模块,用于获取目标程序对应功能业务的源代码文件;
[0020]固定/可升级部分划分模块,用于根据预设的划分方案将需要升级的功能部分对应的源代码与不需要升级的功能部分对应的源代码进行划分,并分别得到可升级部分文件以及固定部分文件;
[0021]被调用函数提取模块,用于在所述可升级部分文件中,提取其中被所述固定部分内容调用的函数,并对提取得到的所述被调用函数名称前增加预设前缀;
[0022]存储区域分配模块,用于根据预设的存储方案对链接脚本文件进行编写,所述存储方案包括将所述可升级部分文件以及固定部分文件分别存储至存储区域第一片区和第二片区中,并对名称前具有预设前缀的被调用函数分配固定存储地址;
[0023]目标程序编译模块,用于根据所述可升级部分文件、固定部分文件以及链接脚本文件进行编译,得到所述嵌入式系统可执行的二进制目标程序,所述二进制目标程序包括进行分段存储的固定部分程序以及可升级部分程序。
[0024]一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
[0025]获取目标程序对应功能业务的源代码文件;
[0026]根据预设的划分方案将需要升级的功能部分对应的源代码与不需要升级的功能部分对应的源代码进行划分,并分别得到可升级部分文件以及固定部分文件;
[0027]在所述可升级部分文件中,提取其中被所述固定部分内容调用的函数,并对提取得到的所述被调用函数名称前增加预设前缀;
[0028]根据预设的存储方案对链接脚本文件进行编写,所述存储方案包括将所述可升级部分文件以及固定部分文件分别存储至存储区域第一片区和第二片区中,并对名称前具有预设前缀的被调用函数分配固定存储地址;
[0029]根据所述可升级部分文件、固定部分文件以及链接脚本文件进行编译,得到所述嵌入式系统可执行的二进制目标程序,所述二进制目标程序包括进行分段存储的固定部分
程序以及可升级部分程序。
[0030]一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
[0031]获取目标程序对应功能业务的源代码文件;
[0032]根据预设的划分方案将需要升级的功能部分对应的源代码与不需要升级的功能部分对应的源代码进行划分,并分别得到可升级部分文件以及固定部分文件;
[0033]在所述可升级部分文件中,提取其中被所述固定部分内容调用的函数,并对提取得到的所述被调用函数名称前增加预设前缀;
[0034]根据预设的存储方案对链接脚本文件进行编写,所述存储方案包括将所述可升级部分文件以及固定部分文件分别存储至存储区域第一片区和第二片区中,并对名称前具有预设前缀的被调用函数分配固定存储地址;
[0035]根据所述可升级部分文件、固定部分文件以及链接脚本文件进行编译,得到所述嵌入式系统可执行的二进制目标程序,所述二进制目标程序包括进行分本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.用于嵌入式系统的程序生成方法,其特征在于,所述方法包括:获取目标程序对应功能业务的源代码文件;根据预设的划分方案将需要升级的功能部分对应的源代码与不需要升级的功能部分对应的源代码进行划分,并分别得到可升级部分文件以及固定部分文件;在所述可升级部分文件中,提取其中被所述固定部分内容调用的函数,并对提取得到的所述被调用函数名称前增加预设前缀;根据预设的存储方案对链接脚本文件进行编写,所述存储方案包括将所述可升级部分文件以及固定部分文件分别存储至存储区域第一片区和第二片区中,并对名称前具有预设前缀的被调用函数分配固定存储地址;根据所述可升级部分文件、固定部分文件以及链接脚本文件进行编译,得到所述嵌入式系统可执行的二进制目标程序,所述二进制目标程序包括进行分段存储的固定部分程序以及可升级部分程序。2.根据权利要求1所述的程序生成方法,其特征在于,所述预设的划分方案中包括:将硬件驱动功能、Flash烧写功能、硬件中断向量表以及通信协议话划分为不需要升级的固定部分;将程序逻辑处理功能以及参数划分为需要升级的可升级部分。3.根据权利要求2所述的程序生成方法,其特征在于,所述可升级部分文件中不包括需要被所述固定部分文件调用的全局变量。4.根据权利要求3所述的程序生成方法...

【专利技术属性】
技术研发人员:田炜盛四华蒋增文黄武吴善周秩辉万里云李刚锋
申请(专利权)人:中电工业互联网有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1