一种基于代码隔离的嵌入式软件构建方法和调用方法

文档序号:6633338阅读:379来源:国知局
一种基于代码隔离的嵌入式软件构建方法和调用方法
【专利摘要】一种基于代码隔离的嵌入式软件构建方法和调用方法,将非易失存储器划分为第一、二、三个独立存储空间;将引导、加载程序,系统软件映像对应固化到第一、二个独立存储空间;其前或后根据系统软件提供的功能接口及系统数据类型定义文件生成系统软件API接口文件;将其拷贝到应用程序所在工程并在应用程序源代码中包含系统软件API接口文件;将应用程序映像固化到第三个独立存储空间;引导、加载程序加载系统软件和应用程序到SRAM,并跳转到系统软件入口执行;启动后应用程序完成操作系统的功能调用并返回应用程序。该方法在不增加系统开销的情况下满足深嵌入式应用对高执行效率及低代码大小的要求。
【专利说明】一种基于代码隔离的嵌入式软件构建方法和调用方法

【技术领域】
[0001]本发明涉及一种嵌入式软件构建方法,具体涉及一种基于代码隔离的嵌入式软件构建方法和调用方法。
现有技术
[0002]目前现有的嵌入式软件构建方法有两种,一种是系统软件以库模块的形式与用户程序统一编译、链接,形成同一映像进行开发调试;另外一种构建方法是将系统软件先期开发并固化在系统中作为运行平台,应用软件通过软件中断(陷阱)的方式调用系统软件功能,并独立开发、编译、链接,独立固化运行,这两种方式各有利弊,详述如下。
[0003]第一种方式的优点是接口调用简单,应用程序对系统软件的功能接口调用无需增加额外的代码,占用空间小;缺点是当软件出现问题时,由于用户程序和系统软件交织在一起,不利于问题的排查和责任划分;
[0004]第二种方式的优点是系统软件以固件的方式固化到硬件中供应用软件调用,有利于软件知识产权的保护,方便问题排查;缺点是系统软件和应用软件均需要增加额外的代码处理陷阱调用,包括参数的传递、陷阱现场的保护、恢复等工作,增加了系统开销。


【发明内容】

[0005]本发明的目的在于提供一种基于代码隔离的嵌入式软件构建方法和调用方法,该方法在不增加系统开销的情况下实现了嵌入式软件与应用软件的隔离、调用,满足深嵌入式应用对高执行效率及低代码大小的要求。
[0006]为了达到上述目的,本发明基于代码隔离的嵌入式软件构建方法,包括如下步骤:
[0007]I)将非易失存储器划分为用于固化引导、加载程序的第一个独立存储空间,用于固化系统软件的第二个独立存储空间以及用于固化应用程序的第三个独立存储空间;
[0008]2)将引导、加载程序固化到非易失存储器的第一个独立存储空间;将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间;且将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间之前或之后,从系统软件映像中抽取系统软件的符号及地址信息,形成系统数据类型定义文件,根据系统软件提供的功能接口及系统数据类型定义文件生成系统软件API接口文件;
[0009]3)将系统软件API接口文件拷贝到应用程序所在工程,并在应用程序源代码中包含系统软件API接口文件;
[0010]4)将应用程序映像的代码段、数据段固化到非易失存储器的第三个独立存储空间,完成嵌入式软件构建。
[0011]步骤2)中将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间之前,在操作系统中添加跳转到应用程序入口地址的代码。
[0012]所述的非易失存储器为NOR FLASH存储器、EEPROM存储器或EPROM PROM存储器。
[0013]所述的系统软件映像是通过对系统软件进行编译、链接生成的;应用程序映像是通过对应用程序进行编译、链接生成的。
[0014]所述的系统软件为嵌入式实时操作系统、中间件、提供用户使用的底层软件或驱动软件。
[0015]当系统软件为嵌入式实时操作系统时,从系统软件映像中抽取系统软件的符号及地址信息的工具采用read-elf工具。
[0016]所述的系统软件API接口文件为userApp.h。
[0017]所述的应用程序为多任务程序,应用程序映像的文件格式为elf格式、cofT格式或a.0ut格式。
[0018]一种嵌入式软件的调用方法,基于代码隔离的嵌入式软件构建方法构建的嵌入式软件,包括以下步骤:
[0019]I)引导、加载程序分别加载系统软件和应用程序到RAM的不同地址空间,并跳转到系统软件入口执行;
[0020]2)系统软件启动后,应用程序通过系统软件API接口文件完成操作系统的功能调用并返回应用程序。
[0021]与现有技术相比,本发明的有益效果在于:
[0022]本发明将非易失存储器按需求划分为三个独立的存储空间,且第一个独立存储空间用于固化引导、加载程序,第二个独立存储空间用于固化系统软件,第三个独立存储空间用于固化应用程序,且根据系统软件提供的功能接口及系统数据类型定义文件生成系统软件API接口文件,通过该系统软件API接口文件及系统数据类型定义文件来建立应用软件与系统软件的调用关系,实现了系统软件与应用软件的独立开发、独立固化,适用多个应用软件之间、应用软件与同一系统模块间的隔离、调用,使得迭代式增量开发更加方便,系统软件和应用软件的配置管理更加方便,便于问题的排查,因此,本发明在不增加系统开销的情况下实现了嵌入式软件与应用软件的隔离、调用,满足深嵌入式应用对高执行效率及低代码大小的要求。

【专利附图】

【附图说明】
[0023]图1为本发明应用程序调用系统软件功能接口执行并返回图;
[0024]图2为本发明采用NOR FLASH存储器的目标板上的一个实施例;

【具体实施方式】
[0025]下面结合附图对本发明做进一步详细说明。
[0026]参见图2,本发明基于代码隔离的嵌入式软件构建方法包括如下步骤:
[0027]I)将非易失存储器划分为用于固化引导、加载程序的第一个独立存储空间,用于固化系统软件的第二个独立存储空间以及用于固化应用程序的第三个独立存储空间;非易失存储器为NOR FLASH存储器、EEPROM存储器或EPROM存储器或PROM存储器等;
[0028]2)将引导、加载程序固化到非易失存储器的第一个独立存储空间;将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间;且将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间之前或之后,从系统软件映像中抽取系统软件的符号及地址信息,形成系统数据类型定义文件,根据系统软件提供的功能接口及系统数据类型定义文件生成系统软件API接口文件;将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间之前,在操作系统中添加跳转到应用程序入口地址的代码;其中,系统软件映像是通过对系统软件进行编译、链接生成的;
[0029]3)将系统软件API接口文件拷贝到应用程序所在工程,并在应用程序源代码中包含系统软件API接口文件;
[0030]4)将应用程序映像的代码段、数据段固化到非易失存储器的第三个独立存储空间,完成嵌入式软件构建。应用程序映像是通过对应用程序进行编译、链接生成的,应用程序映像的文件格式为elf格式、coff格式或a.0ut格式
[0031]参见图1和2,本发明基于代码隔离的嵌入式软件构建方法构建的嵌入式软件,其调用方法为:
[0032]I)引导、加载程序分别加载系统软件和应用程序到RAM的不同地址空间,并跳转到系统软件入口执行;
[0033]2)系统软件启动后,应用程序通过系统软件API接口文件完成操作系统的功能调用并返回应用程序。
[0034]进一步,本发明给出了基于代码隔离的嵌入式软件构建方法的具体实施例;其中系统软件为嵌入式实时操作系统,应用程序为多任务程序,非易失存储器采用NOR FLASH存储器。
[0035]I)应用程序需要操作系统的支持,系统上电后操作系统首先执行,然后跳转到应用程序执行,因此,在操作系统中添加跳转到应用程序入口地址的代码;
[0036]2)将非易失存储器划分为三个独立存储空间,第一个独立空间用于固化引导、力口载程序,第二个独立存储空间用于固化嵌入式实时操作系统,第三个独立储存空间用于固化应用程序;
[0037]3)固化引导、加载程序到第一个独立存储空间中;
[0038]4)编译、连接嵌入式实时操作系统生成嵌入式实时操作系统映像,将嵌入式实时操作系统映像的代码段、数据段固化到非易失存储器的第二个独立存储空间中;
[0039]5)使用read-elf工具获取嵌入式实时操作系统映像中功能接口符号及地址信息,形成系统数据类型定义文件;
[0040]6)根据嵌入式实时操作系统提供的功能接口及系统数据类型定义文件生成嵌入式实时操作系统API接口文件userApp.h ;
[0041]7)将嵌入式实时操作系统API接口文件拷贝到应用程序所在工程,并在应用程序源代码中包含嵌入式实时操作系统API接口文件,#include “userApp.h” ;
[0042]8)编译、链接应用程序文件,生成elf格式的应用程序映像;
[0043]9)将应用程序映像的代码段、数据段固化到非易失存储器的第三个独立存储空间中;
[0044]该嵌入式软件构建方法构建的嵌入式软件的调用方法如下:
[0045]I)系统加电,引导、加载程序分别加载操作系统和应用程序到SRAM的不同地址空间中;
[0046]2)跳转到嵌入式实时操作系统执行;
[0047]3)嵌入式实时操作系统启动后,跳转到应用程序执行;
[0048]4)应用程序通过嵌入式实时操作系统API接口文件完成操作系统的功能调用并返回应用程序。
[0049]本发明将非易失存储器按需求划分为三个独立的存储空间,且第一个独立存储空间用于固化引导、加载程序,第二个独立存储空间用于固化系统软件,第三个独立存储空间用于固化应用程序,且根据系统软件提供的功能接口及系统数据类型定义文件生成系统软件API接口文件,通过该系统软件API接口文件及系统数据类型定义文件来建立应用软件与系统软件的调用关系,实现了系统软件与应用软件的独立开发、独立固化,适用多个应用软件之间、应用软件与同一系统模块间的隔离、调用,使得迭代式增量开发更加方便,系统软件和应用软件的配置管理更加方便,便于问题的排查,因此,本发明在不增加系统开销的情况下实现了嵌入式软件与应用软件的隔离、调用,满足深嵌入式应用对高执行效率及低代码大小的要求。
【权利要求】
1.一种基于代码隔离的嵌入式软件构建方法,其特征在于,包括如下步骤: 1)将非易失存储器划分为用于固化引导、加载程序的第一个独立存储空间,用于固化系统软件的第二个独立存储空间以及用于固化应用程序的第三个独立存储空间; 2)将引导、加载程序固化到非易失存储器的第一个独立存储空间;将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间;且将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间之前或之后,从系统软件映像中抽取系统软件的符号及地址信息,形成系统数据类型定义文件,根据系统软件提供的功能接口及系统数据类型定义文件生成系统软件API接口文件; 3)将系统软件API接口文件拷贝到应用程序所在工程,并在应用程序源代码中包含系统软件API接口文件; 4)将应用程序映像的代码段、数据段固化到非易失存储器的第三个独立存储空间,完成嵌入式软件构建。
2.根据权利要求1所述的基于代码隔离的嵌入式软件构建方法,其特征在于:步骤2)中将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间之前,在操作系统中添加跳转到应用程序入口地址的代码。
3.根据权利要求1所述的基于代码隔离的嵌入式软件构建方法,其特征在于:所述的非易失存储器为NOR FLASH存储器、EEPROM存储器或EPROM存储器或PROM存储器。
4.根据权利要求1所述的基于代码隔离的嵌入式软件构建方法,其特征在于:所述的系统软件映像是通过对系统软件进行编译、链接生成的;应用程序映像是通过对应用程序进行编译、链接生成的。
5.根据权利要求1所述的基于代码隔离的嵌入式软件构建方法,其特征在于:所述的系统软件为嵌入式实时操作系统、中间件、提供用户使用的底层软件或驱动软件。
6.根据权利要求5所述的基于代码隔离的嵌入式软件构建方法,其特征在于:当系统软件为嵌入式实时操作系统时,从系统软件映像中抽取系统软件的符号及地址信息的工具采用read-elf工具。
7.根据权利要求6所述的基于代码隔离的嵌入式软件构建方法,其特征在于:所述的系统软件API接口文件为userApp.h。
8.根据权利要求6所述的基于代码隔离的嵌入式软件构建方法,其特征在于:所述的应用程序为多任务程序,应用程序映像的文件格式为elf格式、coff格式或a.0ut格式。
9.一种嵌入式软件的调用方法,其特征在于,权利要求1?8中任意一项权利要求所述的基于代码隔离的嵌入式软件构建方法构建的嵌入式软件,包括以下步骤: 1)引导、加载程序分别加载系统软件和应用程序到RAM的不同地址空间,并跳转到系统软件入口执行; 2)系统软件启动后,应用程序通过系统软件API接口文件完成操作系统的功能调用并返回应用程序。
【文档编号】G06F9/44GK104407852SQ201410619253
【公开日】2015年3月11日 申请日期:2014年11月5日 优先权日:2014年11月5日
【发明者】褚哲, 韩源冬, 焦淼, 袁成军, 罗荣海 申请人:中国航天科技集团公司第九研究院第七七一研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1