《一种基于代码隔离的嵌入式软件构建方法和调用方法.pdf》由会员分享,可在线阅读,更多相关《一种基于代码隔离的嵌入式软件构建方法和调用方法.pdf(8页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 (43)申请公布日 (21)申请号 201410619253.7(22)申请日 2014.11.05G06F 9/44(2006.01)G06F 9/445(2006.01)G06F 9/48(2006.01)(71)申请人中国航天科技集团公司第九研究院第七七一研究所地址 710000 陕西省西安市太白南路198号(72)发明人褚哲 韩源冬 焦淼 袁成军罗荣海(74)专利代理机构西安通大专利代理有限责任公司 61200代理人徐文权(54) 发明名称一种基于代码隔离的嵌入式软件构建方法和调用方法(57) 摘要一种基于代码隔离的嵌入式软件构建方法和调用方法,将非易失存储器划分为。
2、第一、二、三个独立存储空间;将引导、加载程序,系统软件映像对应固化到第一、二个独立存储空间;其前或后根据系统软件提供的功能接口及系统数据类型定义文件生成系统软件API接口文件;将其拷贝到应用程序所在工程并在应用程序源代码中包含系统软件API接口文件;将应用程序映像固化到第三个独立存储空间;引导、加载程序加载系统软件和应用程序到SRAM,并跳转到系统软件入口执行;启动后应用程序完成操作系统的功能调用并返回应用程序。该方法在不增加系统开销的情况下满足深嵌入式应用对高执行效率及低代码大小的要求。(51)Int.Cl.(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书1页 说明书4页 。
3、附图2页(10)申请公布号 CN 104407852 A(43)申请公布日 2015.03.11CN 104407852 A1/1页21.一种基于代码隔离的嵌入式软件构建方法,其特征在于,包括如下步骤:1)将非易失存储器划分为用于固化引导、加载程序的第一个独立存储空间,用于固化系统软件的第二个独立存储空间以及用于固化应用程序的第三个独立存储空间;2)将引导、加载程序固化到非易失存储器的第一个独立存储空间;将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间;且将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间之前或之后,从系统软件映像中抽取系统软件的符号及地址。
4、信息,形成系统数据类型定义文件,根据系统软件提供的功能接口及系统数据类型定义文件生成系统软件API接口文件;3)将系统软件API接口文件拷贝到应用程序所在工程,并在应用程序源代码中包含系统软件API接口文件;4)将应用程序映像的代码段、数据段固化到非易失存储器的第三个独立存储空间,完成嵌入式软件构建。2.根据权利要求1所述的基于代码隔离的嵌入式软件构建方法,其特征在于:步骤2)中将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间之前,在操作系统中添加跳转到应用程序入口地址的代码。3.根据权利要求1所述的基于代码隔离的嵌入式软件构建方法,其特征在于:所述的非易失存储器为NOR 。
5、FLASH存储器、EEPROM存储器或EPROM存储器或PROM存储器。4.根据权利要求1所述的基于代码隔离的嵌入式软件构建方法,其特征在于:所述的系统软件映像是通过对系统软件进行编译、链接生成的;应用程序映像是通过对应用程序进行编译、链接生成的。5.根据权利要求1所述的基于代码隔离的嵌入式软件构建方法,其特征在于:所述的系统软件为嵌入式实时操作系统、中间件、提供用户使用的底层软件或驱动软件。6.根据权利要求5所述的基于代码隔离的嵌入式软件构建方法,其特征在于:当系统软件为嵌入式实时操作系统时,从系统软件映像中抽取系统软件的符号及地址信息的工具采用read-elf工具。7.根据权利要求6所述的。
6、基于代码隔离的嵌入式软件构建方法,其特征在于:所述的系统软件API接口文件为userApp.h。8.根据权利要求6所述的基于代码隔离的嵌入式软件构建方法,其特征在于:所述的应用程序为多任务程序,应用程序映像的文件格式为elf格式、coff格式或a.out格式。9.一种嵌入式软件的调用方法,其特征在于,权利要求18中任意一项权利要求所述的基于代码隔离的嵌入式软件构建方法构建的嵌入式软件,包括以下步骤:1)引导、加载程序分别加载系统软件和应用程序到RAM的不同地址空间,并跳转到系统软件入口执行;2)系统软件启动后,应用程序通过系统软件API接口文件完成操作系统的功能调用并返回应用程序。权 利 要 。
7、求 书CN 104407852 A1/4页3一种基于代码隔离的嵌入式软件构建方法和调用方法技术领域0001 本发明涉及一种嵌入式软件构建方法,具体涉及一种基于代码隔离的嵌入式软件构建方法和调用方法。现有技术0002 目前现有的嵌入式软件构建方法有两种,一种是系统软件以库模块的形式与用户程序统一编译、链接,形成同一映像进行开发调试;另外一种构建方法是将系统软件先期开发并固化在系统中作为运行平台,应用软件通过软件中断(陷阱)的方式调用系统软件功能,并独立开发、编译、链接,独立固化运行,这两种方式各有利弊,详述如下。0003 第一种方式的优点是接口调用简单,应用程序对系统软件的功能接口调用无需增加额。
8、外的代码,占用空间小;缺点是当软件出现问题时,由于用户程序和系统软件交织在一起,不利于问题的排查和责任划分;0004 第二种方式的优点是系统软件以固件的方式固化到硬件中供应用软件调用,有利于软件知识产权的保护,方便问题排查;缺点是系统软件和应用软件均需要增加额外的代码处理陷阱调用,包括参数的传递、陷阱现场的保护、恢复等工作,增加了系统开销。发明内容0005 本发明的目的在于提供一种基于代码隔离的嵌入式软件构建方法和调用方法,该方法在不增加系统开销的情况下实现了嵌入式软件与应用软件的隔离、调用,满足深嵌入式应用对高执行效率及低代码大小的要求。0006 为了达到上述目的,本发明基于代码隔离的嵌入式。
9、软件构建方法,包括如下步骤:0007 1)将非易失存储器划分为用于固化引导、加载程序的第一个独立存储空间,用于固化系统软件的第二个独立存储空间以及用于固化应用程序的第三个独立存储空间;0008 2)将引导、加载程序固化到非易失存储器的第一个独立存储空间;将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间;且将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间之前或之后,从系统软件映像中抽取系统软件的符号及地址信息,形成系统数据类型定义文件,根据系统软件提供的功能接口及系统数据类型定义文件生成系统软件API接口文件;0009 3)将系统软件API接口文件拷贝到应。
10、用程序所在工程,并在应用程序源代码中包含系统软件API接口文件;0010 4)将应用程序映像的代码段、数据段固化到非易失存储器的第三个独立存储空间,完成嵌入式软件构建。0011 步骤2)中将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间之前,在操作系统中添加跳转到应用程序入口地址的代码。0012 所述的非易失存储器为NOR FLASH存储器、EEPROM存储器或EPROM PROM存储器。说 明 书CN 104407852 A2/4页40013 所述的系统软件映像是通过对系统软件进行编译、链接生成的;应用程序映像是通过对应用程序进行编译、链接生成的。0014 所述的系统软件。
11、为嵌入式实时操作系统、中间件、提供用户使用的底层软件或驱动软件。0015 当系统软件为嵌入式实时操作系统时,从系统软件映像中抽取系统软件的符号及地址信息的工具采用read-elf工具。0016 所述的系统软件API接口文件为userApp.h。0017 所述的应用程序为多任务程序,应用程序映像的文件格式为elf格式、coff格式或a.out格式。0018 一种嵌入式软件的调用方法,基于代码隔离的嵌入式软件构建方法构建的嵌入式软件,包括以下步骤:0019 1)引导、加载程序分别加载系统软件和应用程序到RAM的不同地址空间,并跳转到系统软件入口执行;0020 2)系统软件启动后,应用程序通过系统软。
12、件API接口文件完成操作系统的功能调用并返回应用程序。0021 与现有技术相比,本发明的有益效果在于:0022 本发明将非易失存储器按需求划分为三个独立的存储空间,且第一个独立存储空间用于固化引导、加载程序,第二个独立存储空间用于固化系统软件,第三个独立存储空间用于固化应用程序,且根据系统软件提供的功能接口及系统数据类型定义文件生成系统软件API接口文件,通过该系统软件API接口文件及系统数据类型定义文件来建立应用软件与系统软件的调用关系,实现了系统软件与应用软件的独立开发、独立固化,适用多个应用软件之间、应用软件与同一系统模块间的隔离、调用,使得迭代式增量开发更加方便,系统软件和应用软件的配。
13、置管理更加方便,便于问题的排查,因此,本发明在不增加系统开销的情况下实现了嵌入式软件与应用软件的隔离、调用,满足深嵌入式应用对高执行效率及低代码大小的要求。附图说明0023 图1为本发明应用程序调用系统软件功能接口执行并返回图;0024 图2为本发明采用NOR FLASH存储器的目标板上的一个实施例;具体实施方式0025 下面结合附图对本发明做进一步详细说明。0026 参见图2,本发明基于代码隔离的嵌入式软件构建方法包括如下步骤:0027 1)将非易失存储器划分为用于固化引导、加载程序的第一个独立存储空间,用于固化系统软件的第二个独立存储空间以及用于固化应用程序的第三个独立存储空间;非易失存储。
14、器为NOR FLASH存储器、EEPROM存储器或EPROM存储器或PROM存储器等;0028 2)将引导、加载程序固化到非易失存储器的第一个独立存储空间;将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间;且将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间之前或之后,从系统软件映像中说 明 书CN 104407852 A3/4页5抽取系统软件的符号及地址信息,形成系统数据类型定义文件,根据系统软件提供的功能接口及系统数据类型定义文件生成系统软件API接口文件;将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间之前,在操作系统中添加跳转到。
15、应用程序入口地址的代码;其中,系统软件映像是通过对系统软件进行编译、链接生成的;0029 3)将系统软件API接口文件拷贝到应用程序所在工程,并在应用程序源代码中包含系统软件API接口文件;0030 4)将应用程序映像的代码段、数据段固化到非易失存储器的第三个独立存储空间,完成嵌入式软件构建。应用程序映像是通过对应用程序进行编译、链接生成的,应用程序映像的文件格式为elf格式、coff格式或a.out格式0031 参见图1和2,本发明基于代码隔离的嵌入式软件构建方法构建的嵌入式软件,其调用方法为:0032 1)引导、加载程序分别加载系统软件和应用程序到RAM的不同地址空间,并跳转到系统软件入口。
16、执行;0033 2)系统软件启动后,应用程序通过系统软件API接口文件完成操作系统的功能调用并返回应用程序。0034 进一步,本发明给出了基于代码隔离的嵌入式软件构建方法的具体实施例;其中系统软件为嵌入式实时操作系统,应用程序为多任务程序,非易失存储器采用NOR FLASH存储器。0035 1)应用程序需要操作系统的支持,系统上电后操作系统首先执行,然后跳转到应用程序执行,因此,在操作系统中添加跳转到应用程序入口地址的代码;0036 2)将非易失存储器划分为三个独立存储空间,第一个独立空间用于固化引导、加载程序,第二个独立存储空间用于固化嵌入式实时操作系统,第三个独立储存空间用于固化应用程序;。
17、0037 3)固化引导、加载程序到第一个独立存储空间中;0038 4)编译、连接嵌入式实时操作系统生成嵌入式实时操作系统映像,将嵌入式实时操作系统映像的代码段、数据段固化到非易失存储器的第二个独立存储空间中;0039 5)使用read-elf工具获取嵌入式实时操作系统映像中功能接口符号及地址信息,形成系统数据类型定义文件;0040 6)根据嵌入式实时操作系统提供的功能接口及系统数据类型定义文件生成嵌入式实时操作系统API接口文件userApp.h;0041 7)将嵌入式实时操作系统API接口文件拷贝到应用程序所在工程,并在应用程序源代码中包含嵌入式实时操作系统API接口文件,#include“。
18、userApp.h”;0042 8)编译、链接应用程序文件,生成elf格式的应用程序映像;0043 9)将应用程序映像的代码段、数据段固化到非易失存储器的第三个独立存储空间中;0044 该嵌入式软件构建方法构建的嵌入式软件的调用方法如下:0045 1)系统加电,引导、加载程序分别加载操作系统和应用程序到SRAM的不同地址空间中;0046 2)跳转到嵌入式实时操作系统执行;说 明 书CN 104407852 A4/4页60047 3)嵌入式实时操作系统启动后,跳转到应用程序执行;0048 4)应用程序通过嵌入式实时操作系统API接口文件完成操作系统的功能调用并返回应用程序。0049 本发明将非易。
19、失存储器按需求划分为三个独立的存储空间,且第一个独立存储空间用于固化引导、加载程序,第二个独立存储空间用于固化系统软件,第三个独立存储空间用于固化应用程序,且根据系统软件提供的功能接口及系统数据类型定义文件生成系统软件API接口文件,通过该系统软件API接口文件及系统数据类型定义文件来建立应用软件与系统软件的调用关系,实现了系统软件与应用软件的独立开发、独立固化,适用多个应用软件之间、应用软件与同一系统模块间的隔离、调用,使得迭代式增量开发更加方便,系统软件和应用软件的配置管理更加方便,便于问题的排查,因此,本发明在不增加系统开销的情况下实现了嵌入式软件与应用软件的隔离、调用,满足深嵌入式应用对高执行效率及低代码大小的要求。说 明 书CN 104407852 A1/2页7图1说 明 书 附 图CN 104407852 A2/2页8图2说 明 书 附 图CN 104407852 A。