CN116541066B - 软件系统构建方法、装置、设备及计算机可读存储介质 - Google Patents

软件系统构建方法、装置、设备及计算机可读存储介质 Download PDF

Info

Publication number
CN116541066B
CN116541066B CN202310699218.XA CN202310699218A CN116541066B CN 116541066 B CN116541066 B CN 116541066B CN 202310699218 A CN202310699218 A CN 202310699218A CN 116541066 B CN116541066 B CN 116541066B
Authority
CN
China
Prior art keywords
component
software
software system
hardware
target
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
CN202310699218.XA
Other languages
English (en)
Other versions
CN116541066A (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.)
Phytium Technology Co Ltd
Original Assignee
Phytium 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 Phytium Technology Co Ltd filed Critical Phytium Technology Co Ltd
Priority to CN202310699218.XA priority Critical patent/CN116541066B/zh
Publication of CN116541066A publication Critical patent/CN116541066A/zh
Application granted granted Critical
Publication of CN116541066B publication Critical patent/CN116541066B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提出一种软件系统构建方法、装置、设备及计算机可读存储介质,该方法包括:获取请求信息,所述请求信息包括待构建的软件系统所适用的硬件平台的配置信息;根据所述请求信息,从预设的组件资源中,确定出目标组件;所述组件资源包括适配不同硬件平台的硬件功能组件,所述目标组件包括第一目标组件,所述第一目标组件包括与所述硬件平台相适配的硬件组件;基于所述目标组件,构建得到软件系统。该方案能够针对不同的硬件平台配置,构建与之相适配的软件系统,从而提高了软件系统构建效率,以及提高了软件系统在不同硬件平台的可迁移性。

Description

软件系统构建方法、装置、设备及计算机可读存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种软件系统构建方法、装置、设备及计算机可读存储介质。
背景技术
嵌入式实时操作系统由硬件系统和软件系统构成,软件系统的构建通常需要适配硬件系统的配置,即,针对特定的硬件系统配置,需要设计与之相应的软件系统,从而构成完整的嵌入式实时操作系统。
硬件系统与软件系统的强耦合性使得软件系统的构建不能适用到不同的硬件环境,从而影响了软件系统在不同硬件环境的可迁移性。
发明内容
基于上述技术现状,本申请提出一种软件系统构建方法、装置、设备及计算机可读存储介质,至少能够使得嵌入式实时操作系统的软件系统的构建能够适用到不同的硬件环境,实现对适用于任意硬件环境的软件系统的构建。
为了实现上述技术目的,本申请具体提出如下技术方案:
第一方面,本申请提出一种软件系统构建方法,包括:获取请求信息,所述请求信息包括待构建的软件系统所适用的硬件平台的配置信息;根据所述请求信息,从预设的组件资源中,确定出目标组件;所述组件资源包括适配不同硬件平台的硬件功能组件,所述目标组件包括第一目标组件,所述第一目标组件包括与所述硬件平台相适配的硬件组件;基于所述目标组件,构建得到软件系统。
第二方面,本申请提出一种软件系统构建装置,包括:信息获取单元,用于获取请求信息,所述请求信息包括待构建的软件系统所适用的硬件平台的配置信息;资源配置单元,用于根据所述请求信息,从预设的组件资源中,确定出目标组件,所述组件资源包括适配不同硬件平台的硬件功能组件;所述目标组件包括第一目标组件,所述第一目标组件是与所述硬件平台相适配的硬件组件;系统构建单元,用于基于所述目标组件,构建得到软件系统。
第三方面,本申请提出一种软件系统构建设备,包括:存储器和处理器;所述存储器与所述处理器连接,用于存储程序;所述处理器,用于通过运行所述存储器中的程序,实现上述的软件系统构建方法。
第四方面,本申请提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时,实现上述的软件系统构建方法。
基于上述的第一方面至第四方面的任意一项,本申请提出的软件系统构建方案,预先设置了由适配不同硬件平台的硬件功能组件所构成的组件资源,在此基础上,在构建软件系统时,从组件资源中选出与待构建的软件系统所适用的硬件平台相适配的组件,然后基于选出的组件构建得到软件系统。该方案能够针对不同的硬件平台配置,构建与之相适配的软件系统,从而提高了软件系统构建效率,以及提高了软件系统在不同硬件平台的可迁移性。
在一种实现方式中,所述请求信息还包括所述待构建的软件系统所适用的系统应用的配置信息;所述组件资源还包括具有不同软件功能的软件功能组件;所述目标组件还包括第二目标组件,所述第二目标组件包括与所述系统应用相适配的软件组件。基于该实现方式,还可以对待构建的软件系统的软件功能进行灵活调整,从而能够适应对不同软件功能的待构建软件系统的构建。
在一种实现方式中,所述硬件功能组件,包括硬件平台功能组件和外设驱动功能组件;所述硬件平台功能组件,包括CPU体系结构组件、CPU执行模式组件、片上系统组件和开发板组件;所述外设驱动功能组件,包括接口组件、中断管理组件、内存管理组件、缓存管理组件和通用定时器组件。基于该实现方式,对组件资源中的硬件组件进行了精细划分,从而更加有利于对细分硬件功能组件的重复组合应用,提高了构建软件系统所适配的硬件平台的丰富性。
在一种实现方式中,所述接口组件,包括USB接口组件、串口组件、网口组件、串行外设接口组件。基于该实现方式,实现了对各种接口的组件划分,从而有利于对细分接口组件的重复组合应用,能够实现更多的接口组合情况,提高了构建软件系统所适配的硬件平台的接口组合丰富性。
在一种实现方式中,所述软件功能组件,包括网络协议栈组件、控制台终端组件、文件系统组件、对称多核组件、异构多核组件。基于该实现方式,实现了对各种软件功能的划分,从而有利于对软件功能组件进行更加灵活地组合和复用,提高了构建软件系统所适配的软件功能的丰富性。
在一种实现方式中,基于所述目标组件,构建得到软件系统,包括:将所述第一目标组件与所述第二目标组件进行适配及组合,得到适配所述硬件平台的目标功能组件;基于所述目标功能组件,构建得到软件系统。基于该实现方式,实现了硬件组件和软件组件的功能适配,从而能够保证构建出的软件系统的功能不会受到硬件平台或软件组件差异的影响。
在一种实现方式中,所述方法还包括:根据所述请求信息中的硬件平台的配置信息,以及所述组件资源中可用的硬件功能组件,确定待新增的硬件功能组件;获取所述待新增的硬件功能组件,并存储至所述组件资源。基于该实现方式,可以使得用户自主添加组件资源,进一步增强该软件系统构建方法对各种硬件平台的兼容性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种嵌入式实时操作系统的结构示意图。
图2为本申请实施例提供的一种嵌入式软件的结构示意图。
图3为本申请实施例提供的一种网络系统的示意图。
图4为本申请实施例提供的另一种嵌入式软件的结构示意图。
图5为本申请实施例提供的一种软件系统构建方法的流程示意图。
图6为本申请实施例提供的另一种嵌入式软件的结构示意图。
图7为本申请实施例提供的另一种软件系统构建方法的流程示意图。
图8为本申请实施例提供的另一种嵌入式软件的结构示意图。
图9为本申请实施例提供的另一种软件系统构建方法的流程示意图。
图10为本申请实施例提供的另一种嵌入式软件的结构示意图。
图11为本申请实施例提供的另一种软件系统构建方法的流程示意图。
图12为本申请实施例提供的另一种嵌入式软件的结构示意图。
图13为本申请实施例提供的另一种软件系统构建方法的流程示意图。
图14为本申请实施例提供的另一种嵌入式软件的结构示意图。
图15为本申请实施例提供的另一种软件系统构建方法的流程示意图。
图16为本申请实施例提供的另一种软件系统构建方法的流程示意图。
图17为本申请实施例提供的一种软件系统构建设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先,本申请实施例对嵌入式实时操作系统进行介绍。
现有的嵌入式实时操作系统一般包括硬件环境和软件环境两部分,即包括硬件环境,以及运行于该硬件环境的软件系统,其总体架构框图如图1所示。
在硬件环境中,控制单元用于发送控制指令,实现控制微处理器的工作过程,控制单元与多组寄存器结合构成处理器内核,在存储器的支持下,实现计算控制和数据存储等功能;外设控制器(如图1中的1外设控制器、2外设控制器、3外设控制器、4外设控制器、5外设控制器、6外设控制器),主要支持控制单元与特定类型外设的数据交换,例如与图1中的1输入输出外设(网口)、2输入外设(传感器)、3输入外设(键盘)、1输出外设(闪存)、2输出外设(串口)、3输出外设(屏幕)的数据交换,实现具体数据通信协议。一般实现中,控制单元和寄存器集成在微处理器中,微处理器和片上存储器以及外设控制器集成封装在一个片上系统(Soc)中;外设与片上系统的外设控制器相连,其中一部分外设会以板载的形式集成在印刷电路板(PCB)上,例如网口、串口等接口,以及闪存等固定在电路板的存储介质,另一部分外设需要在使用时通过特定的接口和转接线进行连接,例如键盘鼠标等输入设备,LCD屏幕等输出设备。
在软件环境中,编译链将高级语言翻译成处理器内核可以识别的指令;处理器抽象层封装通过软件访问处理器功能的一般方法;硬件驱动封装通过软件配置特定外设控制器功能的一般方法,功能组件提供通用的软件方法实现;嵌入式实时系统内核是软件环境的核心,完成硬件资源的使用管理,如处理器时间片的分配,存储空间的分配和释放等;嵌入式实时应用面向特定应用场景开发,完成用户需要的功能。
当前嵌入式实时操作系统设计开发领域面临一系列挑战,一方面,硬件平台种类多,差异明显,迭代速度快,和通用软件系统不同,嵌入式实时操作系统的硬件环境专用性程度高,因此,软件系统往往需要针对硬件环境专门开发,导致每当硬件平台更换或者迭代更新时,嵌入式实时操作系统的软件也需要随之重新开发;另一方面,嵌入式实时操作系统应用场景碎片化程度高,为了追求功能紧凑,系统往往需要针对特定的应用需求对硬件裁剪,软件也需要随之选择不同的实时操作系统内核及功能组件,由此,相同或者类似的功能需要在不同的应用场景中重复实现。上述两方面的问题带来了大量膨胀的软件开发、软件测试和后续保障工作,造成大量的人力、经费资源浪费。
另外,软件系统的构建需要借助编译链实现,而且,针对不同的嵌入式实时操作系统的硬件环境配置,需要通过与之对应的编译链实现嵌入式实时操作系统的软件系统的构建。
可见,在构建嵌入式实时操作系统的软件系统时,所使用的编译链工具是与嵌入式实时操作系统的硬件环境相耦合的,这种耦合关系使得当软件系统迁移到不同的硬件平台时,需要开发人员重新编写编译链工具进行软件系统的构建,这也严重影响软件系统在不同硬件平台迁移应用的场景下的软件系统构建效率。
针对上述技术现状,本申请发明人经过研究发现,不同嵌入式实时操作系统的硬件环境虽然存在明显差异,但是处理器内核、外设控制器等实现和访问方法相似性高,硬件提供的功能特性也基本类似,存在归并同类功能实现的可能;同时,不同嵌入式实时内核的实现和接口虽然存在明显差异,但是实时内核提供的功能特性基本相似,也可以功能合并。
基于上述研究发现,本申请发明人创新提出了一种嵌入式软件,该嵌入式软件能够用于构建嵌入式实时操作系统的软件系统,并且,能够用于构建适用于任意硬件环境的软件系统。
图2示出了本申请实施例提出的嵌入式软件的系统架构,参见图2,该嵌入式软件包括构建工具层、硬件平台层、外设驱动层、功能组件层、功能适配层、实时操作系统层和嵌入式应用层。
其中,构建工具层提供交互配置工具、交叉编译链和函数库接口。交互配置工具为用户提供硬件平台及其参数的配置接口;交叉编译链工具用于支持不同硬件平台的执行镜像编译,作为整个开发装置的基础;函数库接口用于调用标准函数库或函数库中的函数。相比现有技术,构建工具层的设置可以允许用户配置不同硬件环境参数,支持更多的定制化需求。
硬件平台层通过硬件平台的基础支持分层,通过分层设计将对硬件平台的支持拆分成CPU体系结构的支持、CPU执行模式的支持、Soc(片上系统)的支持以及开发板的支持,相比现有技术,分层设计后,可以充分归并不同硬件环境的同类功能。
外设驱动层提供各类硬件外设功能的支持,通过模块化设计将硬件外设功能的支持作为一个功能组件给不同硬件平台使用,屏蔽硬件实现和参数标定差异,相比现有技术,外设驱动模块化实现后,能够与具体的硬件环境解耦。
功能组件层,提供各类基础软件功能的支持,将基础软件功能和硬件平台、外设驱动相结合,向上提供可裁剪可配置的通用基础软件功能,相比现有技术,功能组件可以自由裁剪,从而可以适应硬件环境的差异和应用场景的需要。
功能适配层主要用于实现功能组件和硬件平台的适配,主要的目标是屏蔽硬件实现的差异,为上层提供一致的功能。
实时操作系统层,提供多种实时操作系统内核的支持,将不同的实时操作系统内核功能用统一的接口表出,向上提供统一的系统功能实现接口,相比现有技术,通过实时操作系统适配层和实时操作系统接口层,使得实时操作系统可以适应硬件环境的差异,并根据应用场景的需要替换成不同的实时内核。
嵌入式应用层,面向特定应用场景实现功能,由于应用层以下的组件对不同硬件平台、不同操作系统内核进行了适配和封装,相比现有技术,理论上,在硬件功能支持的前提下,通过更换硬件配置后,嵌入式实时应用可以实现不同的硬件环境中进行迁移。
图2所示的嵌入式软件具有如下特点:
一、对硬件平台进行逐层解耦和适配,从CPU/SoC体系结构,外设驱动支持到操作系统适配,采用逐层适配的方式组织,尽可能复用了硬件组件,可以实现不同硬件组件的适配组合,从而实现对各种硬件环境的适配和支持,后续如果需要支持新的硬件只需要实现差异组件即可。
二、可以适配多种实时操作系统,在实时操作系统和外设驱动及硬件平台之间,加入实时操作系统适配层,用于对接不同硬件平台,在实时操作系统和应用层之间,加入实时操作系统接口层,完全屏蔽不同操作系统和硬件平台的差异,通过统一的接口支持任务调度、内存管理、外设管理等核心功能,方便应用层调用,从而实现嵌入式应用的可移植性,方便根据应用场景选择合适的实时操作系统内核。
三、系统支持高度灵活可配置,支持针对不同硬件环境和应用场景,配置和裁剪软件组件,指定系统运行的硬件平台和运行的实时操作系统内核,选择需要的外设组件,修改系统的资源分配和地址等,方便定制嵌入式实时系统,配置系统组件,选择系统功能等。
四、提供多种交叉编译链工具和标准函数库支持,对应任意硬件环境,均可以从构建工具层选择与硬件环境相适配的编译链工具和标准函数库。并且支持新增编译链工具和标准函数库,从而能够支持适配任意硬件环境的软件系统构建。
基于上述的嵌入式软件,可以通过一套嵌入式软件,构建适配不同硬件平台、不同操作系统内核以及不同编译链和函数库的软件系统,从而使得软件系统的构建更加高效、便捷,能够摆脱硬件平台、操作系统内核以及编译链和函数库对软件系统构建的束缚。
本申请实施例提出新的软件系统构建方案,使得软件系统构建能够兼容不同硬件平台、不同操作系统内核以及兼容不同的编译链和函数库。
在对具体的软件系统构建方案进行介绍前,首先对于方案应用场景进行示例性介绍。
作为一种示例,本申请实施例提出的软件系统构建方案,能够适用于处理器、计算机、智能设备等具备数据处理能力的硬件装置中。图2所示的嵌入式软件能够运行于处理器、计算机、智能设备等硬件装置中,用户通过该硬件装置向装置中运行的嵌入式软件输入软件系统构建请求,嵌入式软件通过执行本申请实施例提出的软件系统构建方案,即可实现软件系统的构建。
作为另一种示例,本申请实施例提出的软件系统构建方案,也可以应用于图3所示的网络系统。在该网络系统中,上述的嵌入式软件运行于云侧设备,该云侧设备可以是云端服务器、云端处理器等,同时,在端侧设备上配置用于访问和调用云侧设备上运行的嵌入式软件的软件开发平台。云侧设备和端侧设备通过网络连接。用户在端侧设备登录软件开发平台,并且在平台上输入软件系统构建需求,云侧设备上的嵌入式软件基于用户在平台上输入的软件系统构建需求,通过执行本申请实施例提出的软件系统构建方案,能够构建得到符合用户需求的软件系统。
下面,对本申请实施例提出的新的软件系统构建方案分别进行介绍。
一、兼容不同硬件平台的软件系统构建方案
本申请实施例首先提出一种能够兼容不同硬件平台的软件系统构建方法,该方法可通过图2所示的嵌入式软件实现。作为一种可选的执行方式,本申请实施例提出如图4所示的嵌入式软件,并通过该嵌入式软件实现兼容不同硬件平台的软件系统的构建。
参见图4所示,该嵌入式软件包括了图2所示的嵌入式软件中的用于支持不同硬件环境的组件资源。例如图4所示,该嵌入式软件包括构建工具层、硬件平台层、外设驱动层、功能组件层、功能适配层、实时操作系统层和嵌入式应用层。
其中,构建工具层主要提供交互配置工具,该交互配置工具为用户提供硬件平台及其参数的配置接口,使得用户可以通过交互配置工具配置不同硬件环境参数,支持更多的定制化需求。
硬件平台层、外设驱动层、功能组件层和功能适配层的具体结构和功能,可以参见图2所示的嵌入式软件的介绍。
实时操作系统层和嵌入式应用层,则用于提供嵌入式实时操作系统内核以及嵌入式实时应用。
本申请实施例提出应用于图4所示的嵌入式软件的软件系统构建方法,参见图4所示,在该嵌入式软件包含的组件资源中,包括硬件平台功能组件资源、软件功能组件资源和外设驱动功能组件资源。
其中,硬件平台功能组件资源通过对不同硬件平台进行分层模块化设计,并且对不同硬件平台的模块进行合并、整合之后得到的各个硬件组件。本申请实施例将硬件平台划分成CPU体系结构、CPU执行模式、SOC型号、开发板类型等多个层次,得到各层次对应的硬件平台功能组件。然后对不同硬件平台按上述层次划分的组件划分结果进行整合,作为硬件平台功能组件资源。则,在该硬件平台功能组件资源中,包括各种不同的CPU体系结构组件、CPU执行模式组件、片上系统组件和开发板组件。
除此之外,上述的硬件平台功能组件资源还可以包括其他的功能组件,并且支持用户添加或删减硬件功能组件。
可以理解,通过上述的硬件平台功能组件资源,可以组合出不同类型、不同配置的硬件平台,从而实现了对任意硬件平台的适配。
上述的软件功能组件资源,包括网络协议栈组件、控制台终端组件、文件系统组件、对称多核组件、异构多核组件。
其中,网络协议栈组件用于实现网络协议栈支持,即提供不同的网络协议栈功能;控制台终端组件用于实现控制台终端支持,即提供不同的控制台终端功能;文件系统组件用于实现文件系统支持,即提供不同的文件系统功能;对称多核组件用于支持实现对称多核功能,异构多核组件则用于支持实现异构多核功能。
除此之外,上述的软件功能组件资源还可以包括其他的功能组件,并且支持软件功能组件的添加和删减。
可以理解,通过上述的软件功能组件资源,可以组合出不同的应用功能,从而实现了对任意系统应用的适配。
上述的外设驱动功能组件资源,主要是用于驱动外部设备的驱动组件,比如包括接口驱动组件、中断管理组件、内存管理组件、缓存管理组件和通用定时器组件。
外设驱动层中包含的功能组件资源包括对各种接口的驱动管理组件。具体而言,外设驱动层提供的功能组件资源中的第一类功能组件是各类外设驱动功能组件,主要是用于驱动外部设备的驱动组件,包括控制USB控制器的驱动、串口驱动、中断控制器驱动、内存控制器驱动等。第二类功能组件是各类外设协议功能组件,主要用于实现外部设备的制通信协议,包括 USB 协议、中断管理组件、中断管理软件等;第三类功能组件是外设驱动功能组件和外设协议功能组件的接口组件,用于将特定外设驱动的功能和控制通信协议功能进行绑定。
中断管理组件,用于实现对中断功能的驱动和管理;内存管理组件用于实现对内存的管理和驱动;缓存管理组件用于对缓存进行管理;通用定时器组件用于实现对通用定时器的管理。
除此之外,上述的外设驱动功能组件还可以包括其他的驱动组件,并且可以允许用户对外设驱动功能组件进行添加或删减。
基于上述的外设驱动功能组件,可以实现对各种外设及外设功能的驱动和调用。
基于图4所示的嵌入式软件,参见图5所示,本申请实施例提出的软件系统构建方法包括:
S101、获取请求信息,所述请求信息包括待构建的软件系统所适用的硬件平台的配置信息。
具体的,用户可以通过交互配置工具输入软件系统构建请求信息,在该请求信息中,包括待构建的软件系统的配置参数信息,比如包括待构建的软件系统所适用的硬件平台的配置信息、待构建的软件系统所适用的系统应用的配置信息等。
其中,软件系统所适用的硬件平台的配置信息,包括但不限于是软件系统所适用的硬件平台的CPU体系结构、CPU执行模式、SOC型号、开发板类型等。
软件系统所适用的系统应用的配置信息,包括软件系统所适用的系统应用的软件功能组件,比如网络协议栈组件、控制台终端组件、文件系统组件、对称多核组件、异构多核组件等。
用户可以通过配置文件的方式编写软件系统构建请求信息,并将该配置文件通过交互配置工具输入嵌入式软件,嵌入式软件通过对该配置文件进行解析,即可获取待构建的软件系统的配置信息。
S102、根据所述请求信息,从预设的组件资源中,确定出目标组件。
其中,上述的预设的组件资源,包括如图4所示的嵌入式软件中的组件资源,具体包括硬件平台层中的适配不同硬件平台的各个硬件功能组件,还包括外设驱动层的各个驱动功能组件,以及包括功能组件层中具有不同软件功能的各个软件功能组件。
嵌入式软件在获取到用户上传的软件系统构建请求信息后,对该请求信息进行解析,从中获取待构建的软件系统的配置信息,然后基于该配置信息从上述组件资源中查找与该配置信息相适配的组件,作为目标组件。
其中,在该目标组件中,至少包括与待构建的软件系统所适用的硬件平台相适配的硬件组件,即第一目标组件。具体而言,当对用户上传的软件系统构建请求信息进行解析时,从中获取待构建的软件系统所适用的硬件平台的配置信息,然后基于该硬件平台配置信息,从上述的组件资源中,查找与该硬件平台配置信息相适配的硬件组件,作为第一目标组件。
示例性的,在用户上传的软件系统构建请求信息中,可以包含待构建的软件系统所适用的硬件平台的CPU体系结构、CPU执行模式、SOC型号、开发板类型等信息,则基于上述信息,从上述组件资源中,查找与请求信息中的CPU体系结构、CPU执行模式、SOC型号、开发板类型等相适配的硬件组件。
比如,假设待构建的软件系统适用的硬件平台为树莓派4B,体系结构为ARMv8,CPU执行模式包括AARCH32和AARCH64,SoC型号为BCM2711,开发板类型为树莓派,则,按照上述处理,嵌入式软件在获取到包含上述信息的请求信息后,从嵌入式软件的硬件平台层中,查找ARMv8组件、AARCH32和AARCH64的CPU执行模式组件、BCM2711组件、树莓派开发板组件,作为第一目标组件。可以理解,该第一目标组件的数量,可以为一个或多个,其具体数量与硬件平台配置项的数量相匹配,即,可以是一项硬件平台配置项对应一个第一目标组件。
S103、基于所述目标组件,构建得到软件系统。
在获取上述的目标组件后,即获取了能够适配待构建的软件系统所需的功能组件,基于这些功能组件,以及图4所示的功能适配层、实时操作系统层和嵌入式应用层,借助与目标组件向适配的交叉编译链,即可构建得到符合用户需求的软件系统。
其中,上述的实时操作系统层中的操作系统内核,以及嵌入式应用层中的实时应用,均可以是预设的指定操作系统内核和实时应用。
功能适配层,则实现了目标组件与实时应用之间的功能适配,使得软件功能的实现不受硬件平台配置的影响,也就使得任意指定的操作系统内核、实时应用能够适配不同的硬件平台配置。
通过上述介绍可见,本申请实施例提出的软件系统构建方法,预先设置了由适配不同硬件平台的硬件功能组件所构成的组件资源,在此基础上,该方法在构建软件系统时,从组件资源中选出与待构建的软件系统所适用的硬件平台相适配的硬件组件,然后基于选出的硬件组件构建得到软件系统。该方案能够针对不同的硬件平台配置,构建与之相适配的软件系统,从而提高了软件系统构建效率,以及提高了软件系统在不同硬件平台的可迁移性。
在一些实施例中,用户上传的请求信息中,还包括待构建的软件系统所适用的系统应用的配置信息。
同时,在图4所示的嵌入式软件的功能组件层中包括具有不同软件功能的各个软件功能组件,也就是,本申请实施例提出的软件系统构建方法所应用的组件资源中,还包括具有不同软件功能的软件功能组件。
基于上述设置,通过对用户上传的请求信息进行解析,能够获取待构建的软件系统所适用的系统应用配置信息,然后基于该系统应用配置信息,从图4所示的嵌入式软件中,筛选与该系统应用配置信息相适配的软件组件,作为第二目标组件。该第二目标组件,同样作为用于构建软件系统的目标组件。该第二目标组件的数量,可以是一个或多个。
例如,在树莓派4B上搭建一个USB图像数据采集系统,在选中树莓派4B硬件组件的基础上,为了支持USB摄像头,需要选中BCM2711的USB控制器驱动组件和USB协议栈组件,需要使能协议栈组件的UVC功能,并配置控制器驱动和协议栈组件相关的参数。基于这些需求,可以从组件资源中选择相应的软件功能组件用于软件系统构建。
可以理解,通过上述处理,可以从组件资源中找出与待构建的软件系统所适用的系统应用相适配的软件组件,并用于进行软件系统构建,从而使得本申请实施例提出的软件系统构建方法能够适用于具备任意系统应用的软件系统的构建。
在一些实施例中,当按照上述方案分别从组件资源中确定出第一目标组件和第二目标组件后,在基于第一目标组件和第二目标组件构建软件系统时,首先将第一目标组件和第二目标组件进行适配及组合,得到与用户上传的请求信息中的硬件平台配置信息相适配的目标功能组件。
然后,基于该目标功能组件,构建得到软件系统。
具体的,图4所示的嵌入式软件中的功能适配层,能够实现软件功能组件和硬件功能组件的适配,使得软件功能组件的功能实现可以不受硬件功能组件差异的影响,为上层提供一致的软件功能,即提供目标功能组件。
基于上述的目标功能组件进行软件系统构建,即可得到符合用户需求的软件系统。
在一些实施例中,上述的软件系统构建方法还支持用户新增功能组件。
具体而言,在获取到用户上传的请求信息后,可以根据该请求信息中的硬件平台的配置信息,以及组件资源中可用的硬件功能组件,确定待新增的硬件功能组件。
其中,图4所示的嵌入式软件对用户上传的请求信息进行解析,确定请求信息中包含的硬件平台的配置信息,然后基于该硬件平台的配置信息,从组件资源可用的硬件功能组件中查找与该硬件平台的配置信息相适配的硬件功能组件,对于未从组件资源中找到与其相适配的硬件平台配置信息进行标记,并确定与该硬件平台配置信息相适配的硬件功能组件,作为待新增的硬件功能组件。可以理解,由于在组件资源中没有与该硬件平台配置信息相适配的硬件功能组件,则与该硬件平台相适配的硬件功能组件,为该组件资源中缺失的组件资源。
在确定上述的待新增的硬件功能组件后,嵌入式软件将该待新增的硬件功能组件输出,以便于工作人员可以在获取到该待新增的硬件功能组件的信息之后,编写该待新增的硬件功能组件代码,实现对该待新增的硬件功能组件的构建。在构建得到该组件后,将其输入嵌入式软件。
嵌入式软件获取该待新增的硬件功能组件,并将其存储至组件资源中,也就是将其存储至硬件平台层。
基于上述处理之后,嵌入式软件即可从组件资源中找出与用户上传的请求信息中的硬件平台的配置信息相适配的全部硬件功能组件,可以使得基于组件资源中的硬件功能组件,组合出用户请求构建的系统软件所适用的硬件平台。并且,上述方案实现了对组件资源中的组件的实时新增,从而能够使得该软件系统构建方法能够适应各种硬件平台的软件系统构建,并且具有越用越好用的特性。
与上述的软件系统构建方法相对应的,本申请其他实施例还提出一种软件系统构建装置,该装置包括:
信息获取单元,用于获取请求信息,所述请求信息包括待构建的软件系统所适用的硬件平台的配置信息;
资源配置单元,用于根据所述请求信息,从预设的组件资源中,确定出目标组件;所述目标组件包括第一目标组件,所述第一目标组件是与所述硬件平台相适配的组件,所述组件资源包括适配不同硬件平台的硬件功能组件;
系统构建单元,用于基于所述目标组件,构建得到软件系统。
在一些实施例中,所述请求信息还包括所述待构建的软件系统所适用的系统应用的配置信息;所述组件资源还包括具有不同软件功能的软件功能组件;
所述目标组件还包括第二目标组件,所述第二目标组件包括与所述系统应用相适配的软件组件。
在一些实施例中,所述硬件功能组件,包括硬件平台功能组件和外设驱动功能组件;
所述硬件平台功能组件,包括CPU体系结构组件、CPU执行模式组件、片上系统组件和开发板组件;
所述外设驱动功能组件,包括接口组件、中断管理组件、内存管理组件、缓存管理组件和通用定时器组件。
在一些实施例中,所述接口组件,包括USB接口组件、串口组件、网口组件、串行外设接口组件。
在一些实施例中,所述软件功能组件,包括网络协议栈组件、控制台终端组件、文件系统组件、对称多核组件、异构多核组件。
在一些实施例中,基于所述目标组件,构建得到软件系统,包括:
将所述第一目标组件与所述第二目标组件进行适配及组合,得到适配所述硬件平台的目标功能组件;
基于所述目标功能组件,构建得到软件系统。
在一些实施例中,所述资源配置单元还用于:
根据所述请求信息中的硬件平台的配置信息,以及所述组件资源中可用的硬件功能组件,确定待新增的硬件功能组件;
获取所述待新增的硬件功能组件,并存储至所述组件资源。
本实施例提供的软件系统构建装置,与图5所示的软件系统构建方法属于同一申请构思,可执行该软件系统构建方法,具备执行该方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请上述实施例提供的软件系统构建方法的具体处理内容,此处不再加以赘述。
二、兼容不同操作系统内核的软件系统构建方案
本申请实施例提出一种能够兼容不同操作系统内核的软件系统构建方法,该方法可通过图2所示的嵌入式软件实现。作为一种可选的执行方式,本申请实施例提出如图6所示的嵌入式软件,并通过该嵌入式软件实现兼容不同操作系统内核的软件系统的构建。
图6所示的嵌入式软件包括了图2所示的嵌入式软件中的用于支持不同操作系统内核的组件资源。参见图6所示,该嵌入式软件包括构建工具层、硬件平台支持层(具体由硬件驱动、功能组件、处理器抽象层、编译链构成)、实时操作系统层和嵌入式应用层。
其中,构建工具层主要提供交互配置工具,该交互配置工具为用户提供操作系统内核及其参数的配置接口,使得用户可以通过交互配置工具配置不同操作系统内核参数,支持更多的定制化需求。
硬件驱动、功能组件、处理器抽象层和编译链的具体结构和功能,可以参见图2所示的嵌入式软件的介绍,或者参见常规的嵌入式实时操作系统的相关结构介绍。
实时操作系统层和嵌入式应用层,则用于提供嵌入式实时操作系统内核以及嵌入式实时应用。其中,实时操作系统层包含多种不同的操作系统内核,从而能够支持不同操作系统内核的软件系统构建。
本申请实施例提出应用于图6所示的嵌入式软件的软件系统构建方法,参见图6所示,该嵌入式软件的系统内核资源中,包括多种不同的操作系统内核。例如在实时操作系统层预先设置了操作系统内核-A、操作系统内核-B、操作系统内核-C等不同类型的操作系统内核,同时,该实施操作系统层还支持用户增加或删减操作系统内核,从而使得该嵌入式软件能够支持构建任意操作系统内核的软件系统。
基于图6所示的嵌入式软件,参见图7所示,本申请实施例提出的软件系统构建方法,包括:
S201、获取请求信息,所述请求信息包括待构建的软件系统所适用的系统内核的配置信息。
具体的,用户可以通过交互配置工具输入软件系统构建的请求信息,例如在图3所示的网络系统中,用户可以在端侧设备登录软件开发平台,通过该软件开发平台访问嵌入式软件的交互配置工具端口,并且通过该端口输入软件系统构建的请求信息。在该请求信息中,包括待构建的软件系统的配置参数信息,比如包括待构建的软件系统所适用的系统内核的配置信息,还可以包括待构建的软件系统所适用的系统应用的配置信息、所适用的硬件平台的配置信息等。
在本申请实施例中,待构建的软件系统,是指应用于特定的硬件平台以及适用特定的系统应用的软件系统。也就是说,在本申请实施例中,并不涉及待构建的软件系统所适用的系统应用的配置信息以及所适用的硬件平台的配置信息可以灵活调整的情况,而重点研究应用于特定的硬件平台以及适用特定的系统应用的软件系统,如何兼容不同的操作系统内核,也就是研究构建适用不同操作系统内核,并且应用于特定的硬件平台以及适用特定的系统应用的软件系统。
上述的待构建的软件系统所适用的系统内核的配置信息,包括但不限于操作系统内核的类型信息、操作系统内核适配的硬件配置信息和操作系统内核的运行参数信息等。
用户可以通过配置文件的方式编写软件系统构建请求信息,并将该配置文件通过交互配置工具输入嵌入式软件,嵌入式软件通过对该配置文件进行解析,即可获取待构建的软件系统所适用的系统内核的配置信息。
S202、根据所述请求信息,从预设的系统内核资源中,确定出目标系统内核。
其中,上述的预设的系统内核资源,包括如图6所示的嵌入式软件的实时操作系统层中的不同的操作系统内核。
嵌入式软件在获取到用户上传的软件系统构建请求信息后,对该请求信息进行解析,从中获取待构建的软件系统所适用的系统内核的配置信息,然后基于该配置信息,从上述的系统内核资源中查找与该配置信息相对应的操作系统内核,作为目标系统内核。
例如,假设用户想要构建一个uCOS操作系统内核的软件系统,则用户在上传的软件系统构建请求信息中记录该uCOS操作系统内核的配置信息。嵌入式软件接收到该请求信息后,可以从中解析得到uCOS操作系统内核的配置信息,并且基于该配置信息,将系统内核资源中查找uCOS操作系统内核,作为目标系统内核。
S203、基于所述目标系统内核,构建得到软件系统。
在确定上述的目标系统内核后,基于该目标系统内核,以及图6所示的硬件驱动、功能组件、处理器抽象层、编译链和嵌入式应用层,即可构建得到符合用户需求的软件系统。
通过上述介绍可见,本申请实施例提出的软件系统构建方法,预先设置了由不同操作系统内核所构成的系统内核资源,在此基础上,该方法在构建软件系统时,从系统内核资源中选出与待构建的软件系统所适用的系统内核相适配的操作系统内核,然后基于选出的操作系统内核构建得到软件系统。该方案能够针对不同的系统内核配置,构建与之相适配的软件系统,从而提高了在更换系统内核时的软件系统构建效率,以及提高了软件系统在不同操作系统内核的可迁移性。
在一些实施例中,基于目标系统内核构建得到软件系统时,首先为目标系统内核生成操作系统适配层和操作系统接口层,所述操作系统适配层用于调用硬件平台功能组件,所述操作系统接口层用于向系统应用提供统一的操作系统内核功能;然后,基于所述目标系统内核、所述操作系统适配层和所述操作系统接口层,构建得到软件系统。
通常而言,对于嵌入式实时操作系统中的操作系统内核来说,其作用是为上层的系统应用提供任务管理、内存管理等操作系统内核功能,同时,操作系统系统内核实现上述的操作系统内核功能,需要下层的硬件平台的功能支持。因此,嵌入式实时操作系统中的操作系统内核是借助硬件平台功能而向上层系统应用提供内核功能的部分。不论哪种操作系统内核,其最终的作用都应当是上述作用,对于上层的系统应用来说,其对于操作系统内核功能的调用和内核功能的实现,不应当因为操作系统内核的不同而不同,而应该保持一致,同时,对于硬件平台来说,其为操作系统内核提供基础的硬件功能和硬件功能提供方式,也不应当因为操作系统内核的不同而不同,也应该保持一致。
基于上述需求,本申请实施例将操作系统内核的功能虚拟化为操作系统接口层,由操作系统接口层为上层的系统应用提供接口统一的操作系统内核功能服务;同时,将硬件平台功能的调用接口虚拟化为操作系统适配层,操作系统内核可以通过该操作系统适配层通过统一的调用方式调用硬件平台功能。这样,可以将操作系统内核与上层系统应用和硬件平台隔离,避免操作系统内核的差异影响上层系统应用的功能调用,或者影响对硬件平台功能的调用。
基于上述技术思想,在基于目标系统内核构建得到软件系统时,先为该目标系统内核生成用于向系统应用提供统一的操作系统内核功能的操作系统接口层,以及生成用于调用硬件平台功能组件的操作系统适配层,然后基于该目标系统内核、所述操作系统适配层和所述操作系统接口层,构建得到软件系统。
其中,为目标系统内核生成操作系统适配层,具体是基于硬件平台的功能组件的调用接口,生成操作系统适配层。
例如,将硬件平台的定时器、中断控制等功能组件的调用接口,注册、对接到操作系统适配层,从而使得操作系统内核可以通过该操作系统适配层调用硬件功能组件。
为目标系统内核生成操作系统接口层,具体是基于目标系统内核的功能调用接口,生成操作系统接口层。
例如,将目标系统内核的任务管理、内存管理等功能的调用接口注册、对接到操作系统接口层,从而使得上层的系统应用可以通过该操作系统接口层调用操作系统内核功能。
在一些实施例中,上述的软件系统构建方法还支持用户新增操作系统内核。
具体而言,在获取到用户上传的请求信息后,可以根据该请求信息中记载的待构建的软件系统所适用的系统内核的配置信息,从系统内核资源中查找相对应的操作系统内核。
若系统内核资源中不包括与该系统内核的配置信息相对应的操作系统内核,则将与该系统内核的配置信息相对应的操作系统内核信息输出,使用户可以根据该操作系统内核信息,构建或开发与该系统内核的配置信息相应的操作系统内核。
用户在构建或开发得到与该系统内核的配置信息相应的操作系统内核后,将该操作系统内核输入图6所示嵌入式软件,嵌入式软件获取与该系统内核的配置信息相对应的操作系统内核,并将获取的操作系统内核存储至系统内核资源中,也就是存储至实时操作系统层。
经过上述处理后,嵌入式软件即可从系统内核资源中,找到与待构建的软件系统所适用的系统内核的配置信息相对应的操作系统内核,并基于该操作系统内核构建符合用户需求的软件系统。
由此可见,本申请实施例提出的软件系统构建方法,能够支持用户即时向系统内核资源中添加新的操作系统内核,从而使得该软件系统构建方法能够实现对任意操作系统内核的软件系统构建,并且该方法所用的系统内核资源越来越丰富,该方法能够在实际应用中的软件系统构建效率越来越高。
在另一些实施例中,本申请实施例提出的软件系统构建方法在构建得到软件系统后,还对构建得到的软件系统进行功能测试,比如测试该软件系统的软件功能是否完备、是否符合应用需求等。
若构建的软件系统的功能测试通过,则可以对该软件系统进行封装。
若构建的软件系统的功能测试不通过,则向用户反馈软件系统功能测试不通过的提示信息,用户收到该提示信息后,对待构建的软件系统所适用的系统内核的配置信息进行修改,并将修改后的系统内核配置信息重新上传嵌入式软件。
嵌入式软件获取到用户更新的系统内核配置信息后,基于更新的系统内核配置信息,按照上述的软件系统构建方法,重新构建软件系统。
然后,再次对构建的软件系统进行功能测试。若还是测试不通过,则需要用户再次修改系统内核配置信息以及重新构建软件系统。重复上述处理,直至构建的软件系统通过功能测试。
在上述方案执行过程中,对软件系统进行功能测试的具体测试过程,可以参见常规的软件系统功能测试方案。
与图7所示的软件系统构建方法相对应的,本申请实施例还提出一种软件系统构建装置,该装置包括:
信息获取单元,用于获取请求信息,所述请求信息包括待构建的软件系统所适用的系统内核的配置信息;
资源配置单元,用于根据所述请求信息,从预设的系统内核资源中,确定出目标系统内核;所述目标系统内核是与所述系统内核的配置信息相对应的操作系统内核,所述系统内核资源包括不同的操作系统内核;
系统构建单元,用于基于所述目标系统内核,构建得到软件系统。
在一些实施例中,所述系统内核的配置信息,包括操作系统内核的类型信息、操作系统内核适配的硬件配置信息和操作系统内核的运行参数信息。
在一些实施例中,所述基于所述目标系统内核,构建得到软件系统,包括:
为所述目标系统内核生成操作系统适配层和操作系统接口层,所述操作系统适配层用于调用硬件平台功能组件,所述操作系统接口层用于向系统应用提供统一的操作系统内核功能;
基于所述目标系统内核、所述操作系统适配层和所述操作系统接口层,构建得到软件系统。
在一些实施例中,为所述目标系统内核生成操作系统适配层,包括:
基于硬件平台的功能组件的调用接口,生成操作系统适配层。
在一些实施例中,为所述目标系统内核生成操作系统接口层,包括:
基于所述目标系统内核的功能调用接口,生成操作系统接口层。
在一些实施例中,所述资源配置单元还用于:
在所述系统内核资源中不包括与所述系统内核的配置信息相对应的操作系统内核的情况下,获取与所述系统内核的配置信息相对应的操作系统内核,并将获取的操作系统内核存储至所述系统内核资源中。
在一些实施例中,所述装置还包括:
系统测试单元,用于对构建得到的软件系统进行功能测试,在对构建得到的软件系统进行功能测试不通过的情况下,获取更新的系统内核配置信息,并基于更新的系统内核配置信息生成软件系统;所述更新的系统内核配置信息,通过对所述待构建的软件系统所适用的系统内核的配置信息进行修改得到。
本实施例提供的软件系统构建装置,与图7所示的软件系统构建方法属于同一申请构思,可执行图7所示的软件系统构建方法,具备执行该方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请上述实施例提供的软件系统构建方法的具体处理内容,此处不再加以赘述。
三、兼容不同编译链和函数库的软件系统构建方案
本申请实施例还提出一种能够兼容不同编译链和函数库的软件系统构建方法,该方法可通过图2所示的嵌入式软件实现。作为一种可选的实施方式,本申请实施例提出如图8所示的嵌入式软件,并通过该嵌入式软件实现兼容不同编译链和函数库的软件系统的构建。
图8所示的嵌入式软件包含了图2所示的嵌入式软件中的用于支持不同编译链和/或标准函数库的资源。参见图8所示,该嵌入式软件包括构建工具层、硬件平台支持层(具体由硬件驱动、功能组件、处理器抽象层、编译链构成)、实时操作系统层和嵌入式应用层。
其中,构建工具层包括交互配置工具、交叉编译链和函数库接口。
交互配置工具为用户提供软件系统配置接口,使得用户可以通过交互配置工具配置不同的软件系统配置参数,支持更多的定制化需求。
交叉编译链用于支持不同硬件平台的执行镜像编译。交叉编译链与硬件平台具有严格的适配关系,即特定的交叉编译链适用于特定的硬件平台,一旦硬件平台发生变化时,需要更换与变化后的硬件平台相适配的交叉编译链进行适用于变化后的硬件平台的软件系统构建。比如需要用户重新编写编译链脚本。
为了提高软件系统构建效率,尤其是提高跨硬件平台的软件系统构建效率,本申请实施例在图8所示的嵌入式软件中设置了多种不同的、应用于不同硬件平台的交叉编译链,从而可以供用户任意选择,从而减轻用户在针对不同硬件平台构建软件系统时编写编译链脚本的工作量。
函数库接口用于调用标准函数库或函数库中的函数,该函数库接口与标准函数库对应。在图8所示的嵌入式软件中,包含了多种不同的标准函数库,这些标准函数库都可以通过该函数库接口调用。
硬件驱动、功能组件、处理器抽象层和编译链的具体结构和功能,可以参见图2所示的嵌入式软件的介绍,或者参见常规的嵌入式实时操作系统的相关结构介绍。
实时操作系统层和嵌入式应用层,则用于提供嵌入式实时操作系统内核以及嵌入式实时应用。
本申请实施例提出应用于图8所示的嵌入式软件的软件系统构建方法,参见图8所示,在该嵌入式软件系统的编译链资源中,包括多种不同的交叉编译链。不同的交叉编译链分别对应用于对不同硬件平台的软件系统进行编译,从而实现应用与不同硬件平台的软件系统的构建。
基于图8所示的嵌入式软件,参见图9所示,本申请实施例提出的软件系统构建方法,包括:
S301、获取请求信息,所述请求信息包括待构建的软件系统所适用的硬件平台信息和/或编译链信息。
具体的,用户可以通过交互配置工具输入软件系统构建的请求信息,例如在图3所示的网络系统中,用户可以在端侧设备登录软件开发平台,通过该软件开发平台访问嵌入式软件的交互配置工具端口,并且通过该端口输入软件系统构建的请求信息。在该请求信息中,包括待构建的软件系统的配置参数信息,比如包括待构建的软件系统所适用的硬件平台的配置信息,构建该待构建的软件系统所适用的编译链信息,还可以包括待构建的软件系统所适用的系统内核的配置信息、待构建的软件系统所适用的系统应用的配置信息等。
在本申请实施例中,重点关注用户输入的软件系统构建请求信息中的待构建的软件系统所适用的硬件平台的配置信息,和/或,构建该待构建的软件系统所适用的编译链信息。因此,本申请实施例在获取到上述的请求信息后,从该请求信息中解析获取待构建的软件系统所适用的硬件平台的配置信息,和/或,构建该待构建的软件系统所适用的编译链信息。由于软件系统所适用的硬件平台与构建该软件系统所适用的编译链之间存在确定的适配关系,因此,当确定待构建的软件系统所适用的硬件平台的配置信息时,可以根据该硬件平台配置信息直接确定与其对应的适用编译链。
因此,在上述的请求信息中,可以包含待构建的软件系统所适用的硬件平台的配置信息,和构建该待构建的软件系统所适用的编译链信息两者中的任意一项或两项。相应的,本申请实施例从上述请求信息中解析获取待构建的软件系统所适用的硬件平台的配置信息,和构建该待构建的软件系统所适用的编译链信息中的一项或两项。
用户可以通过配置文件的方式编写软件系统构建请求信息,并将该配置文件通过交互配置工具输入嵌入式软件,嵌入式软件通过对该配置文件进行解析,即可获取待构建的软件系统所适用的硬件平台信息和/或编译链信息。
S302、根据所述请求信息,从预设的编译链资源中,确定出目标编译链。
其中,上述的预设的编译链资源,包括如图8所示的嵌入式软件的构建工具层中的能够适用于不同硬件平台的交叉编译链,比如64位交叉编译链、32位交叉编译链等。
嵌入式软件在获取到用户上传的软件系统构建请求信息后,对该请求信息进行解析,从中获取到待构建的软件系统所适用的硬件平台信息和/或编译链信息后,基于该硬件平台信息和/或编译链信息,从上述的编译链资源中,查找适用于该硬件平台信息,和/或与该编译链信息相应的编译链,作为目标编译链。
例如,假设用户想要构建一个适用于树莓派4B的软件系统,则用户在上传的软件系统构建请求中记录该树莓派4B硬件平台的配置信息。嵌入式软件接收到该请求信息后,可以从中解析得到树莓派4B硬件平台的配置信息,并且基于该配置信息,将编译链资源中适用于树莓派4B硬件平台的交叉编译链aarch64-none-elf,确定为目标编译链。
S303、通过所述目标编译链,构建得到软件系统。
在确定上述的目标编译链之后,基于该目标编译链,以及图8中所示的硬件驱动、功能组件、处理器抽象层、实时操作系统层和嵌入式应用层,即可构建得到符合用户需求的软件系统。
通过上述介绍可见,本申请实施例提出的软件系统构建方法,预先设置了由适用于不同硬件平台的编译链构成的编译链资源,在此基础上,该方法在构建软件系统时,从编译链资源中选出与待构建的软件系统所适用的硬件平台信息和/或编译链信息相适配的编译链,然后基于选出的编译链构建得到软件系统。该方案能够支持选用符合要求的编译链工具构建得到适用于不同硬件平台的软件系统,从而提高了软件系统构建效率,尤其是提高了软件系统在不同硬件平台迁移应用的场景下的软件系统构建效率。
在一些实施例中,在用户上传的软件系统构建请求信息中,还包括系统配置信息,该系统配置信息,包括待构建的软件系统所需的软件组件信息、编译和链接的配置信息,以及构建输出的镜像文件的格式和类型信息。
其中,待构建的软件系统所需的软件组件信息,是指待构建的软件系统所需要的软件功能组件的相关信息,比如待构建的软件系统所需要的驱动组件、协议栈组件、数据采集组件等等。
待构建的软件系统所需的软件组件信息,可以是请求信息中直接记载的软件组件的信息,也可以是通过待构建的软件系统的功能而解析确定的用于实现该功能的软件组件的信息。例如,假设待构建的软件系统需要实现连接一个USB摄像头采集数据的功能,则通过对该功能进行解析,该软件系统需要USB控制器驱动组件和USB协议栈组件这两种软件组件。
上述的编译和链接的配置信息,主要是指对待构建的软件系统进行编译和链接的参数信息,比如在编译过程中打开硬件浮点支持。
上述的构建输出的镜像文件的格式和类型信息,是指在对待构建的软件系统进行编译后输出的镜像文件的格式和类型的信息,比如编译完成后输出ELF格式的镜像文件。
基于上述的系统配置信息,当通过目标编译链构建软件系统时,通过该目标编译链,按照上述的系统配置信息进行软件系统编译,得到软件系统。
示例性的,首先,根据系统配置信息中的软件组件信息,从软件组件资源中确定出与该软件组件信息对应的目标软件组件。
上述的软件组件资源,是指图8所示的嵌入式软件中所预先设置的软件功能组件资源。从软件组件资源中选择出包含上述的软件组件信息对应的软件功能组件的软件组件,作为目标软件组件。并将该目标软件组件加入编译构建。
需要说明的是,上述的目标软件组件包含上述的系统配置信息中的软件组件信息对应的软件组件,此外,还可能包含其他功能的软件组件。为了使得参与编译构建的软件组件是待构建的软件系统所需的软件组件,本申请实施例还基于上述的软件组件信息,对上述确定出的目标软件组件进行裁剪,具体是将该目标软件组件中的、未包含在上述软件组件信息中的软件组件删除,剩余的软件组件作为待编译软件组件。比如,假设待构建的软件系统要实现连接一个USB摄像头采集数据,则实现这一功能需要USB控制器驱动组件和USB协议栈组件的支持,因此从软件组件资源中选择出包含USB控制器驱动组件和USB协议栈组件的软件组件,作为目标软件组件,在该目标软件组件中可能还包括GPIO驱动组件,由于GPIO驱动组件并不是待构建的软件系统所需的软件组件,因此从该目标软件组件中将该GPIO驱动组件删除,在此基础上,将该目标软件组件中剩余的软件组件,作为待编译软件组件。
然后,基于上述的待编译软件组件、所述编译和链接的配置信息,以及所述构建输出的镜像文件的格式和类型信息,通过所述目标编译链构建得到软件系统。
上述处理过程实现了基于用户输入的请求信息,自动获取构建软件系统所需的软件组件和配置参数信息,然后基于构建软件系统所需的软件组件,获取相应的软件组件资源并按照上述配置参数编译得到待构建软件系统,该过程实现了对软件组件资源的自动获取、能够更加高效地实现软件系统的构建。
在一些实施例中,参见图8所示,在用于构建软件系统的嵌入式软件中,还在构建工具层设置有函数库接口,基于该函数库接口,能够访问和调用设置于该嵌入式软件中的标准函数库,这些标准函数库构成该嵌入式软件的标准函数库资源,在该标准函数库资源中,包括多种不同的标准函数库。
上述的标准函数库,为构建待构建的软件系统所需的标准函数库提供了基础,即,可以从嵌入式软件的标准函数库资源中,选择构建软件系统所需的标准函数库,从而可以基于选择的标准函数库构建软件系统。
基于上述设置,当用户上传构建软件系统的请求信息时,可以在请求信息中添加待构建的软件系统所需的标准函数库信息。该标准函数库信息,包括但不限于是标准函数库名称,还可以包括标准函数库的实现方式、使用方式(比如函数库是否支持浮点数运算等)、内存访问策略(比如是否支持内存不对齐访问等)中的至少一项。
当用户将包含待构建的软件系统所需的标准函数库信息输入图8所示的嵌入式软件时,该嵌入式软件根据该请求信息,从上述预先设置的标准函数库资源中,确定出与该标准函数库信息对应的标准函数库,作为目标标准函数库。
基于上述处理,当通过上述的目标编译链构建软件系统时,可以通过该目标编译链和该目标标准函数库,构建得到软件系统。
其中,通过图8所述的嵌入式软件的构建工具层的函数库接口,可以调用或获取目标标准函数库,然后基于获取到的目标标准函数库和目标编译链,即可执行对请求信息中所记载的待构建的软件系统的构建。
基于上述介绍可知,本申请实施例提出的软件系统构建方法,不仅提供了多种交叉编译链工具,从而可以实现对适配任意硬件平台或适用任意编译链的软件系统的构建,并且,该方法还提供了多种标准函数库,从而可以实现对基于任意标准函数库的软件系统的构建,从而进一步提升了软件系统构建的便利性和效率。
在一些实施例中,本申请提出的软件系统构建方法还支持用户新增编译链和/或标准函数库。
具体而言,在获取到用户上传的请求信息后,可以根据该请求信息中记载的待构建的软件系统所适用的硬件平台信息和/或编译链信息,从编译链资源中查找相对应的编译链。
若编译链资源中不包括与待构建的软件系统所适用的硬件平台信息和/或编译链信息相对应的编译链,则将与该待构建的软件系统所适用的硬件平台信息和/或编译链信息相对应的编译链信息输出,使用户可以根据该编译链信息,构建或开发与该编译链信息相应的编译链。
用户在构建或开发得到与该编译链信息相应的编译链后,将该编译链输入图8所示嵌入式软件,嵌入式软件获取该编译链,并将获取的该编译链存储至编译链资源中,也就是存储至构建工具层。
经过上述处理后,嵌入式软件即可从编译链资源中,找到与待构建的软件系统所适用的硬件平台信息和/或编译链信息相对应的编译链,并基于该编译链构建符合用户需求的软件系统。
另一方面,在获取到用户上传的请求信息后,可以根据该请求信息中记载的标准函数库信息,从标准函数库资源中查找相对应的标准函数库。
若标准函数库资源中不包括与上述标准函数库信息相对应的标准函数库,则将与该标准函数库信息相对应的标准函数库的相关信息输出,使用户可以根据该相关信息,构建或开发与该标准函数库信息相应的标准含数据。
用户在构建或开发得到与该标准函数库信息相应的标准函数库后,将该标准函数库输入图8所示嵌入式软件,嵌入式软件获取该标准函数库,并将获取的该标准函数库存储至标准函数库资源中。
经过上述处理后,嵌入式软件即可从标准函数库资源中,找到与请求信息中的标准函数库信息相对应的标准函数库,并基于该标准函数库构建符合用户需求的软件系统。
由此可见,本申请实施例提出的软件系统构建方法,能够支持用户即时向编译链资源中添加新的编译链和/或向标准函数库资源中添加新的标准函数库,从而使得该软件系统构建方法能够实现对基于任意编译链和/或任意标准函数库的软件系统构建,并且该方法所用的编译链资源和/或标准函数库资源越来越丰富,该方法能够在实际应用中的软件系统构建效率越来越高。
与图9所示的软件系统构建方法相对应的,本申请实施例还提出一种软件系统构建装置,该装置包括:
信息获取单元,用于获取请求信息,所述请求信息包括待构建的软件系统所适用的硬件平台信息和/或编译链信息;
资源配置单元,用于根据所述请求信息,从预设的编译链资源中,确定出目标编译链,所述编译链资源包括适用于不同硬件平台的编译链;所述目标编译链是与所述待构建的软件系统所适用的硬件平台信息和/或编译链信息相对应的编译链;
系统构建单元,用于通过所述目标编译链,构建得到软件系统。
在一些实施例中,所述请求信息中还包括系统配置信息,所述系统配置信息包括所述待构建的软件系统所需的软件组件信息、编译和链接的配置信息,以及构建输出的镜像文件的格式和类型信息;
所述通过所述目标编译链,构建得到软件系统,包括:
通过所述目标编译链,按照所述系统配置信息进行软件系统编译,得到软件系统。
在一些实施例中,通过所述目标编译链,按照所述系统配置信息进行软件系统编译,得到软件系统,包括:
根据所述软件组件信息,从软件组件资源中确定出与所述软件组件信息对应的目标软件组件;
基于所述软件组件信息,对所述目标软件组件进行裁剪,得到待编译软件组件;
基于所述待编译软件组件、所述编译和链接的配置信息,以及所述构建输出的镜像文件的格式和类型信息,通过所述慕白编译链构建得到软件系统。
在一些实施例中,所述请求信息中还包括所述待构建的软件系统所需的标准函数库信息;
所述资源配置单元还用于:
根据所述请求信息,从预设的标准函数库资源中,确定出与所述标准函数库信息对应的目标标准函数库,所述标准函数库资源包括多个不同的标准函数库;
通过所述目标编译链,构建得到软件系统,包括:
通过所述目标编译链和所述目标标准函数库,构建得到软件系统。
在一些实施例中,所述标准函数库信息,包括标准函数库名称,以及包括标准函数库的实现方式、使用方式、内存分配策略中的至少一项。
在一些实施例中,所述资源配置单元还用于:
在所述编译链资源中不存在与所述待构建的软件系统所适用的硬件平台信息和/或编译链信息相对应的编译链的情况下,获取与所述待构建的软件系统所适用的硬件平台信息和/或编译链信息相对应的编译链,并将获取的编译链存储至所述编译链资源中。
在一些实施例中,所述资源配置单元还用于:
在所述标准函数库资源中不存在与所述标准函数库信息对应的标准函数库的情况下,获取与所述标准函数库信息对应的标准函数库,并将获取的标准函数库存储至所述标准函数库资源中。
本实施例提供的软件系统构建装置,与图9所示的软件系统构建方法属于同一申请构思,可执行图9所示的软件系统构建方法,具备执行该方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请上述实施例提供的软件系统构建方法的具体处理内容,此处不再加以赘述。
四、兼容不同硬件平台和不同操作系统内核的软件系统构建方案
本申请实施例还提出一种能够兼容不同硬件平台和不同操作系统内核的软件系统构建方案,该方案基于图10所示的嵌入式软件实现。
参见图10所示,该嵌入式软件集成了图4所示的嵌入式软件以及图6所示的嵌入式软件,重点是,图10所示的嵌入式软件同时包含了图4所示的嵌入式软件中的硬件平台层、外设驱动层、功能组件层、功能适配层,以及图6所示的嵌入式软件中的实时操作系统层,此外,还包括构建工具层和嵌入式应用层。
可以理解,图10所示的嵌入式软件包含了丰富的组件资源,比如硬件平台功能组件、软件功能组件和外设驱动功能组件,同时,该嵌入式软件还包含了多种不同的系统内核资源。
基于上述的组件资源,该嵌入式软件能够支持构建适用于不同硬件平台的软件系统;基于上述的系统内核资源,该嵌入式软件能够支持构建基于不同操作系统内核的软件系统。
并且,该嵌入式软件同样支持用户向组件资源中添加新的硬件功能组件或软件功能组件,以及支持用户向系统内核资源中添加新的操作系统内核,从而使得该嵌入式软件能够用于构建兼容更多的硬件平台和操作系统内核的软件系统。
具体的,基于图10所示的嵌入式软件构建兼容不同硬件平台和/或不同操作系统内核的软件系统的处理过程,可以参见图5所示的软件系统构建方法和图7所示的软件系统构建方法,即,可将图5所示的软件系统构建方法和图7所示的软件系统构建方法,同时用于图10所示的嵌入式软件,从而实现构建兼容不同硬件平台和/或不同操作系统内核的软件系统。
示例性的,参见图11所示,基于图10所示的嵌入式软件构建兼容不同硬件平台和不同操作系统内核的软件系统的软件系统构建方法,包括:
S401、获取请求信息,所述请求信息包括待构建的软件系统所适用的硬件平台的配置信息和待构建的软件系统所适用的系统内核的配置信息;
S402、根据所述请求信息,从预设的组件资源中确定出目标组件,以及,从预设的系统内核资源中确定出目标系统内核;所述组件资源包括适配不同硬件平台的硬件功能组件,所述系统内核资源包括不同的操作系统内核,所述目标组件包括第一目标组件,所述第一目标组件包括与所述硬件平台相适配的硬件组件,所述目标系统内核是与上述的系统内核的配置信息相对应的操作系统内核。
S403、基于所述目标组件和所述目标系统内核,构建得到软件系统。
具体的,上述的软件系统构件方法的各个步骤的具体处理过程以及可选的实施方式,可参见图5所示的软件系统构建方法和图7所示的软件系统构建方法的相应处理步骤的介绍,本实施例不再重复介绍。
基于图10所示的嵌入式软件的系统结构,以及图11所示的软件系统构建方法可知,该软件系统构建方法能够实现对适用于不同类型硬件平台和/或不同类型操作系统内核的软件系统的构建,从而提高了在更换硬件平台和/或系统内核时的软件系统构建效率,以及提高了软件系统在不同硬件平台和/或不同操作系统内核的可迁移性。
五、兼容不同硬件平台和不同编译链的软件系统构建方案
本申请实施例还提出一种能够兼容不同硬件平台和不同编译链的软件系统构建方案,该方案基于图12所示的嵌入式软件实现。
参见图12所示,该嵌入式软件集成了图4所示的嵌入式软件以及图8所示的嵌入式软件,重点是,图12所示的嵌入式软件同时包含了图4所示的嵌入式软件中的硬件平台层、外设驱动层、功能组件层、功能适配层,以及图8所示的嵌入式软件中的构建工具层,此外,还包括实时操作系统层和嵌入式应用层。图12所示的嵌入式软件的各部分结构的结构和功能,可以参见上述实施例中关于图4和图8所示的嵌入式软件的相应介绍。
可以理解,图12所示的嵌入式软件包含了丰富的组件资源,比如硬件平台功能组件、软件功能组件和外设驱动功能组件,同时,该嵌入式软件还包含了多种不同的编译链资源。
基于上述的组件资源,该嵌入式软件能够支持构建适用于不同硬件平台的软件系统;基于上述的编译链资源,该嵌入式软件能够支持构建适用于不同编译链的软件系统。
并且,该嵌入式软件同样支持用户向组件资源中添加新的硬件功能组件或软件功能组件,以及支持用户向编译链资源中添加新的交叉编译链,从而使得该嵌入式软件能够用于构建兼容更多的硬件平台和编译链的软件系统。
具体的,基于图12所示的嵌入式软件构建兼容不同硬件平台和/或不同编译链的软件系统的处理过程,可以参见图5所示的软件系统构建方法和图9所示的软件系统构建方法,即,可将图5所示的软件系统构建方法和图9所示的软件系统构建方法,同时用于图12所示的嵌入式软件,从而实现构建兼容不同硬件平台和/或不同编译链的软件系统。
示例性的,参见图13所示,基于图12所示的嵌入式软件构建兼容不同硬件平台和不同编译链的软件系统的软件系统构建方法,包括:
S501、获取请求信息,所述请求信息包括待构建的软件系统所适用的硬件平台的配置信息,或者还包括待构建的软件系统所适用的编译链的配置信息;
S502、根据所述请求信息,从预设的组件资源中确定出目标组件,以及,从预设的编译链资源中确定出目标编译链;所述组件资源包括适配不同硬件平台的硬件功能组件和软件功能组件,所述编译链资源包括不同的交叉编译链,所述目标组件包括第一目标组件,所述第一目标组件包括与所述硬件平台相适配的硬件组件,所述目标编译链是与待构建的软件系统所适用的硬件平台和/或待构建的软件系统所适用的编译链相对应的编译链。
S503、基于所述目标组件和所述目标编译链,构建得到软件系统。
具体的,上述的软件系统构件方法的各个步骤的具体处理过程以及可选的实施方式,可参见图5所示的软件系统构建方法和图9所示的软件系统构建方法的相应处理步骤的实施例介绍,本实施例不再重复介绍。
基于图12所示的嵌入式软件的系统结构,以及图13所示的软件系统构建方法可知,该软件系统构建方法能够实现对适用于不同类型硬件平台和/或不同类型编译链的软件系统的构建,从而提高了在更换硬件平台和/或编译链时的软件系统构建效率,以及提高了软件系统在不同硬件平台和/或不同编译链的可迁移性。
六、兼容不同操作系统内核和不同编译链的软件系统构建方案
本申请实施例还提出一种能够兼容不同操作系统内核和不同编译链的软件系统构建方案,该方案基于图14所示的嵌入式软件实现。
参见图14所示,该嵌入式软件集成了图6所示的嵌入式软件以及图8所示的嵌入式软件,重点是,图14所示的嵌入式软件同时包含了图6所示的嵌入式软件中的实时操作系统层,以及图8所示的嵌入式软件中的构建工具层,此外,还包括硬件平台层、外设驱动层、功能组件层、功能适配层和嵌入式应用层。图14所示的嵌入式软件的各部分结构的结构和功能,可以参见上述实施例中关于图6和图8所示的嵌入式软件的相应介绍。
可以理解,图14所示的嵌入式软件包含了不同的系统内核资源,同时,该嵌入式软件还包含了多种不同的编译链资源。
基于上述的系统内核资源,该嵌入式软件能够支持构建适用于不同操作系统内核的软件系统;基于上述的编译链资源,该嵌入式软件能够支持构建适用于不同编译链的软件系统。
并且,该嵌入式软件同样支持用户向系统内核资源中添加新的操作系统内核,以及支持用户向编译链资源中添加新的交叉编译链,从而使得该嵌入式软件能够用于构建兼容更多的操作系统内核和编译链的软件系统。
具体的,基于图14所示的嵌入式软件构建兼容不同操作系统内核和/或不同编译链的软件系统的处理过程,可以参见图7所示的软件系统构建方法和图9所示的软件系统构建方法,即,可将图7所示的软件系统构建方法和图9所示的软件系统构建方法,同时用于图14所示的嵌入式软件,从而实现构建兼容不同操作系统内核和/或不同编译链的软件系统。
示例性的,参见图15所示,基于图14所示的嵌入式软件构建兼容不同操作系统内核和不同编译链的软件系统的软件系统构建方法,包括:
S601、获取请求信息,所述请求信息包括待构建的软件系统所适用的系统内核的配置信息,以及包括待构建的软件系统所适用的硬件平台的配置信息和/或该待构建的软件系统所适用的编译链的配置信息;
S602、根据所述请求信息,从预设的系统内核资源中确定出目标系统内核,以及,从预设的编译链资源中确定出目标编译链;所述系统内核资源包括不同的操作系统内核,所述编译链资源包括不同的交叉编译链,所述目标系统内核是与上述的系统内核的配置信息相对应的操作系统内核,所述目标编译链是与待构建的软件系统所适用的硬件平台和/或待构建的软件系统所适用的编译链相对应的编译链。
S603、基于所述目标系统内核和所述目标编译链,构建得到软件系统。
具体的,上述的软件系统构件方法的各个步骤的具体处理过程以及可选的实施方式,可参见图7所示的软件系统构建方法和图9所示的软件系统构建方法的相应处理步骤的实施例介绍,本实施例不再重复介绍。
基于图14所示的嵌入式软件的系统结构,以及图15所示的软件系统构建方法可知,该软件系统构建方法能够实现对适用于不同类型操作系统内核和/或不同类型编译链的软件系统的构建,从而提高了在更换操作系统内核和/或编译链时的软件系统构建效率,以及提高了软件系统在不同操作系统内核和/或不同编译链的可迁移性。
七、兼容不同硬件平台、不同操作系统内核和不同编译链的软件系统构建方案
本申请实施例还提出一种能够兼容不同硬件平台和不同编译链的软件系统构建方案,该方案基于图2所示的嵌入式软件实现。
参见图2所示,该嵌入式软件集成了包含不同硬件功能组件和软件功能组件的硬件平台层、外设驱动层、功能组件层、功能适配层,还集成了包含不同操作系统内核的实时操作系统层,以及包含不同编译链的构建工具层,此外还包括嵌入式应用层。图2所示的嵌入式软件的各部分结构的结构和功能,可以参见上述实施例中的相应介绍。
可以理解,图2所示的嵌入式软件包含了不同的硬件平台组件资源、不同的系统内核资源,同时,该嵌入式软件还包含了多种不同的编译链资源。
基于上述的硬件平台组件资源,该嵌入式软件能够支持构建适用于不同硬件平台的软件系统;基于上述的系统内核资源,该嵌入式软件能够支持构建适用于不同操作系统内核的软件系统;基于上述的编译链资源,该嵌入式软件能够支持构建适用于不同编译链的软件系统。
并且,该嵌入式软件同样支持用户向硬件平台组件资源中添加新的硬件功能组件和/或软件功能组件、支持用户向系统内核资源中添加新的操作系统内核,以及支持用户向编译链资源中添加新的交叉编译链,从而使得该嵌入式软件能够用于构建兼容更多的硬件平台、操作系统内核和编译链的软件系统。
具体的,基于图2所示的嵌入式软件构建兼容不同硬件平台和/或不同操作系统内核和/或不同编译链的软件系统的处理过程,可以参见图5所示的软件系统构建方法、图7所示的软件系统构建方法和图9所示的软件系统构建方法,即,可将图5所示的软件系统构建方法、图7所示的软件系统构建方法和图9所示的软件系统构建方法,同时用于图2所示的嵌入式软件,从而实现构建兼容不同硬件平台和/或不同操作系统内核和/或不同编译链的软件系统。
示例性的,参见图16所示,基于图2所示的嵌入式软件构建兼容不同硬件平台、不同操作系统内核和不同编译链的软件系统的软件系统构建方法,包括:
S701、获取请求信息,所述请求信息包括待构建的软件系统所适用的硬件平台的配置信息、包括待构建的软件系统所适用的系统内核的配置信息,以及还可以包括该待构建的软件系统所适用的编译链的配置信息;
S702、根据所述请求信息,从预设的组件资源中确定出目标组件、从预设的系统内核资源中确定出目标系统内核,以及,从预设的编译链资源中确定出目标编译链;所述组件资源包括适配不同硬件平台的硬件功能组件,所述系统内核资源包括不同的操作系统内核,所述编译链资源包括不同的交叉编译链;所述目标组件包括第一目标组件,所述第一目标组件包括与所述硬件平台相适配的硬件组件,所述目标系统内核是与上述的系统内核的配置信息相对应的操作系统内核,所述目标编译链是与待构建的软件系统所适用的硬件平台和/或待构建的软件系统所适用的编译链相对应的编译链。
S703、基于所述目标组件、所述目标系统内核和所述目标编译链,构建得到软件系统。
具体的,上述的软件系统构件方法的各个步骤的具体处理过程以及可选的实施方式,可参见图5所示的软件系统构建方法、图7所示的软件系统构建方法和图9所示的软件系统构建方法的相应处理步骤的实施例介绍,本实施例不再重复介绍。
基于图2所示的嵌入式软件的系统结构,以及图16所示的软件系统构建方法可知,该软件系统构建方法能够实现对适用于不同硬件平台和/或不同类型操作系统内核和/或不同类型编译链的软件系统的构建,从而提高了在更换硬件平台和/或操作系统内核和/或编译链时的软件系统构建效率,以及提高了软件系统在不同硬件平台和/或不同操作系统内核和/或不同编译链的可迁移性。
与上述的图11、图13、图15、图16所示的软件系统构建方法相对应的,本申请实施例还提出一种软件系统构建装置,该装置包括系统构建单元,该系统构建单元可用于执行图11、图13、图15、图16中任意一个所示的软件系统构建方法的处理步骤,其具体处理内容可参见上述实施例的相应部分介绍。
综上各实施例介绍可知,基于本申请实施例提出的兼容多种硬件平台组件资源、操作系统内核资源和编译链资源、标准函数库资源的嵌入式软件,可以使得当用户在借助该嵌入式软件构建嵌入式实时操作系统的软件系统时,至需要关心硬件平台如何选择和配置、实时操作系统内核如何选择和配置、应用业务逻辑如何实现、系统接口如何使用即可,只要用户明确了这些配置信息和实现方式,即可将这些信息输入本申请提出的嵌入式软件中,借助该软件自动实现相应软件系统的构建。从而可以使用户将精力集中在业务逻辑的实现上,而不必考虑软件系统构建的一系列复杂的细节问题。
在上述的各实施例中,在构建得到软件系统后,可以对构建得到的软件系统进行功能测试,若测试通过则对构建的软件系统进行封装,若测试不通过则可以调整配置信息或参数,重复构建软件系统,整个过程对于用户来说,均只需要配置参数和数据、调整业务逻辑即可,使得软件系统构建的效率和便利性都大大提高。
在上述各实施例中所介绍的软件系统构建装置中,各个功能单元所实现的功能可以分别由相同或不同的处理器实现,本申请实施例不作限定。
应理解以上装置中的单元可以以处理器调用软件的形式实现。例如该装置包括处理器,处理器与存储器连接,存储器中存储有指令,处理器调用存储器中存储的指令,以实现以上任一种方法或实现该装置各单元的功能,其中处理器可以为通用处理器,例如CPU或微处理器等,存储器可以为装置内的存储器或装置外的存储器。或者,装置中的单元可以以硬件电路的形式实现,可以通过对硬件电路的设计,实现部分或全部单元的功能,该硬件电路可以理解为一个或多个处理器;例如,在一种实现中,该硬件电路为ASIC,通过对电路内元件逻辑关系的设计,实现以上部分或全部单元的功能;再如,在另一种实现中,该硬件电路可以通过PLD实现,以FPGA为例,其可以包括大量逻辑门电路,通过配置文件来配置逻辑门电路之间的连接关系,从而实现以上部分或全部单元的功能。以上装置的所有单元可以全部通过处理器调用软件的形式实现,或全部通过硬件电路的形式实现,或部分通过处理器调用软件的形式实现,剩余部分通过硬件电路的形式实现。
在本申请实施例中,处理器是一种具有信号的处理能力的电路,在一种实现中,处理器可以是具有指令读取与运行能力的电路,例如CPU、微处理器、GPU、或DSP等;在另一种实现中,处理器可以通过硬件电路的逻辑关系实现一定功能,该硬件电路的逻辑关系是固定的或可以重构的,例如处理器为ASIC或PLD实现的硬件电路,例如FPGA等。在可重构的硬件电路中,处理器加载配置文档,实现硬件电路配置的过程,可以理解为处理器加载指令,以实现以上部分或全部单元的功能的过程。此外,还可以是针对人工智能设计的硬件电路,其可以理解为一种ASIC,例如NPU、TPU、DPU等。
可见,以上装置中的各单元可以是被配置成实施以上方法的一个或多个处理器(或处理电路),例如:CPU、GPU、NPU、TPU、DPU、微处理器、DSP、ASIC、FPGA,或这些处理器形式中至少两种的组合。
此外,以上装置中的各单元可以全部或部分可以集成在一起,或者可以独立实现。在一种实现中,这些单元集成在一起,以SOC的形式实现。该SOC中可以包括至少一个处理器,用于实现以上任一种方法或实现该装置各单元的功能,该至少一个处理器的种类可以不同,例如包括CPU和FPGA,CPU和人工智能处理器,CPU和GPU等。
本申请另一实施例还提出一种软件系统构建设备,参见图17所示,该设备包括:
存储器200和处理器210;
其中,所述存储器200与所述处理器210连接,用于存储程序;
所述处理器210,用于通过运行所述存储器200中存储的程序,实现上述任一实施例公开的软件系统构建方法。
具体的,上述软件系统构建设备还可以包括:总线、通信接口220、输入设备230和输出设备240。
处理器210、存储器200、通信接口220、输入设备230和输出设备240通过总线相互连接。其中:
总线可包括一通路,在计算机系统各个部件之间传送信息。
处理器210可以是通用处理器,例如通用中央处理器(CPU)、微处理器等,也可以是特定应用集成电路(application-specificintegrated circuit,ASIC),或一个或多个用于控制本发明方案程序执行的集成电路。还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
处理器210可包括主处理器,还可包括基带芯片、调制解调器等。
存储器200中保存有执行本发明技术方案的程序,还可以保存有操作系统和其他关键业务。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。更具体的,存储器200可以包括只读存储器(read-onlymemory,ROM)、可存储静态信息和指令的其他类型的静态存储设备、随机存取存储器(random access memory,RAM)、可存储信息和指令的其他类型的动态存储设备、磁盘存储器、flash等等。
输入设备230可包括接收用户输入的数据和信息的装置,例如键盘、鼠标、摄像头、扫描仪、光笔、语音输入装置、触摸屏、计步器或重力感应器等。
输出设备240可包括允许输出信息给用户的装置,例如显示屏、打印机、扬声器等。
通信接口220可包括使用任何收发器一类的装置,以便与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(WLAN)等。
处理器210执行存储器200中所存放的程序,以及调用其他设备,可用于实现本申请上述实施例所提供的任意一种软件系统构建方法的各个步骤。
本申请实施例还提出一种芯片,该芯片包括处理器和数据接口,所述处理器通过所述数据接口读取并运行存储器上存储的程序,以执行上述任意实施例所介绍的软件系统构建方法,具体处理过程及其有益效果可参见上述的软件系统构建方法的实施例介绍。
除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行上述任意实施例中描述的软件系统构建方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行上述任意实施例中描述的软件系统构建方法中的步骤。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请各实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减,各实施例中记载的技术特征可以进行替换或者组合。
本申请各实施例种装置及终端中的模块和子模块可以根据实际需要进行合并、划分和删减。
本申请所提供的几个实施例中,应该理解到,所揭露的终端,装置和方法,可以通过其它的方式实现。例如,以上所描述的终端实施例仅仅是示意性的,例如,模块或子模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个子模块或模块可以结合或者可以集成到另一个模块,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块或子模块可以是或者也可以不是物理上分开的,作为模块或子模块的部件可以是或者也可以不是物理模块或子模块,即可以位于一个地方,或者也可以分布到多个网络模块或子模块上。可以根据实际的需要选择其中的部分或者全部模块或子模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块或子模块可以集成在一个处理模块中,也可以是各个模块或子模块单独物理存在,也可以两个或两个以上模块或子模块集成在一个模块中。上述集成的模块或子模块既可以采用硬件的形式实现,也可以采用软件功能模块或子模块的形式实现。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件单元,或者二者的结合来实施。软件单元可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的计算机可读存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (8)

1.一种软件系统构建方法,其特征在于,应用于软件系统,所述软件系统包括预设的组件资源,所述组件资源包括适配不同硬件平台的硬件功能组件以及具有不同软件功能的软件功能组件,所述硬件功能组件,包括硬件平台功能组件和外设驱动功能组件,所述硬件平台功能组件,包括CPU体系结构组件、CPU执行模式组件、片上系统组件和开发板组件;所述外设驱动功能组件,包括接口组件、中断管理组件、内存管理组件、缓存管理组件和通用定时器组件;所述方法包括:
获取请求信息,所述请求信息包括待构建的软件系统所适用的硬件平台的配置信息以及所适用的系统应用的配置信息;
根据所述请求信息,从所述组件资源中,确定出目标组件;所述目标组件包括第一目标组件和第二目标组件,所述第一目标组件包括与所述硬件平台相适配的硬件平台功能组件和外设驱动功能组件,所述第二目标组件包括与所述系统应用相适配的软件组件;
基于所述目标组件,构建得到软件系统。
2.根据权利要求1所述的方法,其特征在于,所述接口组件,包括USB接口组件、串口组件、网口组件、串行外设接口组件。
3.根据权利要求1所述的方法,其特征在于,所述软件功能组件,包括网络协议栈组件、控制台终端组件、文件系统组件、对称多核组件、异构多核组件。
4.根据权利要求1所述的方法,其特征在于,基于所述目标组件,构建得到软件系统,包括:
将所述第一目标组件与所述第二目标组件进行适配及组合,得到适配所述硬件平台的目标功能组件;
基于所述目标功能组件,构建得到软件系统。
5.根据权利要求1至4中任意一项所述的方法,其特征在于,所述方法还包括:
根据所述请求信息中的硬件平台的配置信息,以及所述组件资源中可用的硬件功能组件,确定待新增的硬件功能组件;
获取所述待新增的硬件功能组件,并存储至所述组件资源。
6.一种软件系统构建装置,其特征在于,应用于软件系统,所述软件系统包括预设的组件资源,所述组件资源包括适配不同硬件平台的硬件功能组件以及具有不同软件功能的软件功能组件,所述硬件功能组件,包括硬件平台功能组件和外设驱动功能组件,所述硬件平台功能组件,包括CPU体系结构组件、CPU执行模式组件、片上系统组件和开发板组件;所述外设驱动功能组件,包括接口组件、中断管理组件、内存管理组件、缓存管理组件和通用定时器组件;所述装置包括:
信息获取单元,用于获取请求信息,所述请求信息包括待构建的软件系统所适用的硬件平台的配置信息以及所适用的系统应用的配置信息;
资源配置单元,用于根据所述请求信息,从所述组件资源中,确定出目标组件,所述目标组件包括第一目标组件和第二目标组件,所述第一目标组件是与所述硬件平台相适配的硬件平台功能组件和外设驱动功能组件,所述第二目标组件包括与所述系统应用相适配的软件组件;
系统构建单元,用于基于所述目标组件,构建得到软件系统。
7.一种软件系统构建设备,其特征在于,包括:
存储器和处理器;
所述存储器与所述处理器连接,用于存储程序;
所述处理器,用于通过运行所述存储器中的程序,实现如权利要求1至5中任意一项所述的软件系统构建方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时,实现如权利要求1至5中任意一项所述的软件系统构建方法。
CN202310699218.XA 2023-06-14 2023-06-14 软件系统构建方法、装置、设备及计算机可读存储介质 Active CN116541066B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310699218.XA CN116541066B (zh) 2023-06-14 2023-06-14 软件系统构建方法、装置、设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310699218.XA CN116541066B (zh) 2023-06-14 2023-06-14 软件系统构建方法、装置、设备及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN116541066A CN116541066A (zh) 2023-08-04
CN116541066B true CN116541066B (zh) 2023-10-13

Family

ID=87447283

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310699218.XA Active CN116541066B (zh) 2023-06-14 2023-06-14 软件系统构建方法、装置、设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN116541066B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117971176B (zh) * 2024-04-01 2024-06-21 杭州青橄榄网络技术有限公司 一种用于业务功能开发的抽象组件管理方法及系统
CN118092865B (zh) * 2024-04-24 2024-06-28 广州知韫科技有限公司 一种跨平台框架的快速构建方法

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102779047A (zh) * 2012-07-09 2012-11-14 哈尔滨工程大学 一种嵌入式软件支撑平台
CN111176714A (zh) * 2019-12-16 2020-05-19 优地网络有限公司 软件系统开发方法、装置、终端设备及存储介质
CN111309291A (zh) * 2020-01-19 2020-06-19 北京航空航天大学 一种模块化嵌入式软件架构及其定制方法、定制系统
CN111459490A (zh) * 2020-03-11 2020-07-28 云知声智能科技股份有限公司 一种自动适配硬件平台的语音识别引擎移植方法及装置
CN112068852A (zh) * 2020-09-27 2020-12-11 山东云海国创云计算装备产业创新中心有限公司 基于国产服务器的开源软件安装方法、系统及设备和介质
CN112463417A (zh) * 2020-12-17 2021-03-09 中通服建设有限公司 基于国产信创软硬件平台的迁移适配方法、装置和设备
CN114115923A (zh) * 2021-12-09 2022-03-01 肖赟 一种操作系统搭建方法及系统
CN114995811A (zh) * 2022-06-10 2022-09-02 中国航空无线电电子研究所 支持多种机载嵌入式操作系统的容器接口架构系统
CN115033230A (zh) * 2022-06-27 2022-09-09 中国电力科学研究院有限公司 嵌入式硬件平台的驱动程序生成方法、装置、设备及介质
CN115248680A (zh) * 2022-08-15 2022-10-28 中国工商银行股份有限公司 软件构建方法、系统、设备、介质和程序产品
CN115827045A (zh) * 2022-10-31 2023-03-21 北京凯思昊鹏软件工程技术有限公司 嵌入式系统中容器的接口配置系统和方法
CN115981613A (zh) * 2022-12-23 2023-04-18 深圳创维数字技术有限公司 多硬件设备软件适配方法、电子设备及可读存储介质

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102779047A (zh) * 2012-07-09 2012-11-14 哈尔滨工程大学 一种嵌入式软件支撑平台
CN111176714A (zh) * 2019-12-16 2020-05-19 优地网络有限公司 软件系统开发方法、装置、终端设备及存储介质
CN111309291A (zh) * 2020-01-19 2020-06-19 北京航空航天大学 一种模块化嵌入式软件架构及其定制方法、定制系统
CN111459490A (zh) * 2020-03-11 2020-07-28 云知声智能科技股份有限公司 一种自动适配硬件平台的语音识别引擎移植方法及装置
CN112068852A (zh) * 2020-09-27 2020-12-11 山东云海国创云计算装备产业创新中心有限公司 基于国产服务器的开源软件安装方法、系统及设备和介质
CN112463417A (zh) * 2020-12-17 2021-03-09 中通服建设有限公司 基于国产信创软硬件平台的迁移适配方法、装置和设备
CN114115923A (zh) * 2021-12-09 2022-03-01 肖赟 一种操作系统搭建方法及系统
CN114995811A (zh) * 2022-06-10 2022-09-02 中国航空无线电电子研究所 支持多种机载嵌入式操作系统的容器接口架构系统
CN115033230A (zh) * 2022-06-27 2022-09-09 中国电力科学研究院有限公司 嵌入式硬件平台的驱动程序生成方法、装置、设备及介质
CN115248680A (zh) * 2022-08-15 2022-10-28 中国工商银行股份有限公司 软件构建方法、系统、设备、介质和程序产品
CN115827045A (zh) * 2022-10-31 2023-03-21 北京凯思昊鹏软件工程技术有限公司 嵌入式系统中容器的接口配置系统和方法
CN115981613A (zh) * 2022-12-23 2023-04-18 深圳创维数字技术有限公司 多硬件设备软件适配方法、电子设备及可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
以构造为中心的底层软件复用方法;陈诗军等;《计算机工程与设计》;第第40卷卷(第第5期期);全文 *

Also Published As

Publication number Publication date
CN116541066A (zh) 2023-08-04

Similar Documents

Publication Publication Date Title
CN116541066B (zh) 软件系统构建方法、装置、设备及计算机可读存储介质
US10929116B2 (en) Generation of dynamic software models using input mapping with feature definitions
US11389960B2 (en) Systems and methods for robotic process automation
CN116541065A (zh) 软件系统构建方法、装置、设备及计算机可读存储介质
CN102591777A (zh) 一种单元测试代码生成方法及装置
CN110717268B (zh) 一种基于face架构的可移植组件单元封装方法
EP4036716B1 (en) Method and device for acquiring mirror image file
Muthig et al. Generic implementation of product line components
CN114115841A (zh) 数据流接口动态编排方法、装置、设备、介质及程序产品
Perez-Palacin et al. A UML profile for the design, quality assessment and deployment of data-intensive applications
CN111506314A (zh) 项目开发的方法、装置、服务器及介质
CN113312046A (zh) 子应用页面处理方法、装置和计算机设备
CN112435072A (zh) 一种模型创建方法、装置、电子设备及存储介质
Angelino et al. StarFlow: A script-centric data analysis environment
CN113238739A (zh) 一种插件开发和数据获取方法、装置、电子设备及介质
CN116107524B (zh) 低代码应用日志处理方法、介质、装置和计算设备
CN116450206B (zh) 软件系统构建方法、装置、设备及计算机可读存储介质
CN116562342A (zh) 模型构建方法、装置、设备、车辆及存储介质
Jaber et al. A high-level modeling language for the efficient design, implementation, and testing of Android applications
JP3045286B2 (ja) 回路設計方法および装置、情報記憶媒体
CN116795351A (zh) 一种软件工具包的生成方法、装置及可读存储介质
Aulagnier et al. SoC/SoPC development using MDD and MARTE profile
Dingle Software Essentials: Design and Construction
CN112597669B (zh) 一种模拟试验平台及其工作方法
CN112130841B (zh) Sql开发方法、装置及终端设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant