CN104407852B - 一种基于代码隔离的嵌入式软件构建方法和调用方法 - Google Patents
一种基于代码隔离的嵌入式软件构建方法和调用方法 Download PDFInfo
- Publication number
- CN104407852B CN104407852B CN201410619253.7A CN201410619253A CN104407852B CN 104407852 B CN104407852 B CN 104407852B CN 201410619253 A CN201410619253 A CN 201410619253A CN 104407852 B CN104407852 B CN 104407852B
- Authority
- CN
- China
- Prior art keywords
- software
- system software
- application program
- code
- embedded
- 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.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
Abstract
一种基于代码隔离的嵌入式软件构建方法和调用方法,将非易失存储器划分为第一、二、三个独立存储空间;将引导、加载程序,系统软件映像对应固化到第一、二个独立存储空间;其前或后根据系统软件提供的功能接口及系统数据类型定义文件生成系统软件API接口文件;将其拷贝到应用程序所在工程并在应用程序源代码中包含系统软件API接口文件;将应用程序映像固化到第三个独立存储空间;引导、加载程序加载系统软件和应用程序到SRAM,并跳转到系统软件入口执行;启动后应用程序完成操作系统的功能调用并返回应用程序。该方法在不增加系统开销的情况下满足深嵌入式应用对高执行效率及低代码大小的要求。
Description
技术领域
本发明涉及一种嵌入式软件构建方法,具体涉及一种基于代码隔离的嵌入式软件构建方法和调用方法。
现有技术
目前现有的嵌入式软件构建方法有两种,一种是系统软件以库模块的形式与用户程序统一编译、链接,形成同一映像进行开发调试;另外一种构建方法是将系统软件先期开发并固化在系统中作为运行平台,应用软件通过软件中断(陷阱)的方式调用系统软件功能,并独立开发、编译、链接,独立固化运行,这两种方式各有利弊,详述如下。
第一种方式的优点是接口调用简单,应用程序对系统软件的功能接口调用无需增加额外的代码,占用空间小;缺点是当软件出现问题时,由于用户程序和系统软件交织在一起,不利于问题的排查和责任划分;
第二种方式的优点是系统软件以固件的方式固化到硬件中供应用软件调用,有利于软件知识产权的保护,方便问题排查;缺点是系统软件和应用软件均需要增加额外的代码处理陷阱调用,包括参数的传递、陷阱现场的保护、恢复等工作,增加了系统开销。
发明内容
本发明的目的在于提供一种基于代码隔离的嵌入式软件构建方法和调用方法,该方法在不增加系统开销的情况下实现了嵌入式软件与应用软件的隔离、调用,满足深嵌入式应用对高执行效率及低代码大小的要求。
为了达到上述目的,本发明基于代码隔离的嵌入式软件构建方法,包括如下步骤:
1)将非易失存储器划分为用于固化引导、加载程序的第一个独立存储空间,用于固化系统软件的第二个独立存储空间以及用于固化应用程序的第三个独立存储空间;
2)将引导、加载程序固化到非易失存储器的第一个独立存储空间;将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间;且将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间之前或之后,从系统软件映像中抽取系统软件的符号及地址信息,形成系统数据类型定义文件,根据系统软件提供的功能接口及系统数据类型定义文件生成系统软件API接口文件;
3)将系统软件API接口文件拷贝到应用程序所在工程,并在应用程序源代码中包含系统软件API接口文件;
4)将应用程序映像的代码段、数据段固化到非易失存储器的第三个独立存储空间,完成嵌入式软件构建。
步骤2)中将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间之前,在操作系统中添加跳转到应用程序入口地址的代码。
所述的非易失存储器为NOR FLASH存储器、EEPROM存储器或EPROM PROM存储器。
所述的系统软件映像是通过对系统软件进行编译、链接生成的;应用程序映像是通过对应用程序进行编译、链接生成的。
所述的系统软件为嵌入式实时操作系统、中间件、提供用户使用的底层软件或驱动软件。
当系统软件为嵌入式实时操作系统时,从系统软件映像中抽取系统软件的符号及地址信息的工具采用read-elf工具。
所述的系统软件API接口文件为userApp.h。
所述的应用程序为多任务程序,应用程序映像的文件格式为elf格式、coff格式或a.out格式。
一种嵌入式软件的调用方法,基于代码隔离的嵌入式软件构建方法构建的嵌入式软件,包括以下步骤:
1)引导、加载程序分别加载系统软件和应用程序到RAM的不同地址空间,并跳转到系统软件入口执行;
2)系统软件启动后,应用程序通过系统软件API接口文件完成操作系统的功能调用并返回应用程序。
与现有技术相比,本发明的有益效果在于:
本发明将非易失存储器按需求划分为三个独立的存储空间,且第一个独立存储空间用于固化引导、加载程序,第二个独立存储空间用于固化系统软件,第三个独立存储空间用于固化应用程序,且根据系统软件提供的功能接口及系统数据类型定义文件生成系统软件API接口文件,通过该系统软件API接口文件及系统数据类型定义文件来建立应用软件与系统软件的调用关系,实现了系统软件与应用软件的独立开发、独立固化,适用多个应用软件之间、应用软件与同一系统模块间的隔离、调用,使得迭代式增量开发更加方便,系统软件和应用软件的配置管理更加方便,便于问题的排查,因此,本发明在不增加系统开销的情况下实现了嵌入式软件与应用软件的隔离、调用,满足深嵌入式应用对高执行效率及低代码大小的要求。
附图说明
图1为本发明应用程序调用系统软件功能接口执行并返回图;
图2为本发明采用NOR FLASH存储器的目标板上的一个实施例;
具体实施方式
下面结合附图对本发明做进一步详细说明。
参见图2,本发明基于代码隔离的嵌入式软件构建方法包括如下步骤:
1)将非易失存储器划分为用于固化引导、加载程序的第一个独立存储空间,用于固化系统软件的第二个独立存储空间以及用于固化应用程序的第三个独立存储空间;非易失存储器为NOR FLASH存储器、EEPROM存储器或EPROM存储器或PROM存储器等;
2)将引导、加载程序固化到非易失存储器的第一个独立存储空间;将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间;且将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间之前或之后,从系统软件映像中抽取系统软件的符号及地址信息,形成系统数据类型定义文件,根据系统软件提供的功能接口及系统数据类型定义文件生成系统软件API接口文件;将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间之前,在操作系统中添加跳转到应用程序入口地址的代码;其中,系统软件映像是通过对系统软件进行编译、链接生成的;
3)将系统软件API接口文件拷贝到应用程序所在工程,并在应用程序源代码中包含系统软件API接口文件;
4)将应用程序映像的代码段、数据段固化到非易失存储器的第三个独立存储空间,完成嵌入式软件构建。应用程序映像是通过对应用程序进行编译、链接生成的,应用程序映像的文件格式为elf格式、coff格式或a.out格式
参见图1和2,本发明基于代码隔离的嵌入式软件构建方法构建的嵌入式软件,其调用方法为:
1)引导、加载程序分别加载系统软件和应用程序到RAM的不同地址空间,并跳转到系统软件入口执行;
2)系统软件启动后,应用程序通过系统软件API接口文件完成操作系统的功能调用并返回应用程序。
进一步,本发明给出了基于代码隔离的嵌入式软件构建方法的具体实施例;其中系统软件为嵌入式实时操作系统,应用程序为多任务程序,非易失存储器采用NOR FLASH存储器。
1)应用程序需要操作系统的支持,系统上电后操作系统首先执行,然后跳转到应用程序执行,因此,在操作系统中添加跳转到应用程序入口地址的代码;
2)将非易失存储器划分为三个独立存储空间,第一个独立空间用于固化引导、加载程序,第二个独立存储空间用于固化嵌入式实时操作系统,第三个独立储存空间用于固化应用程序;
3)固化引导、加载程序到第一个独立存储空间中;
4)编译、连接嵌入式实时操作系统生成嵌入式实时操作系统映像,将嵌入式实时操作系统映像的代码段、数据段固化到非易失存储器的第二个独立存储空间中;
5)使用read-elf工具获取嵌入式实时操作系统映像中功能接口符号及地址信息,形成系统数据类型定义文件;
6)根据嵌入式实时操作系统提供的功能接口及系统数据类型定义文件生成嵌入式实时操作系统API接口文件userApp.h;
7)将嵌入式实时操作系统API接口文件拷贝到应用程序所在工程,并在应用程序源代码中包含嵌入式实时操作系统API接口文件,#include“userApp.h”;
8)编译、链接应用程序文件,生成elf格式的应用程序映像;
9)将应用程序映像的代码段、数据段固化到非易失存储器的第三个独立存储空间中;
该嵌入式软件构建方法构建的嵌入式软件的调用方法如下:
1)系统加电,引导、加载程序分别加载操作系统和应用程序到SRAM的不同地址空间中;
2)跳转到嵌入式实时操作系统执行;
3)嵌入式实时操作系统启动后,跳转到应用程序执行;
4)应用程序通过嵌入式实时操作系统API接口文件完成操作系统的功能调用并返回应用程序。
本发明将非易失存储器按需求划分为三个独立的存储空间,且第一个独立存储空间用于固化引导、加载程序,第二个独立存储空间用于固化系统软件,第三个独立存储空间用于固化应用程序,且根据系统软件提供的功能接口及系统数据类型定义文件生成系统软件API接口文件,通过该系统软件API接口文件及系统数据类型定义文件来建立应用软件与系统软件的调用关系,实现了系统软件与应用软件的独立开发、独立固化,适用多个应用软件之间、应用软件与同一系统模块间的隔离、调用,使得迭代式增量开发更加方便,系统软件和应用软件的配置管理更加方便,便于问题的排查,因此,本发明在不增加系统开销的情况下实现了嵌入式软件与应用软件的隔离、调用,满足深嵌入式应用对高执行效率及低代码大小的要求。
Claims (6)
1.一种基于代码隔离的嵌入式软件构建方法,其特征在于,包括如下步骤:
1)将非易失存储器划分为用于固化引导、加载程序的第一个独立存储空间,用于固化系统软件的第二个独立存储空间以及用于固化应用程序的第三个独立存储空间;
2)将引导、加载程序固化到非易失存储器的第一个独立存储空间;将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间;且将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间之前或之后,从系统软件映像中抽取系统软件的符号及地址信息,形成系统数据类型定义文件,根据系统软件提供的功能接口及系统数据类型定义文件生成系统软件API接口文件;其中将系统软件映像的代码段、数据段固化到非易失存储器的第二个独立存储空间之前,在操作系统中添加跳转到应用程序入口地址的代码;
3)将系统软件API接口文件拷贝到应用程序所在工程,并在应用程序源代码中包含系统软件API接口文件;
4)将应用程序映像的代码段、数据段固化到非易失存储器的第三个独立存储空间,完成嵌入式软件构建;
所述的系统软件映像是通过对系统软件进行编译、链接生成的;应用程序映像是通过对应用程序进行编译、链接生成的;
所述的系统软件为嵌入式实时操作系统、中间件、提供用户使用的底层软件或驱动软件。
2.根据权利要求1所述的基于代码隔离的嵌入式软件构建方法,其特征在于:所述的非易失存储器为NOR FLASH存储器、EEPROM存储器或EPROM存储器或PROM存储器。
3.根据权利要求1所述的基于代码隔离的嵌入式软件构建方法,其特征在于:当系统软件为嵌入式实时操作系统时,从系统软件映像中抽取系统软件的符号及地址信息的工具采用read-elf工具。
4.根据权利要求3所述的基于代码隔离的嵌入式软件构建方法,其特征在于:所述的系统软件API接口文件为userApp.h。
5.根据权利要求3所述的基于代码隔离的嵌入式软件构建方法,其特征在于:所述的应用程序为多任务程序,应用程序映像的文件格式为elf格式、coff格式或a.out格式。
6.一种嵌入式软件的调用方法,其特征在于,权利要求1~5中任意一项权利要求所述的基于代码隔离的嵌入式软件构建方法构建的嵌入式软件,包括以下步骤:
1)引导、加载程序分别加载系统软件和应用程序到RAM的不同地址空间,并跳转到系统软件入口执行;
2)系统软件启动后,应用程序通过系统软件API接口文件完成操作系统的功能调用并返回应用程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410619253.7A CN104407852B (zh) | 2014-11-05 | 2014-11-05 | 一种基于代码隔离的嵌入式软件构建方法和调用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410619253.7A CN104407852B (zh) | 2014-11-05 | 2014-11-05 | 一种基于代码隔离的嵌入式软件构建方法和调用方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104407852A CN104407852A (zh) | 2015-03-11 |
CN104407852B true CN104407852B (zh) | 2017-09-29 |
Family
ID=52645485
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410619253.7A Active CN104407852B (zh) | 2014-11-05 | 2014-11-05 | 一种基于代码隔离的嵌入式软件构建方法和调用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104407852B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106502960A (zh) * | 2016-10-09 | 2017-03-15 | 上海庆科信息技术有限公司 | 一种基于sip封装的无线通信芯片 |
CN110008044B (zh) * | 2019-04-11 | 2021-03-23 | 北京航空航天大学 | 一种嵌入式rtos上分布式实时通信中间件的构建方法 |
CN110209434B (zh) * | 2019-04-23 | 2022-04-22 | 努比亚技术有限公司 | 一种内存管理方法、装置及计算机可读存储介质 |
CN110083469B (zh) * | 2019-05-11 | 2021-06-04 | 广东财经大学 | 一种异构硬件组织运行统一内核方法及系统 |
CN113010179B (zh) * | 2021-02-23 | 2024-03-15 | 深圳市广和通无线股份有限公司 | 基于实时操作系统的独立应用的运行方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1641582A (zh) * | 2003-12-16 | 2005-07-20 | 微软公司 | 以故障保险方式向非易失存储应用自定义软件映象更新 |
US7971201B2 (en) * | 2006-03-20 | 2011-06-28 | Fujitsu Limited | Multiple operating device version software generating system and multiple operating device version software generation support program and method |
CN103257860A (zh) * | 2006-04-19 | 2013-08-21 | 英特尔公司 | 支持处理系统的分区中的独立操作系统的方法和设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002312174A (ja) * | 2001-04-16 | 2002-10-25 | Nippon Marketing Agency:Kk | コンピュータの運用方法、コンピュータ運用プログラム、コンピュータ運用プログラムを記録した記録媒体及びコンピュータ |
-
2014
- 2014-11-05 CN CN201410619253.7A patent/CN104407852B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1641582A (zh) * | 2003-12-16 | 2005-07-20 | 微软公司 | 以故障保险方式向非易失存储应用自定义软件映象更新 |
US7971201B2 (en) * | 2006-03-20 | 2011-06-28 | Fujitsu Limited | Multiple operating device version software generating system and multiple operating device version software generation support program and method |
CN103257860A (zh) * | 2006-04-19 | 2013-08-21 | 英特尔公司 | 支持处理系统的分区中的独立操作系统的方法和设备 |
Non-Patent Citations (2)
Title |
---|
基于平台的嵌入式软件设计方法的研究与应用;杜春侠;《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》;20070215(第02期);第I-II页,第14页,第16页,第18-21页,第26-27页,第55-57页、图3.2,图4.18 * |
嵌入式实时操作系统VxWorks下BSP分析及VxWorks裁减;褚哲等;《天津工程师范学院学报》;20050630;第15卷(第2期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN104407852A (zh) | 2015-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104407852B (zh) | 一种基于代码隔离的嵌入式软件构建方法和调用方法 | |
KR101240092B1 (ko) | 컴퓨터 플랫폼에서의 방법 및 컴퓨터 플랫폼 | |
CN102132289B (zh) | 用于代码迷惑的方法及设备 | |
Boudreau et al. | Rich Client Programming: Plugging into the NetBeans (TM) Platform | |
CN105683924A (zh) | 通过从在本机模式中执行转变为在经解释的模式中执行来调试本机代码 | |
CN103718159B (zh) | 图像处理软件开发方法、图像处理软件开发装置 | |
CN102646035A (zh) | 基于api接口和脚本定义相结合的可视化代码生成方法 | |
CN104407886B (zh) | 一种引导与目标分离的嵌入式软件固化、加载方法 | |
CN105739961A (zh) | 一种嵌入式系统的启动方法和装置 | |
CN107632828A (zh) | 多dts文件支持方法、编译装置及嵌入式设备 | |
CN104657258B (zh) | 一种向目标进程内注入Java字节码的方法及装置 | |
CN103927187A (zh) | 嵌入式系统程序执行方法 | |
CN105849698B (zh) | 动态编程中的执行防护 | |
CN108829465B (zh) | 一种基于直接读写flash的本地动态加载系统及方法 | |
CN102012954A (zh) | 用于系统芯片集成设计的子系统集成方法及其子系统集成系统 | |
CN113296786B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN105404794A (zh) | Java应用软件的保护方法和装置 | |
CN106020905A (zh) | 一种微控制器固件开发与更新的方法及系统 | |
CN106325854A (zh) | 一种基于Groovy的规则引擎系统 | |
CN105373411A (zh) | 一种用于星载数字信号处理器的在轨编程系统及设计方法 | |
CN104881311A (zh) | 一种版本兼容的判断方法及装置 | |
US8196093B2 (en) | Apparatus and method for componentizing legacy system | |
CN112487092B (zh) | 一种基于区块链的智能合约调用方法及装置 | |
CN109445878A (zh) | 在运行时对Java类进行注入的方法及装置 | |
CN116627502B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |