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

文档序号:6376724阅读:230来源:国知局
专利名称:一种用于嵌入式系统软件开发工具的实现方法
技术领域
本发明涉及一种软件开发工具,尤其涉及一种用于嵌入式系统软件开发工具的实现方法。 。
背景技术
在通信行业的嵌入式系统开发中,经常需要开发不同操作系统如LinuX、uC/0S-II以及不同的处理器如 MIPS(Microprocessor without interlocked piped stages 无内部互锁流水级的微处理器)、PowerPC (Performance Optimized With Enhanced RISC PC 增强精简指令集性能优化架构)平台的嵌入式软件系统,并且工程项目的软件开发往往是复杂的多模块协同开发,而现有的开发平台无法适应这种开发特点,使得开发人员在开发过程中不得不在多个开发平台间转换,造成工作效率低,易出现错误等问题
发明内容
针对上述问题,现提供一种旨在实现跨平台开发编译的用于嵌入式系统软件开发工具的实现方法。具体技术方案如下
一种用于嵌入式系统软件开发工具的实现方法,其中,具体包括如下步骤
步骤al、将一多平台编译工具链与所述开发工具连接,以对应不同操作系统平台和不同中央处理器的编译参数作为所述多平台编译工具链中对应工具链的入口;
步骤a2、所述开发工具为待开发的项目工程建立带有对应目标操作系统和目标中央处理器的编译参数以及统一的目录结构并包含有所述项目工程所需文件的独立的开发环境;
步骤a3、对项目工程进行编译时根据所述开发环境中的编译参数选择所述多平台编译工具链中对应的工具链进行编译以生成目标文件。优选的,所述开发环境包括用于存放所述项目工程用到的头文件目录、用于存放编译过程中生成的中间目标文件和所述项目工程的各个模块对应的静态库文件的工程文件目录、用于存放所述项目工程需要用到的外部库文件的库文件目录以及用于存放所述项目工程的各模块的模块目录结构。优选的,所述开发环境包括与目标系统对应的系统组件及所述系统组件的配置参数,所述系统组件及所述系统组件的配置参数分别以头文件的形式存放于所述开发环境的顶层目录中。优选的,所述开发环境包括所述项目工程对应的应用程序的入口初始化函数,所述入口初始化函数以应用程序初始化源文件的形式存放于所述开发环境的顶层目录中。优选的,所述编译参数以处于所述开发环境目录结构顶层的编译文件的形式存放于所述开发环境中,所述编译文件中还存放有所述项目工程模块清单、各模块的从属关系,以及可通过所述开发工具改变的与所述多平台编译工具链中各编译工具对应的编译选项所需的变量。优选的,所述模块目录结构包括用于存放单个一级模块的一级模块目录和用于存放单个二级模块的二级模块目录,所述一级模块若存在对应的二级模块则所述一级模块中仅存放所述二级模块的名称且该一级模块目录中包含用于存放对应的所述二级模块的二级模块目录。优选的,所述步骤a3对所述项目工程编译的过程具体包括如下步骤
步骤bl、根据所述项目工程顶层目录中的编译文件中的所述项目工程的模块清单选择一个未编译的一级模块;
步骤b2、判断选中的所述一级模块是否存在对应的二级模块,如存在对应的二级模块,则根据选定的所述一级模块中记录的对应的二级模块的名称逐一编译选定的所述一级模块对应的二级模块,如不存在对应的二级模块则对选定的所述一级模块进行编译; 步骤b3、重复步骤bl至步骤b2直至所述项目工程的所有模块均被编译;
步骤b4、根据所述项目工程顶层目录中的编译文件中的编译参数对应的目标操作系统判断是否要对编译完成的所述项目工程的模块的库文件进行链接;
步骤b5、对不需要链接的目标操作系统生成可执行文件,对需要链接的目标操作系统输出所述项目工程经编译的模块库文件。 优选的,所述开发工具根据所述开发环境顶层目录中的编译文件中的模块清单为每个所述模块生成对应的编译文件并存放于用于存放对应模块的目录中。上述技术方案的有益效果是
实现复杂且可定制的多模块开发模式,并可以实现不同操作系统和处理器跨平台的开发编译,从而提高开发效率,降低错误率。


图I为本发明一种用于嵌入式系统软件开发工具的实现方法的实施例的流程框 图2为本发明一种用于嵌入式系统软件开发工具的实现方法的实施例中的项目工程编译过程的流程框图。
具体实施例方式下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。如图I所示,本发明一种用于嵌入式系统软件开发工具的实现方法的实施例,其中,具体包括如下步骤
步骤al、将一多平台编译工具链与开发工具连接,以对应不同操作系统平台和不同中央处理器的编译参数作为多平台编译工具链中对应工具链的入口 ;一种较优的实施方式是可采用GNU组织提供的一套完整的多平台编译工具链。步骤a2、开发工具为待开发的项目工程建立带有对应目标操作系统和目标中央处理器的编译参数以及统一的目录结构并包含有项目工程所需文件的独立的开发环境;开发环境以对应目标系统和项目工程本身需求的目录结构予以体现。其中,开发环境包括用于存放项目工程用到的头文件目录、用于存放编译过程中生成的中间目标文件和项目工程的各个模块对应的静态库文件的工程文件目录、用于存放项目工程需要用到的外部库文件的库文件目录以及用于存放项目工程的各模块的模块目录结构。头文件目录可采用符合开发人员习惯的include这一字串进行命名,同样的,工程文件目录可采用build这一字串进行命名,库文件目录可采用Iib这一字串进行命名。进一步的,开发环境还包括与目标系统对应的系统组件及系统组件的配置参数,系统组件及系统组件的配置参数分别以头文件的形式存放于开发环境的顶层目录中。同时,开发环境还包括项目工程对应的应用程序的入口初始化函数,入口初始化函数以应用程序初始化源文件的形式存放于开发环境的顶层目录中。编译参数以处于开发环境目录结构顶层的编译文件的形式存放于开发环境中,编译文件中还存放有项目工程模块清单、各模块的从属关系,以及可通过开发工具改变的与多平台编译工具链中各编译工具对应的编译选项所需的变量。模块目录结构包括用于存放单个一级模块的一级模块目录和用于存放单个二级 模块的二级模块目录,一级模块若存在对应的二级模块则一级模块中仅存放二级模块的名称且该一级模块目录中包含用于存放对应的二级模块的二级模块目录。步骤a3、对项目工程进行编译时根据开发环境中的编译参数选择多平台编译工具链中对应的工具链进行编译以生成目标文件。如图2所示,步骤a3对项目工程编译的过程具体包括如下步骤
步骤bl、根据项目工程顶层目录中的编译文件中的项目工程的模块清单选择一个未编译的一级模块;
步骤b2、判断选中的一级模块是否存在对应的二级模块,如存在对应的二级模块,则根据选定的一级模块中记录的对应的二级模块的名称逐一编译选定的一级模块对应的二级模块,如不存在对应的二级模块则对选定的一级模块进行编译;
步骤b3、重复步骤bl至步骤b2直至项目工程的所有模块均被编译;
在对模块进行编译之前,需要为每个模块生成对应的编译文件并存放于用于存放对应模块的目录中,根据一级模块和二级模块的不同,分为一级模块编译文件和二级模块编译文件。其中二级模块编译文件是最终的模块编译文件,它会对该最终模块中所有源文件进行编译,并生成对应的模块库文件,而对于一级模块编译文件,需要根据对模块类型进行判断,如果该一级模块不包含有任何对应的二级模块,即该模块是作为最终模块存在的,则对该模块进行编译,并生成模块库文件即可;如果该一级模块包含有二级模块,则需要根据其二级模块的结构来逐一将执行权交给其二级模块,并分别编译并生成模块库文件。因此,在为工程各个模块生成编译文件时,只需要根据一级模块目录或者二级模块目录来相应生成一级模块文件与二级模块文件即可。在对项目工程中包含的一级模块和二级模块在内的所有模块生成了编译文件之后,从项目工程顶层的编译文件开始,根据各模块目录结构,对项目工程中所有模块进行遍历,每到一个模块,都会判断该模块是否为最终模块,如果是,则编译该模块,并生成该模块相对应的库文件;如果不是最终模块,则逐一进入该模块目录中所有二级模块进行编译,并生成该模块相对应的库文件。步骤b4、根据项目工程顶层目录中的编译文件中的编译参数对应的目标操作系统判断是否要对编译完成的项目工程的模块的库文件进行链接;步骤b5、对不需要链接的目标操作系统生成可执行文件,对需要链接的目标操作系统输出项目工程经编译的模块库文件。对项目工程中所有模块编译完成并生成相对应的模块库文件之后,根据嵌入式操作系统平台的不同,分别对整个项目工程的模块库文件进行处理,对于不需要和嵌入式操作系统编译链接的,如嵌入式Linux操作系统,只需要将模块库文件链接生成最终的可执行应用程序即可;而对于需要和嵌入式操作系统编译链接的,项目工程编译最终的目标文件就是项目工程各个模块的库文件,用户只需要将该项目工程的模块库文件输出给相对应的目标操作系统作为外部引用库文件即可作为二次开发。特别地,如果该项目工程的目标操作系统是开源的,如uC/OS-II嵌入式操作系统,则只需要将该操作系统源代码作为一个或多个模块存在于开发环境中,最终生成的模块库文件,包括所用操作系统相应库文件,一起编译链接生成最终的可执行镜像文件。
所有的项目工程配置维护管理都在开发环境顶层的编译文件中修改操作即可,不需要操作其它的配置文件,而对系统组件及其参数配置管理也是相对简便的。项目工程中的模块目录结构仅由开发环境顶层的编译文件中的参数来决定,即便模块中出现其它目录也是不被识别的。为了方便调试,可以进入各个模块所在的目录,单独对模块进行编译,如果进入一级模块目录进行编译,则开发工具编译调试该一级模块对应的所有二级模块,如果不存在对应的二级模块,则仅编译调试该一级模块,如果进入了二级模块目录,则只对指定的单个二级模块进行编译调试。以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。
权利要求
1.一种用于嵌入式系统软件开发工具的实现方法,其特征在于,具体包括如下步骤 步骤al、将一多平台编译工具链与所述开发工具连接,以对应不同操作系统平台和不同中央处理器的编译参数作为所述多平台编译工具链中对应工具链的入口; 步骤a2、所述开发工具为待开发的项目工程建立带有对应目标操作系统和目标中央处理器的编译参数以及统一的目录结构并包含有所述项目工程所需文件的独立的开发环境; 步骤a3、对项目工程进行编译时根据所述开发环境中的编译参数选择所述多平台编译工具链中对应的工具链进行编译以生成目标文件。
2.如权利要求I所述用于嵌入式系统软件开发工具的实现方法,其特征在于,所述开发环境包括用于存放所述项目工程用到的头文件目录、用于存放编译过程中生成的中间目标文件和所述项目工程的各个模块对应的静态库文件的工程文件目录、用于存放所述项目工程需要用到的外部库文件的库文件目录以及用于存放所述项目工程的各模块的模块目录结构。
3.如权利要求I所述用于嵌入式系统软件开发工具的实现方法,其特征在于,所述开发环境包括与目标系统对应的系统组件及所述系统组件的配置参数,所述系统组件及所述系统组件的配置参数分别以头文件的形式存放于所述开发环境的顶层目录中。
4.如权利要求I所述用于嵌入式系统软件开发工具的实现方法,其特征在于,所述开发环境包括所述项目工程对应的应用程序的入口初始化函数,所述入口初始化函数以应用程序初始化源文件的形式存放于所述开发环境的顶层目录中。
5.如权利要求2所述用于嵌入式系统软件开发工具的实现方法,其特征在于,所述编译参数以处于所述开发环境目录结构顶层的编译文件的形式存放于所述开发环境中,所述编译文件中还存放有所述项目工程模块清单、各模块的从属关系、以及可通过所述开发工具改变的与所述多平台编译工具链中各编译工具对应的编译选项所需的变量。
6.如权利要求5所述用于嵌入式系统软件开发工具的实现方法,其特征在于,所述模块目录结构包括用于存放单个一级模块的一级模块目录和用于存放单个二级模块的二级模块目录,所述一级模块若存在对应的二级模块则所述一级模块中仅存放所述二级模块的名称且该一级模块目录中包含用于存放对应的所述二级模块的二级模块目录。
7.如权利要求5所述用于嵌入式系统软件开发工具的实现方法,其特征在于,所述步骤a3对所述项目工程编译的过程具体包括如下步骤 步骤bl、根据所述项目工程顶层目录中的编译文件中的所述项目工程的模块清单选择一个未编译的一级模块; 步骤b2、判断选中的所述一级模块是否存在对应的二级模块,如存在对应的二级模块,则根据选定的所述一级模块中记录的对应的二级模块的名称逐一编译选定的所述一级模块对应的二级模块,如不存在对应的二级模块则对选定的所述一级模块进行编译; 步骤b3、重复步骤bl至步骤b2直至所述项目工程的所有模块均被编译; 步骤b4、根据所述项目工程顶层目录中的编译文件中的编译参数对应的目标操作系统判断是否要对编译完成的所述项目工程的模块的库文件进行链接; 步骤b5、对不需要链接的目标操作系统生成可执行文件,对需要链接的目标操作系统输出所述项目工程经编译的模块库文件。
8.如权利要求6所述用于嵌入式系统软件开发工具的实现方法,其特征在于,所述开发工具根据所述开发环境顶层目录中的编译文件中的模块清单为每个所述模块生成对应的编译文件并存放于用于存放对应模块的目录中。
全文摘要
本发明公开了一种用于嵌入式系统软件开发工具的实现方法,具体包括如下步骤步骤a1、将一多平台编译工具链与开发工具连接,以对应不同操作系统平台和不同中央处理器的编译参数作为多平台编译工具链中对应工具链的入口;步骤a2、开发工具为待开发的项目工程建立带有对应目标操作系统和目标中央处理器的编译参数以及统一的目录结构并包含有项目工程所需文件的独立的开发环境;步骤a3、对项目工程进行编译时根据开发环境中的编译参数选择多平台编译工具链中对应的工具链进行编译以生成目标文件。具体有益效果是实现复杂且可定制的多模块开发模式,并可以实现不同操作系统和处理器跨平台的开发编译,从而提高开发效率,降低错误率。
文档编号G06F9/44GK102830981SQ20121033481
公开日2012年12月19日 申请日期2012年9月12日 优先权日2012年9月12日
发明者陈辉, 刘启林, 陈曦 申请人:上海斐讯数据通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1