一种模块化嵌入式软件架构及其定制方法、定制系统
技术领域
本发明涉及一种嵌入式软件技术领域,特别涉及一种模块化嵌入式软件架构及其定制方法、定制系统。
背景技术
随着移动嵌入式设备CPU(中央处理器)芯片处理能力不断的提高以及应用场景的增多,嵌入式设备上运行的应用程序需要能够满足多样的需求。然而,嵌入式设备种类繁多、软硬件环境自成体系、规范和标准不统一等特点,造成开发和部署成本高,因此,开发具有可扩展、可重用、可移植的嵌入式软件是十分有必要的。
早期的嵌入式软件基于特定的需求和操作系统开发,虽然能够充分发挥操作系统的性能,但是嵌入式软件对操作系统和底层硬件的依赖性大,开发人员不仅需要了解大量的底层软硬件知识,而且嵌入式软件代码的可移植性差。
为了满足嵌入式代码能够方便的移植到不同的操作系统,一种方式是通过提取中间层提高嵌入式软件代码的共享程度,CN103150162B介绍了一种在软件模块和操作系统适配层之间提供一个模块管理与调度的中间层,将各个模块之间通信和模块调度接管过来,将模块做成组件独立出来,降低模块之间的耦合;另一种方式是通过提供开发平台,例如CN102779047B提出了一种嵌入式软件支撑平台,中间件技术和虚拟机原理,通过统一的操作系统适配实现系统屏蔽,通过构建公共模块为上层应用程序提供支撑功能。通过使用提取中间层和提供开发平台的技术尽管提升了嵌入式软件的可移植性和开发效率,但是仅仅支持上层应用的单一方式执行,缺乏针对不同应用执行的特点提供差异化的支持。
为提供嵌入式软件的可扩展和可重用,一种较常用的技术是微内核插件化架构技术,这种架构技术基于插件实现应用的业务逻辑,解耦组件之间的关系,当运行一个应用程序时,只需把选定的系统服务加载到系统中即可。该架构技术有比较成熟的实现,例如基于Java语言的eclipse架构;CN102141922B提出了一种在C++语言环境中建立的标准化插件系统,通过微内核依据插件资源配置文件加载所需插件,并在插件资源配置文件判断插件不是最新版本时进行插件获取并更新;CN103092645B提供了一种基于微内核技术的地理空间信息应用系统的实现方法,通过将功能服务分解为原子粒度的功能模块,以微内核技术构建资源加载管理器,从而实现高效的、可扩展的地理空间应用系统。另一种技术是组件化技术,例如标准的面向对象应用程序体系规范CORBA,该体系结构解决分布式处理环境中,硬件和软件系统互连的一种解决方案,软件由组件组成,并通过组件间相互通信实现软件功能,但是面向过程如C应用则不符合。但是,微内核插件化架构技术和组件化技术仅通过进程间通信技术实现组件间交互,不适用于资源受限的嵌入式设备,并且各组件的运行方式已定,用户不能够根据具体应用进行调整提高系统的性能;
为了方便用户的配置和使用,一些研究者也提出了一些软件配置方法,包括:(1)软件设计为可配置的,用户手动配置并编译,系统配置将不同功能、版本的构件选装成满足需要的软件,最终通过编译链接生成系统可执行映像,例如采用直接修改Makefile文件的方式,但这种方式操作复杂,对用户技术背景要求高,并且调整软件部分功能需要完全重新编译整个软件;(2)用户通过执行一些命令达到软件功能模块的替换与更新,但这种方式需要用户输入繁琐的命令才能完成安装、卸载功能,不方便用户记忆与操作;(3)软件功能以插件的方式提供,用户通过可视化界面选择部分需要的功能模块然后自动定制,此方案虽然降低了用户的记忆需要,但是需要用户对定制软件需要的功能有较清晰的认识,并且在定制软件包含模块数量过多的时候可能造成定制软件功能不完善,影响软件正常运行。
上述技术方式均采用功能模块拆分以实现可重用,但是缺乏对功能模块运行方式的考虑,而不同的功能模块的运行方式具有不同的特点,合理利用可以得到更高的运行性能。因此,急需一种支持多种功能模块运行方式的嵌入式软件架构以及为用户方便使用的基于任务的嵌入式软件架构定制系统。
发明内容
有鉴于此,本申请实施例提供一种模块化嵌入式软件架构及其定制方法、定制系统,以解决目前嵌入式软件架构对软件模块执行特性支持不充分、软件定制不方便等技术问题,实现支持多种功能模块的运行方式以及方便用户使用。
根据本公开的一方面,提供了一种模块化嵌入式软件结构,所述模块化嵌入式软件架构包括:操作系统适配层、核心模块服务层和应用功能模块层;
所述操作系统适配层,构建在操作系统之上,用于向所述核心模块服务层提供服务接口;
所述核心模块服务层,构建在所述操作系统适配层之上,用于管理所述应用功能模块层的不同模块的生命周期、并提供所述应用功能模块层的不同模块之间的通信,其中,所述应用功能模块层构建在核心模块服务层之上。
在一种可能的实现方式中,所述应用功能模块的不同模块包括资源配置文件,能够为所述模块化嵌入式软件架构提供不同的功能。
在一种可能的实现方式中,所述资源配置文件包括:模块名称、模块类型、模块功能、模块接口、模块版本、模块资源信息和模块依赖的模块和接口集合。
在一种可能的实现方式中,所述核心模块服务层管理所述应用功能模块层的不同模块的生命周期,包括:
所述核心模块服务层解析所述资源配置文件,根据解析的所述资源配置文件以动态链接的方式加载相应的所述应用功能模块层的模块。
在一种可能的实现方式中,所述模块类型包括库函数和线程;
当所述模块类型为库函数时,通过所述模块接口与所述模块依赖的模块进行通信;
当所述模块类型为线程时,通过进程间通讯方式与所述同类型的其它模块进行通信。
在一种可能的实现方式中,所述模块类型根据所述模块被依赖的模块的数量进行设置;
当所述模块被单个模块所依赖时,设置所述模块类型为库函数;
当所述模块被多个模块所依赖时,设置所述模块类型为线程。
在一种可能的实现方式中,所述操作系统适配层封装的服务接口包括:系统任务、消息队列、信号量、互斥锁、动态链接、网络、文件系统。
根据本公开的另一方面,提出了一种模块化嵌入式软件架构定制方法,所述模块化嵌入式软件架构为上述的模块化嵌入式软件架构,具体定制方法包括:
S1:选择所述模块化嵌入式软件架构的系统任务信息;
S2:根据所述系统任务信息,选择或输入所述模块化嵌入式软件架构的操作系统和所述应用功能模块层的不同模块的资源配置信息;
S3:根据所述不同模块的资源配置信息生成所述模块化嵌入式软件架构运行的核心可执行文件、模块目标代码文件和启动资源配置文件;
S4:将所述模块目标代码文件和启动资源配置文件传送到所述模块化嵌入式软件架构。
根据本公开的另一个方面,本公开提出了一种模块化嵌入式软件架构定制系统,所述模块化嵌入式软件架构为上述的模块化嵌入式软件架构,用于执行上述的模块化嵌入式软件架构定制方法,所述定制系统包括:
用户界面,用于选择系统任务信息及平台信息;
任务解析器,用于根据所述系统任务信息解析所述系统任务执行时所需的所述应用功能模块的模块;
文件解析器,解析所述应用功能模块和生成资源配置文件;
目标代码生成器,使用交叉编译工具链根据所述资源配置文件将所述应用功能模块的模块代码编译为模块目标代码文件和启动资源配置文件。
通过所述操作系统适配层构建在操作系统之上,用于向所述核心模块服务层提供服务接口;所述核心模块服务层构建在所述操作系统适配层之上,用于管理所述应用功能模块层的不同模块的生命周期、并提供所述应用功能模块层的不同模块之间的通信,其中,所述应用功能模块层构建在核心模块服务层之上,能够解决目前嵌入式软件架构对软件模块执行特性支持不充分、软件定制不方便等技术问题,实现支持多种功能模块的运行方式以及方便用户根据嵌入式设备的功能模块运行方式的特点选择不同的功能模块实现方式以得到更适合的软件实现。
附图说明
图1示出了根据本申请一实施例的模块化嵌入式软件架构的结构示意图;
图2示出了根据本申请一实施例的模块化嵌入式软件架构定制方法的流程图;
图3示出了根据本申请一实施例的模块化嵌入式软件架构定制系统的结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请实施例作进一步详细的说明。
功能模块的运行主要存在两种方式:(1)功能模块可以以独立的线程的方式运行,功能模块可以维护其运行状态,不同功能模块之间通过进程间通信的方式进行通信,当该功能模块提供的功能被多个不同功能模块需要时,以独立线程的方式运行可以实现结果共享,能降低计算开销;(2)功能模块可以被已有线程以库函数接口调用的方式运行,该运行方式具有更低的开销,当仅有一个功能模块需要修改时,通过库函数接口调用的方式能够实现低开销和低延迟。
图1示出了根据本申请一实施例的模块化嵌入式软件架构的结构示意图。模块化嵌入式软件架构能够应用于各种嵌入式设备中。
如图1所示,模块化嵌入式软件架构是一种基于分层的软件架构,包括:操作系统适配层、核心模块服务层和应用功能模块层。其中,操作系统适配层可以构建在嵌入式设备的操作系统的抽象层上,核心模块服务层可以构建在操作系统适配层的抽象层上,应用功能模块层可以构建在核心模块服务层的抽象层上。
操作系统适配层封装了系统任务、消息队列、信号量、互斥锁、动态链接、网络、文件系统等服务接口,操作系统适配层通过服务接口能够为核心模块服务层提供与操作系统无关的服务或功能。
核心模块服务层可以包括模块加卸载与生命周期管理模块、通信管理模块和其他核心模块,能够为应用功能模块层的不同模块之间提供通信支持,并且,通过在该模块化嵌入式软件架构运行过程中通过加载或卸载应用功能模块能够管理应用功能模块层的不同模块的生命周期。
通过所述操作系统适配层构建在操作系统之上,用于向所述核心模块服务层提供服务接口;所述核心模块服务层构建在所述操作系统适配层之上,用于管理所述应用功能模块层的不同模块的生命周期、并提供所述应用功能模块层的不同模块之间的通信,其中,所述应用功能模块层构建在核心模块服务层之上,能够解决目前嵌入式软件架构对软件模块执行特性支持不充分、软件定制不方便等技术问题,实现支持多种功能模块的运行方式以及方便用户根据嵌入式设备的功能模块运行方式的特点选择不同的功能模块实现方式以得到更适合的软件实现。
模块化嵌入式软件架构的业务逻辑是基于应用功能模块层的不同模块的组合实现的。功能模块可以是能够提供原子的或特定的功能的单位,由开发人员根据特定的规范进行编写。同样功能的功能模块可以被实现为多种规范,以方便模块化嵌入式软件架构定制系统自动选择具体应用的功能模块。
在一种可能的实现方式中,不同模块设置有相应的模块资源配置文件,资源配置文件中包括有模块名称、模块类型、模块功能、模块接口、模块版本、模块所需要的资源信息和模块依赖的模块和接口集合。其中,模块所需要的资源信息至少包括资源文件名称,模块类型可以包括库函数和线程。
在启动模块化嵌入式软件架构运行时,核心模块服务层启动模块资源配置文件,根据模块资源配置文件的信息进行解析,根据解析的模块资源配置文件的信息加载相应的功能模块,其中,应用功能模块层的不同模块均可以以动态链接的方式由核心模块服务层进行加载,能够实现在模块化嵌入式软件架构运行中时支持不同模块的加载和卸载。
核心模块服务层在加载相应的功能模块之前,还会根据模块资源配置信息,判断不同模块被其它模块依赖的情况,然后根据被其它模块依赖的次数设置该功能模块的模块类型。
在一种可能的实现方式中,当所述模块被单个模块所依赖时,设置所述模块类型为库函数;当所述模块被多个模块所依赖时,设置所述模块类型为线程。且当所述模块类型为库函数时,可以通过模块接口与该模块依赖的模块进行通信,以获取需要处理的功能任务;当所述模块类型为线程时,通过进程间通讯方式(核心模块服务层封装的进程间通信接口)与所述同类型的其它模块进行通信,能够基于发布/订阅的机制实现解耦合。
通过上述模块化嵌入式软件架构能够支持多种不同模块之间的运行方式,通过下列方法可以实现模块化嵌入式软件架构的定制化。
图2示出了根据本申请一实施例的模块化嵌入式软件架构定制方法的流程图。图2中的模块化嵌入式软件架构为上述的模块化嵌入式软件架构,应用于各种嵌入式设备,所述定制方法可以包括:
S1:选择所述模块化嵌入式软件架构的系统任务信息。
用户可以通过可视化的用户界面选择运行于嵌入式设备的模块化嵌入式软件架构的所需完成的系统任务,任务解析器分解选择所需完成的系统任务以获得不可再分解的原子任务集合,结合原子任务集合获得对应的能力需求集合,结合能力需求集合解析得到对应的模块化嵌入式软件架构的不同软件功能的功能模块集合,进而得到选择的所需完成的系统任务信息。
S2:根据所述系统任务信息,选择或输入所述模块化嵌入式软件架构的操作系统和所述应用功能模块层的不同模块的资源配置信息。
根据步骤S1选择的模块化嵌入式软件架构的所需完成的系统任务信息,用户可以通过可视化的用户界面选择运行于嵌入式设备的模块化嵌入式软件架构的所需完成的操作系统、硬件信息和应用功能模块层的不同模块的资源配置信息。
S3:根据所述不同模块的资源配置信息生成所述模块化嵌入式软件架构运行的核心可执行文件、模块目标代码文件和启动资源配置文件。
根据步骤S1中的功能模块集合中各功能模块之间的关系,文件解析器选择功能模块的不同实现代码,根据各功能模块的实现代码选择生成编译配置文件,使用交叉编译工具链编译为符合特定嵌入式设备的模块目标代码文件。
根据步骤2中的不同模块的资源配置信息,如果该模块的资源配置信息被依赖的功能模块为多个时,将该功能模块的类型设置为独立的线程;如果该模块的资源配置信息被依赖的功能模块为1个时,将该功能模块的类型设置为提供接口的库函数;然后根据各功能模块的资源配置信息生成启动运行所述模块化嵌入式软件架构的各功能模块的启动资源配置文件。
S4:将所述模块目标代码文件和启动资源配置文件传送到所述模块化嵌入式软件架构。
本公开的模块化嵌入式软件架构定制方法,通过选择所述模块化嵌入式软件架构的系统任务信息;根据所述系统任务信息,选择或输入所述模块化嵌入式软件架构的操作系统和所述应用功能模块层的不同模块的资源配置信息;根据所述不同模块的资源配置信息生成所述模块化嵌入式软件架构运行的核心可执行文件、模块目标代码文件和启动资源配置文件;将所述模块目标代码文件和启动资源配置文件传送到所述模块化嵌入式软件架构,能够方便用户定制嵌入式软件架构,实现支持多种功能模块的运行方式,以及方便用户根据嵌入式设备的功能模块运行方式的特点选择不同的功能模块实现方式以得到更适合的软件实现。
图3示出了根据本申请一实施例的模块化嵌入式软件架构定制系统的结构示意图,图3中的模块化嵌入式软件架构为上述的模块化嵌入式软件架构,应用于各种嵌入式设备。
基于任务的模块化嵌入式软件定制系统,用于根据用户选择的任务信息以及软件运行的平台信息,结合模块化嵌入式软件架构的各种软件功能模块代码的特点,定制得到符合任务功能需求的嵌入式模块化应用功能软件模块以及对应的模块资源配置文件。模块化嵌入式软件定制系统管理多种信息,包括已有的功能模块实现代码、创建的历史任务信息、现有能够提供的能力、多种嵌入式操作系统的平台屏蔽信息、不同平台支持的交叉编译工具等。
在一种可能的实现方式中,模块化嵌入式软件架构定制系统包括:
用户界面,用于选择系统任务信息及平台信息。用户可以通过用户界面(如图3中的用户任务选择界面)选择运行于嵌入式设备的模块化嵌入式软件架构的所需完成的系统任务信息以及平台信息(例如运行于嵌入式设备的模块化嵌入式软件架构的所需完成的操作系统和硬件信息)。
系统任务可以为用户需要实现的业务目的,对应于满足该任务的模块化嵌入式软件架构的应用功能模块层需要达到的能力集合。系统任务可以依据其包含各模块之间的关系设计层次化分解机制,能力可以为对应于各功能模块的集合,独立于模块化嵌入式软件架构的各功能模块的概念,系统任务的需求对应能力集合。
任务解析器,用于根据所述系统任务信息解析所述系统任务执行时所需的所述应用功能模块的模块。例如,任务解析器可以根据所述系统任务信息所对应的能力集合解析获得满足系统任务执行时所需的所述应用功能模块的软件功能模块需求。
文件解析器,解析所述应用功能模块和生成资源配置文件。例如,文件解析器解析执行所述应用功能模块的功能模块需求的系统任务所对应的能力集合,结合能力结合所对应的功能模块集合,分析功能模块集合特点,生成编译配置文件以及模块启动资源配置文件。
目标代码生成器,使用交叉编译工具链根据所述资源配置文件将所述应用功能模块的模块代码编译为模块目标代码文件和启动资源配置文件。
本公开的基于系统任务信息的模块化嵌入式软件架构定制系统,通过将系统任务与模块化嵌入式软件的功能模块集合建立关联,降低用户的技术需求、部署成本,提高应用效率。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。