CN102830981B - 一种用于嵌入式系统软件开发工具的实现方法 - Google Patents

一种用于嵌入式系统软件开发工具的实现方法 Download PDF

Info

Publication number
CN102830981B
CN102830981B CN201210334812.0A CN201210334812A CN102830981B CN 102830981 B CN102830981 B CN 102830981B CN 201210334812 A CN201210334812 A CN 201210334812A CN 102830981 B CN102830981 B CN 102830981B
Authority
CN
China
Prior art keywords
module
projects
file
compiling
development environment
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
Application number
CN201210334812.0A
Other languages
English (en)
Other versions
CN102830981A (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.)
Shanghai Feixun Data Communication Technology Co Ltd
Original Assignee
Shanghai Feixun Data Communication 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 Shanghai Feixun Data Communication Technology Co Ltd filed Critical Shanghai Feixun Data Communication Technology Co Ltd
Priority to CN201210334812.0A priority Critical patent/CN102830981B/zh
Publication of CN102830981A publication Critical patent/CN102830981A/zh
Application granted granted Critical
Publication of CN102830981B publication Critical patent/CN102830981B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种用于嵌入式系统软件开发工具的实现方法,具体包括如下步骤:步骤a1、将一多平台编译工具链与开发工具连接,以对应不同操作系统平台和不同中央处理器的编译参数作为多平台编译工具链中对应工具链的入口;步骤a2、开发工具为待开发的项目工程建立带有对应目标操作系统和目标中央处理器的编译参数以及统一的目录结构并包含有项目工程所需文件的独立的开发环境;步骤a3、对项目工程进行编译时根据开发环境中的编译参数选择多平台编译工具链中对应的工具链进行编译以生成目标文件。具体有益效果是:实现复杂且可定制的多模块开发模式,并可以实现不同操作系统和处理器跨平台的开发编译,从而提高开发效率,降低错误率。

Description

一种用于嵌入式系统软件开发工具的实现方法
技术领域
本发明涉及一种软件开发工具,尤其涉及一种用于嵌入式系统软件开发工具的实现方法。          
背景技术
在通信行业的嵌入式系统开发中,经常需要开发不同操作系统如Linux、uC/OS-II以及不同的处理器如MIPS(Microprocessor without interlocked piped stages 无内部互锁流水级的微处理器)、PowerPC(Performance Optimized With Enhanced RISC PC 增强精简指令集性能优化架构)平台的嵌入式软件系统,并且工程项目的软件开发往往是复杂的多模块协同开发,而现有的开发平台无法适应这种开发特点,使得开发人员在开发过程中不得不在多个开发平台间转换,造成工作效率低,易出现错误等问题。
发明内容
针对上述问题,现提供一种旨在实现跨平台开发编译的用于嵌入式系统软件开发工具的实现方法。
具体技术方案如下:
一种用于嵌入式系统软件开发工具的实现方法,其中,具体包括如下步骤:
步骤a1、将一多平台编译工具链与所述开发工具连接,以对应不同操作系统平台和不同中央处理器的编译参数作为所述多平台编译工具链中对应工具链的入口;
步骤a2、所述开发工具为待开发的项目工程建立带有对应目标操作系统和目标中央处理器的编译参数以及统一的目录结构并包含有所述项目工程所需文件的独立的开发环境;
步骤a3、对项目工程进行编译时根据所述开发环境中的编译参数选择所述多平台编译工具链中对应的工具链进行编译以生成目标文件。
优选的,所述开发环境包括用于存放所述项目工程用到的头文件目录、用于存放编译过程中生成的中间目标文件和所述项目工程的各个模块对应的静态库文件的工程文件目录、用于存放所述项目工程需要用到的外部库文件的库文件目录以及用于存放所述项目工程的各模块的模块目录结构。
优选的,所述开发环境包括与目标系统对应的系统组件及所述系统组件的配置参数,所述系统组件及所述系统组件的配置参数分别以头文件的形式存放于所述开发环境的顶层目录中。
优选的,所述开发环境包括所述项目工程对应的应用程序的入口初始化函数,所述入口初始化函数以应用程序初始化源文件的形式存放于所述开发环境的顶层目录中。
优选的,所述编译参数以处于所述开发环境目录结构顶层的编译文件的形式存放于所述开发环境中,所述编译文件中还存放有所述项目工程模块清单、各模块的从属关系,以及可通过所述开发工具改变的与所述多平台编译工具链中各编译工具对应的编译选项所需的变量。
优选的,所述模块目录结构包括用于存放单个一级模块的一级模块目录和用于存放单个二级模块的二级模块目录,所述一级模块若存在对应的二级模块则所述一级模块中仅存放所述二级模块的名称且该一级模块目录中包含用于存放对应的所述二级模块的二级模块目录。
优选的,所述步骤a3对所述项目工程编译的过程具体包括如下步骤:
步骤b1、根据所述项目工程顶层目录中的编译文件中的所述项目工程的模块清单选择一个未编译的一级模块;
步骤b2、判断选中的所述一级模块是否存在对应的二级模块,如存在对应的二级模块,则根据选定的所述一级模块中记录的对应的二级模块的名称逐一编译选定的所述一级模块对应的二级模块,如不存在对应的二级模块则对选定的所述一级模块进行编译;
步骤b3、重复步骤b1至步骤b2直至所述项目工程的所有模块均被编译;
步骤b4、根据所述项目工程顶层目录中的编译文件中的编译参数对应的目标操作系统判断是否要对编译完成的所述项目工程的模块的库文件进行链接;
步骤b5、对不需要链接的目标操作系统生成可执行文件,对需要链接的目标操作系统输出所述项目工程经编译的模块库文件。
优选的,所述开发工具根据所述开发环境顶层目录中的编译文件中的模块清单为每个所述模块生成对应的编译文件并存放于用于存放对应模块的目录中。
上述技术方案的有益效果是:
实现复杂且可定制的多模块开发模式,并可以实现不同操作系统和处理器跨平台的开发编译,从而提高开发效率,降低错误率。
附图说明
图1为本发明一种用于嵌入式系统软件开发工具的实现方法的实施例的流程框图;
图2为本发明一种用于嵌入式系统软件开发工具的实现方法的实施例中的项目工程编译过程的流程框图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。
如图1所示,本发明一种用于嵌入式系统软件开发工具的实现方法的实施例,其中,具体包括如下步骤:
步骤a1、将一多平台编译工具链与开发工具连接,以对应不同操作系统平台和不同中央处理器的编译参数作为多平台编译工具链中对应工具链的入口;一种较优的实施方式是可采用GNU组织提供的一套完整的多平台编译工具链。
步骤a2、开发工具为待开发的项目工程建立带有对应目标操作系统和目标中央处理器的编译参数以及统一的目录结构并包含有项目工程所需文件的独立的开发环境;开发环境以对应目标系统和项目工程本身需求的目录结构予以体现。其中,开发环境包括用于存放项目工程用到的头文件目录、用于存放编译过程中生成的中间目标文件和项目工程的各个模块对应的静态库文件的工程文件目录、用于存放项目工程需要用到的外部库文件的库文件目录以及用于存放项目工程的各模块的模块目录结构。头文件目录可采用符合开发人员习惯的include这一字串进行命名,同样的,工程文件目录可采用build这一字串进行命名,库文件目录可采用lib这一字串进行命名。
进一步的,开发环境还包括与目标系统对应的系统组件及系统组件的配置参数,系统组件及系统组件的配置参数分别以头文件的形式存放于开发环境的顶层目录中。同时,开发环境还包括项目工程对应的应用程序的入口初始化函数,入口初始化函数以应用程序初始化源文件的形式存放于开发环境的顶层目录中。
编译参数以处于开发环境目录结构顶层的编译文件的形式存放于开发环境中,编译文件中还存放有项目工程模块清单、各模块的从属关系,以及可通过开发工具改变的与多平台编译工具链中各编译工具对应的编译选项所需的变量。
模块目录结构包括用于存放单个一级模块的一级模块目录和用于存放单个二级模块的二级模块目录,一级模块若存在对应的二级模块则一级模块中仅存放二级模块的名称且该一级模块目录中包含用于存放对应的二级模块的二级模块目录。
步骤a3、对项目工程进行编译时根据开发环境中的编译参数选择多平台编译工具链中对应的工具链进行编译以生成目标文件。
如图2所示,步骤a3对项目工程编译的过程具体包括如下步骤:
步骤b1、根据项目工程顶层目录中的编译文件中的项目工程的模块清单选择一个未编译的一级模块;
步骤b2、判断选中的一级模块是否存在对应的二级模块,如存在对应的二级模块,则根据选定的一级模块中记录的对应的二级模块的名称逐一编译选定的一级模块对应的二级模块,如不存在对应的二级模块则对选定的一级模块进行编译;
步骤b3、重复步骤b1至步骤b2直至项目工程的所有模块均被编译;
在对模块进行编译之前,需要为每个模块生成对应的编译文件并存放于用于存放对应模块的目录中,根据一级模块和二级模块的不同,分为一级模块编译文件和二级模块编译文件。其中二级模块编译文件是最终的模块编译文件,它会对该最终模块中所有源文件进行编译,并生成对应的模块库文件,而对于一级模块编译文件,需要根据对模块类型进行判断,如果该一级模块不包含有任何对应的二级模块,即该模块是作为最终模块存在的,则对该模块进行编译,并生成模块库文件即可;如果该一级模块包含有二级模块,则需要根据其二级模块的结构来逐一将执行权交给其二级模块,并分别编译并生成模块库文件。因此,在为工程各个模块生成编译文件时,只需要根据一级模块目录或者二级模块目录来相应生成一级模块文件与二级模块文件即可。
在对项目工程中包含的一级模块和二级模块在内的所有模块生成了编译文件之后,从项目工程顶层的编译文件开始,根据各模块目录结构,对项目工程中所有模块进行遍历,每到一个模块,都会判断该模块是否为最终模块,如果是,则编译该模块,并生成该模块相对应的库文件;如果不是最终模块,则逐一进入该模块目录中所有二级模块进行编译,并生成该模块相对应的库文件。
步骤b4、根据项目工程顶层目录中的编译文件中的编译参数对应的目标操作系统判断是否要对编译完成的项目工程的模块的库文件进行链接;
步骤b5、对不需要链接的目标操作系统生成可执行文件,对需要链接的目标操作系统输出项目工程经编译的模块库文件。
对项目工程中所有模块编译完成并生成相对应的模块库文件之后,根据嵌入式操作系统平台的不同,分别对整个项目工程的模块库文件进行处理,对于不需要和嵌入式操作系统编译链接的,如嵌入式Linux操作系统,只需要将模块库文件链接生成最终的可执行应用程序即可;而对于需要和嵌入式操作系统编译链接的,项目工程编译最终的目标文件就是项目工程各个模块的库文件,用户只需要将该项目工程的模块库文件输出给相对应的目标操作系统作为外部引用库文件即可作为二次开发。特别地,如果该项目工程的目标操作系统是开源的,如uC/OS-II嵌入式操作系统,则只需要将该操作系统源代码作为一个或多个模块存在于开发环境中,最终生成的模块库文件,包括所用操作系统相应库文件,一起编译链接生成最终的可执行镜像文件。
所有的项目工程配置维护管理都在开发环境顶层的编译文件中修改操作即可,不需要操作其它的配置文件,而对系统组件及其参数配置管理也是相对简便的。项目工程中的模块目录结构仅由开发环境顶层的编译文件中的参数来决定,即便模块中出现其它目录也是不被识别的。
为了方便调试,可以进入各个模块所在的目录,单独对模块进行编译,如果进入一级模块目录进行编译,则开发工具编译调试该一级模块对应的所有二级模块,如果不存在对应的二级模块,则仅编译调试该一级模块,如果进入了二级模块目录,则只对指定的单个二级模块进行编译调试。
以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。

Claims (6)

1.一种用于嵌入式系统软件开发工具的实现方法,其特征在于,具体包括如下步骤:
步骤a1、将一多平台编译工具链与所述开发工具连接,以对应不同操作系统平台和不同中央处理器的编译参数作为所述多平台编译工具链中对应工具链的入口;
步骤a2、所述开发工具提供待开发的项目工程建立带有对应目标操作系统和目标中央处理器的编译参数以及统一的目录结构并包含有所述项目工程所需文件的独立的开发环境;所述开发环境包括与目标系统对应的系统组件及所述系统组件的配置参数,所述系统组件及所述系统组件的配置参数分别以头文件的形式存放于所述开发环境的顶层目录中;
步骤a3、对项目工程进行编译时根据所述开发环境中的编译参数选择所述多平台编译工具链中对应的工具链进行编译以生成目标文件;所述编译参数以处于所述开发环境目录结构顶层的编译文件的形式存放于所述开发环境中,所述编译文件中还存放有所述项目工程模块清单、各模块的从属关系、以及可通过所述开发工具改变的与所述多平台编译工具链中各编译工具对应的编译选项所需的变量。
2.如权利要求1所述用于嵌入式系统软件开发工具的实现方法,其特征在于,所述开发环境包括用于存放所述项目工程用到的头文件目录、用于存放编译过程中生成的中间目标文件和所述项目工程的各个模块对应的静态库文件的工程文件目录、用于存放所述项目工程需要用到的外部库文件的库文件目录以及用于存放所述项目工程的各模块的模块目录结构。
3.如权利要求1所述用于嵌入式系统软件开发工具的实现方法,其特征在于,所述开发环境包括所述项目工程对应的应用程序的入口初始化函数,所述入口初始化函数以应用程序初始化源文件的形式存放于所述开发环境的顶层目录中。
4.如权利要求1所述用于嵌入式系统软件开发工具的实现方法,其特征在于,所述模块目录结构包括用于存放单个一级模块的一级模块目录和用于存放单个二级模块的二级模块目录,所述一级模块若存在对应的二级模块则所述一级模块中仅存放所述二级模块的名称且该一级模块目录中包含用于存放对应的所述二级模块的二级模块目录。
5.如权利要求1所述用于嵌入式系统软件开发工具的实现方法,其特征在于,所述步骤a3对所述项目工程编译的过程具体包括如下步骤:
步骤b1、根据所述项目工程顶层目录中的编译文件中的所述项目工程的模块清单选择一个未编译的一级模块;
步骤b2、判断选中的所述一级模块是否存在对应的二级模块,如存在对应的二级模块,则根据选定的所述一级模块中记录的对应的二级模块的名称逐一编译选定的所述一级模块对应的二级模块,如不存在对应的二级模块则对选定的所述一级模块进行编译;
步骤b3、重复步骤b1至步骤b2直至所述项目工程的所有模块均被编译;
步骤b4、根据所述项目工程顶层目录中的编译文件中的编译参数对应的目标操作系统判断是否要对编译完成的所述项目工程的模块的库文件进行链接;
步骤b5、对不需要链接的目标操作系统生成可执行文件,对需要链接的目标操作系统输出所述项目工程经编译的模块库文件。
6.如权利要求4所述用于嵌入式系统软件开发工具的实现方法,其特征在于,所述开发工具根据所述开发环境顶层目录中的编译文件中的模块清单为每个所述模块生成对应的编译文件并存放于用于存放对应模块的目录中。
CN201210334812.0A 2012-09-12 2012-09-12 一种用于嵌入式系统软件开发工具的实现方法 Active CN102830981B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210334812.0A CN102830981B (zh) 2012-09-12 2012-09-12 一种用于嵌入式系统软件开发工具的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210334812.0A CN102830981B (zh) 2012-09-12 2012-09-12 一种用于嵌入式系统软件开发工具的实现方法

Publications (2)

Publication Number Publication Date
CN102830981A CN102830981A (zh) 2012-12-19
CN102830981B true CN102830981B (zh) 2015-10-07

Family

ID=47334131

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210334812.0A Active CN102830981B (zh) 2012-09-12 2012-09-12 一种用于嵌入式系统软件开发工具的实现方法

Country Status (1)

Country Link
CN (1) CN102830981B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105025254B (zh) * 2014-06-13 2018-11-06 深圳市景阳科技股份有限公司 一种多平台监控终端系统开发方法
CN105812327B (zh) * 2014-12-29 2020-07-10 航天信息股份有限公司 复合型多用通讯方法及系统
CN105824628B (zh) * 2016-03-16 2019-05-24 湖南中车时代通信信号有限公司 安全计算机平台二次软件开发的方法
CN105893105A (zh) * 2016-03-29 2016-08-24 乐视控股(北京)有限公司 一种针对多个编译平台的编译系统和方法
CN106202685B (zh) * 2016-07-01 2019-10-08 合肥海本蓝科技有限公司 一种软硬件协同仿真加速器运行环境搭建方法和装置
CN106598607A (zh) * 2016-12-19 2017-04-26 上海鸣啸信息科技股份有限公司 一种嵌入式乘客信息系统的软件开发方法
CN106775744B (zh) * 2016-12-28 2021-02-23 北京五八信息技术有限公司 一种生成静态库的方法和装置
CN109240646B (zh) * 2017-06-09 2023-07-25 龙芯中科技术股份有限公司 应用程序开发工具的构建方法、装置、设备和存储介质
CN108289250B (zh) * 2017-12-27 2020-05-12 深圳市九洲电器有限公司 机顶盒操作系统管理方法及系统
CN108536431A (zh) * 2018-04-04 2018-09-14 浙江小泰科技有限公司 一种全局命令行创建前端项目方法及系统
CN109918080A (zh) * 2019-02-25 2019-06-21 深圳市创联时代科技有限公司 一种配置工具链的方法
CN109976750A (zh) * 2019-03-28 2019-07-05 深圳市创联时代科技有限公司 一种基于嵌入式开发系统的组件源码配置和组件裁剪方法
CN112231211B (zh) * 2020-10-14 2024-01-26 天津津航计算技术研究所 一种在嵌入式VxWorks操作系统下解决Qt应用调试的方法
CN114296742B (zh) * 2022-03-08 2022-05-10 苏州万店掌网络科技有限公司 安装包创建方法、装置、设备及介质
CN115827056B (zh) * 2023-02-01 2023-05-09 北京乐研科技股份有限公司 一种配置多种编译环境变换的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101122866A (zh) * 2007-09-12 2008-02-13 中兴通讯股份有限公司 集成开发环境中的程序代码编译方法
CN101630258A (zh) * 2009-07-29 2010-01-20 精伦电子股份有限公司 Windows平台上嵌入式Linux软件集成开发系统及其构建方法
CN101667134A (zh) * 2009-09-23 2010-03-10 中兴通讯股份有限公司 一种构建编译系统的方法、一种编译系统及其构建装置
CN101859244A (zh) * 2009-04-10 2010-10-13 中兴通讯股份有限公司 多工具链工程构建方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101122866A (zh) * 2007-09-12 2008-02-13 中兴通讯股份有限公司 集成开发环境中的程序代码编译方法
CN101859244A (zh) * 2009-04-10 2010-10-13 中兴通讯股份有限公司 多工具链工程构建方法及系统
CN101630258A (zh) * 2009-07-29 2010-01-20 精伦电子股份有限公司 Windows平台上嵌入式Linux软件集成开发系统及其构建方法
CN101667134A (zh) * 2009-09-23 2010-03-10 中兴通讯股份有限公司 一种构建编译系统的方法、一种编译系统及其构建装置

Also Published As

Publication number Publication date
CN102830981A (zh) 2012-12-19

Similar Documents

Publication Publication Date Title
CN102830981B (zh) 一种用于嵌入式系统软件开发工具的实现方法
US9864590B2 (en) Method and system for automated improvement of parallelism in program compilation
CN110870249A (zh) 用于将高级语言代码编译为区块链平台上可执行的脚本的系统和方法
US9250973B2 (en) Apparatus and associated methodology of generating a multi-core communications topology
CN109976760A (zh) 一种图形语言的交叉编译方法及交叉编译器
US8418155B2 (en) Generating parallel SIMD code for an arbitrary target architecture
Lazarescu Wireless sensor networks for the Internet of Things: barriers and synergies
CN101859244A (zh) 多工具链工程构建方法及系统
CN104267999A (zh) 一种对控制程序进行编译的方法和装置
Floc'h et al. GeCoS: A framework for prototyping custom hardware design flows
CN103197942A (zh) 一种补丁的生成方法、打补丁的方法及装置
CN109542446A (zh) 一种编译系统、方法及编译器
Posse PapyrusRT: modelling and code generation
CN106648813B (zh) 一种同步数据流程序的形式化编译方法
Cardoso et al. REFLECT: rendering FPGAs to multi-core embedded computing
Hück et al. Source transformation of C++ codes for compatibility with operator overloading
Herrera et al. A model-based, single-source approach to design-space exploration and synthesis of mixed-criticality systems
Carpenter et al. A streaming machine description and programming model
Wichmann et al. Specification and execution of system optimization processes with UML activity diagrams
Ubayashi et al. Abstraction-aware verifying compiler for yet another MDD
CN108427558A (zh) 一种c编译器的窥孔优化方法
US20110023008A1 (en) Method for optimizing an architectural model of a microprocessor
Sinha et al. Competitors or Cousins? Studying the parallels between distributed programming languages SystemJ and IEC61499
Arató et al. A data flow graph generation method starting from C description by handling loop nest hierarchy
Bagnato et al. SysML for modeling co-simulation orchestration over FMI: the INTO-CPS approach

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
PP01 Preservation of patent right

Effective date of registration: 20180313

Granted publication date: 20151007

PP01 Preservation of patent right
PD01 Discharge of preservation of patent
PD01 Discharge of preservation of patent

Date of cancellation: 20210313

Granted publication date: 20151007

PP01 Preservation of patent right
PP01 Preservation of patent right

Effective date of registration: 20210313

Granted publication date: 20151007

PD01 Discharge of preservation of patent
PD01 Discharge of preservation of patent

Date of cancellation: 20240313

Granted publication date: 20151007