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

未命名 08-07 阅读:129 评论:0


1.本技术涉及计算机技术领域,尤其涉及一种软件系统构建方法、装置、设备及计算机可读存储介质。


背景技术:

2.嵌入式实时操作系统由硬件系统和软件系统构成,其中,软件系统的构建需要借助编译链实现,而且,针对不同的嵌入式实时操作系统的硬件系统配置,需要通过与之对应的编译链实现嵌入式实时操作系统的软件系统的构建。
3.可见,在构建嵌入式实时操作系统的软件系统时,所使用的编译链工具是与嵌入式实时操作系统的硬件环境相耦合的,这种耦合关系使得当软件系统迁移到不同的硬件平台时,需要开发人员重新编写编译链工具进行软件系统的构建,这严重影响软件系统在不同硬件平台迁移应用的场景下的软件系统构建效率。


技术实现要素:

4.基于上述技术现状,本技术提出一种软件系统构建方法、装置、设备及计算机可读存储介质,至少能够使得嵌入式实时操作系统的软件系统的构建能够兼容不同的编译链工具,实现对适用于任意编译链的软件系统的构建。
5.为了实现上述技术目的,本技术具体提出如下技术方案:第一方面,本技术提出一种软件系统构建方法,包括:获取请求信息,所述请求信息包括待构建的软件系统所适用的硬件平台信息和/或编译链信息;根据所述请求信息,从预设的编译链资源中,确定出目标编译链;所述编译链资源包括适用于不同硬件平台的编译链;所述目标编译链是与所述待构建的软件系统所适用的硬件平台信息和/或编译链信息相对应的编译链;通过所述目标编译链,构建得到软件系统。
6.第二方面,本技术提出一种软件系统构建装置,包括:信息获取单元,用于获取请求信息,所述请求信息包括待构建的软件系统所适用的硬件平台信息和/或编译链信息;资源配置单元,用于根据所述请求信息,从预设的编译链资源中,确定出目标编译链,所述编译链资源包括适用于不同硬件平台的编译链;所述目标编译链是与所述待构建的软件系统所适用的硬件平台信息和/或编译链信息相对应的编译链;系统构建单元,用于通过所述目标编译链,构建得到软件系统。
7.第三方面,本技术提出一种软件系统构建设备,包括:存储器和处理器;所述存储器与所述处理器连接,用于存储程序;所述处理器,用于通过运行所述存储器中的程序,实现上述的软件系统构建方法。
8.第四方面,本技术提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时,实现上述的软件系统构建方法。
9.基于上述的第一方面至第四方面的任意一项,本技术提出的软件系统构建方案,预先设置了由适用于不同硬件平台的编译链构成的编译链资源,在此基础上,在构建软件
系统时,从编译链资源中选出与待构建的软件系统所适用的硬件平台信息和/或编译链信息相适配的编译链,然后基于选出的编译链构建得到软件系统。该方案能够支持选用符合要求的编译链工具构建得到适用于不同硬件平台的软件系统,从而提高了软件系统构建效率,尤其是提高了软件系统在不同硬件平台迁移应用的场景下的软件系统构建效率。
10.在一些实现方式中,所述请求信息中还包括系统配置信息,所述系统配置信息包括所述待构建的软件系统所需的软件组件信息、编译和链接的配置信息,以及构建输出的镜像文件的格式和类型信息;所述通过所述目标编译链,构建得到软件系统,包括:通过所述目标编译链,按照所述系统配置信息进行软件系统编译,得到软件系统。基于该实现方式,用户可以进一步对软件系统的构建参数和系统配置信息进行设置,从而满足用户更多元化的软件系统构建需求。
11.在一些实现方式中,通过所述目标编译链,按照所述系统配置信息进行软件系统编译,得到软件系统,包括:根据所述软件组件信息,从软件组件资源中确定出与所述软件组件信息对应的目标软件组件;基于所述软件组件信息,对所述目标软件组件进行裁剪,得到待编译软件组件;基于所述待编译软件组件、所述编译和链接的配置信息,以及所述构建输出的镜像文件的格式和类型信息,通过所述目标编译链构建得到软件系统。基于该实现方式,可以灵活地对软件组件进行裁剪,从而可以避免构建出的软件系统存在冗余组件,以及使得构建出的软件组件符合用户需求。
12.在一些实现方式中,所述请求信息中还包括所述待构建的软件系统所需的标准函数库信息;所述方法还包括:根据所述请求信息,从预设的标准函数库资源中,确定出与所述标准函数库信息对应的目标标准函数库,所述标准函数库资源包括多个不同的标准函数库;通过所述目标编译链,构建得到软件系统,包括:通过所述目标编译链和所述目标标准函数库,构建得到软件系统。基于该实现方式,该软件系统构建方法还能够兼容不同标准函数库,实现对基于不同标准函数库的软件系统的构建。
13.在一些实现方式中,所述标准函数库信息,包括标准函数库名称,以及包括标准函数库的实现方式、使用方式、内存分配策略中的至少一项。基于该实现方式,用户可以通过多种方式编辑标准函数库信息。
14.在一些实现方式中,所述方法还包括:在所述编译链资源中不存在与所述待构建的软件系统所适用的硬件平台信息和/或编译链信息相对应的编译链的情况下,获取与所述待构建的软件系统所适用的硬件平台信息和/或编译链信息相对应的编译链,并将获取的编译链存储至所述编译链资源中。基于该实现方式,可以使得用户自主添加编译链资源,进一步增强该软件系统构建方法对各种编译链的兼容性。
15.在一些实现方式中,所述方法还包括:在所述标准函数库资源中不存在与所述标准函数库信息对应的标准函数库的情况下,获取与所述标准函数库信息对应的标准函数库,并将获取的标准函数库存储至所述标准函数库资源中。基于该实现方式,可以使得用户自主添加标准函数库资源,进一步增强该软件系统构建方法对各种标准函数库的兼容性。
附图说明
16.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
17.图1为本技术实施例提供的一种嵌入式实时操作系统的结构示意图。
18.图2为本技术实施例提供的一种嵌入式软件的结构示意图。
19.图3为本技术实施例提供的一种网络系统的示意图。
20.图4为本技术实施例提供的另一种嵌入式软件的结构示意图。
21.图5为本技术实施例提供的另一种软件系统构建方法的流程示意图。
22.图6为本技术实施例提供的一种软件系统构建设备的结构示意图。
具体实施方式
23.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
24.首先,本技术实施例对嵌入式实时操作系统进行介绍。
25.现有的嵌入式实时操作系统一般包括硬件环境和软件环境两部分,即包括硬件环境,以及运行于该硬件环境的软件系统,其总体架构框图如图1所示。
26.在硬件环境中,控制单元用于发送控制指令,实现控制微处理器的工作过程,控制单元与多组寄存器结合构成处理器内核,在存储器的支持下,实现计算控制和数据存储等功能;外设控制器(如图1中的1外设控制器、2外设控制器、3外设控制器、4外设控制器、5外设控制器、6外设控制器),主要支持控制单元与特定类型外设的数据交换,例如与图1中的1输入输出外设(网口)、2输入外设(传感器)、3输入外设(键盘)、1输出外设(闪存)、2输出外设(串口)、3输出外设(屏幕)的数据交换,实现具体数据通信协议。一般实现中,控制单元和寄存器集成在微处理器中,微处理器和片上存储器以及外设控制器集成封装在一个片上系统(soc)中;外设与片上系统的外设控制器相连,其中一部分外设会以板载的形式集成在印刷电路板(pcb)上,例如网口、串口等接口,以及闪存等固定在电路板的存储介质,另一部分外设需要在使用时通过特定的接口和转接线进行连接,例如键盘鼠标等输入设备,lcd屏幕等输出设备。
27.在软件环境中,编译链将高级语言翻译成处理器内核可以识别的指令;处理器抽象层封装通过软件访问处理器功能的一般方法;硬件驱动封装通过软件配置特定外设控制器功能的一般方法,功能组件提供通用的软件方法实现;嵌入式实时系统内核是软件环境的核心,完成硬件资源的使用管理,如处理器时间片的分配,存储空间的分配和释放等;嵌入式实时应用面向特定应用场景开发,完成用户需要的功能。
28.当前嵌入式实时操作系统设计开发领域面临一系列挑战,一方面,硬件平台种类多,差异明显,迭代速度快,和通用软件系统不同,嵌入式实时操作系统的硬件环境专用性程度高,因此,软件系统往往需要针对硬件环境专门开发,导致每当硬件平台更换或者迭代更新时,嵌入式实时操作系统的软件也需要随之重新开发;另一方面,嵌入式实时操作系统应用场景碎片化程度高,为了追求功能紧凑,系统往往需要针对特定的应用需求对硬件裁剪,软件也需要随之选择不同的实时操作系统内核及功能组件,由此,相同或者类似的功能
需要在不同的应用场景中重复实现。上述两方面的问题带来了大量膨胀的软件开发、软件测试和后续保障工作,造成大量的人力、经费资源浪费。
29.另外,软件系统的构建需要借助编译链实现,而且,针对不同的嵌入式实时操作系统的硬件环境配置,需要通过与之对应的编译链实现嵌入式实时操作系统的软件系统的构建。
30.可见,在构建嵌入式实时操作系统的软件系统时,所使用的编译链工具是与嵌入式实时操作系统的硬件环境相耦合的,这种耦合关系使得当软件系统迁移到不同的硬件平台时,需要开发人员重新编写编译链工具进行软件系统的构建,这也严重影响软件系统在不同硬件平台迁移应用的场景下的软件系统构建效率。
31.针对上述技术现状,本技术发明人经过研究发现,不同嵌入式实时操作系统的硬件环境虽然存在明显差异,但是处理器内核、外设控制器等实现和访问方法相似性高,硬件提供的功能特性也基本类似,存在归并同类功能实现的可能;同时,不同嵌入式实时内核的实现和接口虽然存在明显差异,但是实时内核提供的功能特性基本相似,也可以功能合并。
32.基于上述研究发现,本技术发明人创新提出了一种嵌入式软件,该嵌入式软件能够用于构建嵌入式实时操作系统的软件系统,并且,能够用于构建适用于任意硬件环境的软件系统。
33.图2示出了本技术实施例提出的嵌入式软件的系统架构,参见图2,该嵌入式软件包括构建工具层、硬件平台层、外设驱动层、功能组件层、功能适配层、实时操作系统层和嵌入式应用层。
34.其中,构建工具层提供交互配置工具、交叉编译链和函数库接口。交互配置工具为用户提供硬件平台及其参数的配置接口;交叉编译链工具用于支持不同硬件平台的执行镜像编译,作为整个开发装置的基础;函数库接口用于调用标准函数库或函数库中的函数。相比现有技术,构建工具层的设置可以允许用户配置不同硬件环境参数,支持更多的定制化需求。
35.硬件平台层通过硬件平台的基础支持分层,通过分层设计将对硬件平台的支持拆分成cpu体系结构的支持、cpu执行模式的支持、soc(片上系统)的支持以及开发板的支持,相比现有技术,分层设计后,可以充分归并不同硬件环境的同类功能。
36.外设驱动层提供各类硬件外设功能的支持,通过模块化设计将硬件外设功能的支持作为一个功能组件给不同硬件平台使用,屏蔽硬件实现和参数标定差异,相比现有技术,外设驱动模块化实现后,能够与具体的硬件环境解耦。
37.功能组件层,提供各类基础软件功能的支持,将基础软件功能和硬件平台、外设驱动相结合,向上提供可裁剪可配置的通用基础软件功能,相比现有技术,功能组件可以自由裁剪,从而可以适应硬件环境的差异和应用场景的需要。
38.功能适配层主要用于实现功能组件和硬件平台的适配,主要的目标是屏蔽硬件实现的差异,为上层提供一致的功能。
39.实时操作系统层,提供多种实时操作系统内核的支持,将不同的实时操作系统内核功能用统一的接口表出,向上提供统一的系统功能实现接口,相比现有技术,通过实时操作系统适配层和实时操作系统接口层,使得实时操作系统可以适应硬件环境的差异,并根据应用场景的需要替换成不同的实时内核。
40.嵌入式应用层,面向特定应用场景实现功能,由于应用层以下的组件对不同硬件平台、不同操作系统内核进行了适配和封装,相比现有技术,理论上,在硬件功能支持的前提下,通过更换硬件配置后,嵌入式实时应用可以实现不同的硬件环境中进行迁移。
41.图2所示的嵌入式软件具有如下特点:一、对硬件平台进行逐层解耦和适配,从cpu/soc体系结构,外设驱动支持到操作系统适配,采用逐层适配的方式组织,尽可能复用了硬件组件,可以实现不同硬件组件的适配组合,从而实现对各种硬件环境的适配和支持,后续如果需要支持新的硬件只需要实现差异组件即可。
42.二、可以适配多种实时操作系统,在实时操作系统和外设驱动及硬件平台之间,加入实时操作系统适配层,用于对接不同硬件平台,在实时操作系统和应用层之间,加入实时操作系统接口层,完全屏蔽不同操作系统和硬件平台的差异,通过统一的接口支持任务调度、内存管理、外设管理等核心功能,方便应用层调用,从而实现嵌入式应用的可移植性,方便根据应用场景选择合适的实时操作系统内核。
43.三、系统支持高度灵活可配置,支持针对不同硬件环境和应用场景,配置和裁剪软件组件,指定系统运行的硬件平台和运行的实时操作系统内核,选择需要的外设组件,修改系统的资源分配和地址等,方便定制嵌入式实时系统,配置系统组件,选择系统功能等。
44.四、提供多种交叉编译链工具和标准函数库支持,对应任意硬件环境,均可以从构建工具层选择与硬件环境相适配的编译链工具和标准函数库。并且支持新增编译链工具和标准函数库,从而能够支持适配任意硬件环境的软件系统构建。
45.基于上述的嵌入式软件,可以通过一套嵌入式软件,构建适配不同硬件平台、不同操作系统内核以及不同编译链和函数库的软件系统,从而使得软件系统的构建更加高效、便捷,能够摆脱硬件平台、操作系统内核以及编译链和函数库对软件系统构建的束缚。
46.本技术实施例提出新的软件系统构建方案,使得软件系统构建能够兼容不同的编译链和函数库。
47.在对具体的软件系统构建方案进行介绍前,首先对于方案应用场景进行示例性介绍。
48.作为一种示例,本技术实施例提出的软件系统构建方案,能够适用于处理器、计算机、智能设备等具备数据处理能力的硬件装置中。图2所示的嵌入式软件能够运行于处理器、计算机、智能设备等硬件装置中,用户通过该硬件装置向装置中运行的嵌入式软件输入软件系统构建请求,嵌入式软件通过执行本技术实施例提出的软件系统构建方案,即可实现软件系统的构建。
49.作为另一种示例,本技术实施例提出的软件系统构建方案,也可以应用于图3所示的网络系统。在该网络系统中,上述的嵌入式软件运行于云侧设备,该云侧设备可以是云端服务器、云端处理器等,同时,在端侧设备上配置用于访问和调用云侧设备上运行的嵌入式软件的软件开发平台。云侧设备和端侧设备通过网络连接。用户在端侧设备登录软件开发平台,并且在平台上输入软件系统构建需求,云侧设备上的嵌入式软件基于用户在平台上输入的软件系统构建需求,通过执行本技术实施例提出的软件系统构建方案,能够构建得到符合用户需求的软件系统。
50.下面,对本技术实施例提出的新的软件系统构建方案分别进行介绍。
51.本技术实施例还提出一种能够兼容不同编译链和函数库的软件系统构建方法,该方法可通过图2所示的嵌入式软件实现。作为一种可选的实施方式,本技术实施例提出如图4所示的嵌入式软件,并通过该嵌入式软件实现兼容不同编译链和函数库的软件系统的构建。
52.图4所示的嵌入式软件包含了图2所示的嵌入式软件中的用于支持不同编译链和/或标准函数库的资源。参见图4所示,该嵌入式软件包括构建工具层、硬件平台支持层(具体由硬件驱动、功能组件、处理器抽象层、编译链构成)、实时操作系统层和嵌入式应用层。
53.其中,构建工具层包括交互配置工具、交叉编译链和函数库接口。
54.交互配置工具为用户提供软件系统配置接口,使得用户可以通过交互配置工具配置不同的软件系统配置参数,支持更多的定制化需求。
55.交叉编译链用于支持不同硬件平台的执行镜像编译。交叉编译链与硬件平台具有严格的适配关系,即特定的交叉编译链适用于特定的硬件平台,一旦硬件平台发生变化时,需要更换与变化后的硬件平台相适配的交叉编译链进行适用于变化后的硬件平台的软件系统构建。比如需要用户重新编写编译链脚本。
56.为了提高软件系统构建效率,尤其是提高跨硬件平台的软件系统构建效率,本技术实施例在图4所示的嵌入式软件中设置了多种不同的、应用于不同硬件平台的交叉编译链,从而可以供用户任意选择,从而减轻用户在针对不同硬件平台构建软件系统时编写编译链脚本的工作量。
57.函数库接口用于调用标准函数库或函数库中的函数,该函数库接口与标准函数库对应。在图4所示的嵌入式软件中,包含了多种不同的标准函数库,这些标准函数库都可以通过该函数库接口调用。
58.硬件驱动、功能组件、处理器抽象层和编译链的具体结构和功能,可以参见图2所示的嵌入式软件的介绍,或者参见常规的嵌入式实时操作系统的相关结构介绍。
59.实时操作系统层和嵌入式应用层,则用于提供嵌入式实时操作系统内核以及嵌入式实时应用。
60.本技术实施例提出应用于图4所示的嵌入式软件的软件系统构建方法,参见图4所示,在该嵌入式软件系统的编译链资源中,包括多种不同的交叉编译链。不同的交叉编译链分别对应用于对不同硬件平台的软件系统进行编译,从而实现应用与不同硬件平台的软件系统的构建。
61.基于图4所示的嵌入式软件,参见图5所示,本技术实施例提出的软件系统构建方法,包括:s101、获取请求信息,所述请求信息包括待构建的软件系统所适用的硬件平台信息和/或编译链信息。
62.具体的,用户可以通过交互配置工具输入软件系统构建的请求信息,例如在图3所示的网络系统中,用户可以在端侧设备登录软件开发平台,通过该软件开发平台访问嵌入式软件的交互配置工具端口,并且通过该端口输入软件系统构建的请求信息。在该请求信息中,包括待构建的软件系统的配置参数信息,比如包括待构建的软件系统所适用的硬件平台的配置信息,构建该待构建的软件系统所适用的编译链信息,还可以包括待构建的软件系统所适用的系统内核的配置信息、待构建的软件系统所适用的系统应用的配置信息
等。
63.在本技术实施例中,重点关注用户输入的软件系统构建请求信息中的待构建的软件系统所适用的硬件平台的配置信息,和/或,构建该待构建的软件系统所适用的编译链信息。因此,本技术实施例在获取到上述的请求信息后,从该请求信息中解析获取待构建的软件系统所适用的硬件平台的配置信息,和/或,构建该待构建的软件系统所适用的编译链信息。由于软件系统所适用的硬件平台与构建该软件系统所适用的编译链之间存在确定的适配关系,因此,当确定待构建的软件系统所适用的硬件平台的配置信息时,可以根据该硬件平台配置信息直接确定与其对应的适用编译链。
64.因此,在上述的请求信息中,可以包含待构建的软件系统所适用的硬件平台的配置信息,和构建该待构建的软件系统所适用的编译链信息两者中的任意一项或两项。相应的,本技术实施例从上述请求信息中解析获取待构建的软件系统所适用的硬件平台的配置信息,和构建该待构建的软件系统所适用的编译链信息中的一项或两项。
65.用户可以通过配置文件的方式编写软件系统构建请求信息,并将该配置文件通过交互配置工具输入嵌入式软件,嵌入式软件通过对该配置文件进行解析,即可获取待构建的软件系统所适用的硬件平台信息和/或编译链信息。
66.s102、根据所述请求信息,从预设的编译链资源中,确定出目标编译链。
67.其中,上述的预设的编译链资源,包括如图4所示的嵌入式软件的构建工具层中的能够适用于不同硬件平台的交叉编译链,比如64位交叉编译链、32位交叉编译链等。
68.嵌入式软件在获取到用户上传的软件系统构建请求信息后,对该请求信息进行解析,从中获取到待构建的软件系统所适用的硬件平台信息和/或编译链信息后,基于该硬件平台信息和/或编译链信息,从上述的编译链资源中,查找适用于该硬件平台信息,和/或与该编译链信息相应的编译链,作为目标编译链。
69.例如,假设用户想要构建一个适用于树莓派4b的软件系统,则用户在上传的软件系统构建请求中记录该树莓派4b硬件平台的配置信息。嵌入式软件接收到该请求信息后,可以从中解析得到树莓派4b硬件平台的配置信息,并且基于该配置信息,将编译链资源中适用于树莓派4b硬件平台的交叉编译链aarch64-none-elf,确定为目标编译链。
70.s103、通过所述目标编译链,构建得到软件系统。
71.在确定上述的目标编译链之后,基于该目标编译链,以及图4中所示的硬件驱动、功能组件、处理器抽象层、实时操作系统层和嵌入式应用层,即可构建得到符合用户需求的软件系统。
72.通过上述介绍可见,本技术实施例提出的软件系统构建方法,预先设置了由适用于不同硬件平台的编译链构成的编译链资源,在此基础上,该方法在构建软件系统时,从编译链资源中选出与待构建的软件系统所适用的硬件平台信息和/或编译链信息相适配的编译链,然后基于选出的编译链构建得到软件系统。该方案能够支持选用符合要求的编译链工具构建得到适用于不同硬件平台的软件系统,从而提高了软件系统构建效率,尤其是提高了软件系统在不同硬件平台迁移应用的场景下的软件系统构建效率。
73.在一些实施例中,在用户上传的软件系统构建请求信息中,还包括系统配置信息,该系统配置信息,包括待构建的软件系统所需的软件组件信息、编译和链接的配置信息,以及构建输出的镜像文件的格式和类型信息。
74.其中,待构建的软件系统所需的软件组件信息,是指待构建的软件系统所需要的软件功能组件的相关信息,比如待构建的软件系统所需要的驱动组件、协议栈组件、数据采集组件等等。
75.待构建的软件系统所需的软件组件信息,可以是请求信息中直接记载的软件组件的信息,也可以是通过待构建的软件系统的功能而解析确定的用于实现该功能的软件组件的信息。例如,假设待构建的软件系统需要实现连接一个usb摄像头采集数据的功能,则通过对该功能进行解析,该软件系统需要usb控制器驱动组件和usb协议栈组件这两种软件组件。
76.上述的编译和链接的配置信息,主要是指对待构建的软件系统进行编译和链接的参数信息,比如在编译过程中打开硬件浮点支持。
77.上述的构建输出的镜像文件的格式和类型信息,是指在对待构建的软件系统进行编译后输出的镜像文件的格式和类型的信息,比如编译完成后输出elf格式的镜像文件。
78.基于上述的系统配置信息,当通过目标编译链构建软件系统时,通过该目标编译链,按照上述的系统配置信息进行软件系统编译,得到软件系统。
79.示例性的,首先,根据系统配置信息中的软件组件信息,从软件组件资源中确定出与该软件组件信息对应的目标软件组件。
80.上述的软件组件资源,是指图4所示的嵌入式软件中所预先设置的软件功能组件资源。从软件组件资源中选择出包含上述的软件组件信息对应的软件功能组件的软件组件,作为目标软件组件。并将该目标软件组件加入编译构建。
81.需要说明的是,上述的目标软件组件包含上述的系统配置信息中的软件组件信息对应的软件组件,此外,还可能包含其他功能的软件组件。为了使得参与编译构建的软件组件是待构建的软件系统所需的软件组件,本技术实施例还基于上述的软件组件信息,对上述确定出的目标软件组件进行裁剪,具体是将该目标软件组件中的、未包含在上述软件组件信息中的软件组件删除,剩余的软件组件作为待编译软件组件。比如,假设待构建的软件系统要实现连接一个usb摄像头采集数据,则实现这一功能需要usb控制器驱动组件和usb协议栈组件的支持,因此从软件组件资源中选择出包含usb控制器驱动组件和usb协议栈组件的软件组件,作为目标软件组件,在该目标软件组件中可能还包括gpio驱动组件,由于gpio驱动组件并不是待构建的软件系统所需的软件组件,因此从该目标软件组件中将该gpio驱动组件删除,在此基础上,将该目标软件组件中剩余的软件组件,作为待编译软件组件。
82.然后,基于上述的待编译软件组件、所述编译和链接的配置信息,以及所述构建输出的镜像文件的格式和类型信息,通过所述目标编译链构建得到软件系统。
83.上述处理过程实现了基于用户输入的请求信息,自动获取构建软件系统所需的软件组件和配置参数信息,然后基于构建软件系统所需的软件组件,获取相应的软件组件资源并按照上述配置参数编译得到待构建软件系统,该过程实现了对软件组件资源的自动获取、能够更加高效地实现软件系统的构建。
84.在一些实施例中,参见图4所示,在用于构建软件系统的嵌入式软件中,还在构建工具层设置有函数库接口,基于该函数库接口,能够访问和调用设置于该嵌入式软件中的标准函数库,这些标准函数库构成该嵌入式软件的标准函数库资源,在该标准函数库资源
中,包括多种不同的标准函数库。
85.上述的标准函数库,为构建待构建的软件系统所需的标准函数库提供了基础,即,可以从嵌入式软件的标准函数库资源中,选择构建软件系统所需的标准函数库,从而可以基于选择的标准函数库构建软件系统。
86.基于上述设置,当用户上传构建软件系统的请求信息时,可以在请求信息中添加待构建的软件系统所需的标准函数库信息。该标准函数库信息,包括但不限于是标准函数库名称,还可以包括标准函数库的实现方式、使用方式(比如函数库是否支持浮点数运算等)、内存访问策略(比如是否支持内存不对齐访问等)中的至少一项。
87.当用户将包含待构建的软件系统所需的标准函数库信息输入图4所示的嵌入式软件时,该嵌入式软件根据该请求信息,从上述预先设置的标准函数库资源中,确定出与该标准函数库信息对应的标准函数库,作为目标标准函数库。
88.基于上述处理,当通过上述的目标编译链构建软件系统时,可以通过该目标编译链和该目标标准函数库,构建得到软件系统。
89.其中,通过图4所述的嵌入式软件的构建工具层的函数库接口,可以调用或获取目标标准函数库,然后基于获取到的目标标准函数库和目标编译链,即可执行对请求信息中所记载的待构建的软件系统的构建。
90.基于上述介绍可知,本技术实施例提出的软件系统构建方法,不仅提供了多种交叉编译链工具,从而可以实现对适配任意硬件平台或适用任意编译链的软件系统的构建,并且,该方法还提供了多种标准函数库,从而可以实现对基于任意标准函数库的软件系统的构建,从而进一步提升了软件系统构建的便利性和效率。
91.在一些实施例中,本技术提出的软件系统构建方法还支持用户新增编译链和/或标准函数库。
92.具体而言,在获取到用户上传的请求信息后,可以根据该请求信息中记载的待构建的软件系统所适用的硬件平台信息和/或编译链信息,从编译链资源中查找相对应的编译链。
93.若编译链资源中不包括与待构建的软件系统所适用的硬件平台信息和/或编译链信息相对应的编译链,则将与该待构建的软件系统所适用的硬件平台信息和/或编译链信息相对应的编译链信息输出,使用户可以根据该编译链信息,构建或开发与该编译链信息相应的编译链。
94.用户在构建或开发得到与该编译链信息相应的编译链后,将该编译链输入图4所示嵌入式软件,嵌入式软件获取该编译链,并将获取的该编译链存储至编译链资源中,也就是存储至构建工具层。
95.经过上述处理后,嵌入式软件即可从编译链资源中,找到与待构建的软件系统所适用的硬件平台信息和/或编译链信息相对应的编译链,并基于该编译链构建符合用户需求的软件系统。
96.另一方面,在获取到用户上传的请求信息后,可以根据该请求信息中记载的标准函数库信息,从标准函数库资源中查找相对应的标准函数库。
97.若标准函数库资源中不包括与上述标准函数库信息相对应的标准函数库,则将与该标准函数库信息相对应的标准函数库的相关信息输出,使用户可以根据该相关信息,构
建或开发与该标准函数库信息相应的标准含数据。
98.用户在构建或开发得到与该标准函数库信息相应的标准函数库后,将该标准函数库输入图4所示嵌入式软件,嵌入式软件获取该标准函数库,并将获取的该标准函数库存储至标准函数库资源中。
99.经过上述处理后,嵌入式软件即可从标准函数库资源中,找到与请求信息中的标准函数库信息相对应的标准函数库,并基于该标准函数库构建符合用户需求的软件系统。
100.由此可见,本技术实施例提出的软件系统构建方法,能够支持用户即时向编译链资源中添加新的编译链和/或向标准函数库资源中添加新的标准函数库,从而使得该软件系统构建方法能够实现对基于任意编译链和/或任意标准函数库的软件系统构建,并且该方法所用的编译链资源和/或标准函数库资源越来越丰富,该方法能够在实际应用中的软件系统构建效率越来越高。
101.在上述的各实施例中,在构建得到软件系统后,可以对构建得到的软件系统进行功能测试,若测试通过则对构建的软件系统进行封装,若测试不通过则可以调整配置信息或参数,重复构建软件系统,整个过程对于用户来说,均只需要配置参数和数据、调整业务逻辑即可,使得软件系统构建的效率和便利性都大大提高。
102.与图5所示的软件系统构建方法相对应的,本技术实施例还提出一种软件系统构建装置,该装置包括:信息获取单元,用于获取请求信息,所述请求信息包括待构建的软件系统所适用的硬件平台信息和/或编译链信息;资源配置单元,用于根据所述请求信息,从预设的编译链资源中,确定出目标编译链,所述编译链资源包括适用于不同硬件平台的编译链;所述目标编译链是与所述待构建的软件系统所适用的硬件平台信息和/或编译链信息相对应的编译链;系统构建单元,用于通过所述目标编译链,构建得到软件系统。在一些实施例中,所述请求信息中还包括系统配置信息,所述系统配置信息包括所述待构建的软件系统所需的软件组件信息、编译和链接的配置信息,以及构建输出的镜像文件的格式和类型信息;
103.所述通过所述目标编译链,构建得到软件系统,包括:通过所述目标编译链,按照所述系统配置信息进行软件系统编译,得到软件系统。
104.在一些实施例中,通过所述目标编译链,按照所述系统配置信息进行软件系统编译,得到软件系统,包括:根据所述软件组件信息,从软件组件资源中确定出与所述软件组件信息对应的目标软件组件;基于所述软件组件信息,对所述目标软件组件进行裁剪,得到待编译软件组件;基于所述待编译软件组件、所述编译和链接的配置信息,以及所述构建输出的镜像文件的格式和类型信息,通过所述目标编译链构建得到软件系统。在一些实施例中,所述请求信息中还包括所述待构建的软件系统所需的标准函数库信息;
105.所述资源配置单元还用于:根据所述请求信息,从预设的标准函数库资源中,确定出与所述标准函数库信息
对应的目标标准函数库,所述标准函数库资源包括多个不同的标准函数库;
106.通过所述目标编译链,构建得到软件系统,包括:通过所述目标编译链和所述目标标准函数库,构建得到软件系统。
107.在一些实施例中,所述标准函数库信息,包括标准函数库名称,以及包括标准函数库的实现方式、使用方式、内存分配策略中的至少一项。
108.在一些实施例中,所述资源配置单元还用于:在所述编译链资源中不存在与所述待构建的软件系统所适用的硬件平台信息和/或编译链信息相对应的编译链的情况下,获取与所述待构建的软件系统所适用的硬件平台信息和/或编译链信息相对应的编译链,并将获取的编译链存储至所述编译链资源中。
109.在一些实施例中,所述资源配置单元还用于:在所述标准函数库资源中不存在与所述标准函数库信息对应的标准函数库的情况下,获取与所述标准函数库信息对应的标准函数库,并将获取的标准函数库存储至所述标准函数库资源中。
110.本实施例提供的软件系统构建装置,与图5所示的软件系统构建方法属于同一申请构思,可执行图5所示的软件系统构建方法,具备执行该方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本技术上述实施例提供的软件系统构建方法的具体处理内容,此处不再加以赘述。
111.以上的信息获取单元、资源配置单元和系统构建单元所实现的功能可以分别由相同或不同的处理器实现,本技术实施例不作限定。
112.应理解以上装置中的单元可以以处理器调用软件的形式实现。例如该装置包括处理器,处理器与存储器连接,存储器中存储有指令,处理器调用存储器中存储的指令,以实现以上任一种方法或实现该装置各单元的功能,其中处理器可以为通用处理器,例如cpu或微处理器等,存储器可以为装置内的存储器或装置外的存储器。或者,装置中的单元可以以硬件电路的形式实现,可以通过对硬件电路的设计,实现部分或全部单元的功能,该硬件电路可以理解为一个或多个处理器;例如,在一种实现中,该硬件电路为asic,通过对电路内元件逻辑关系的设计,实现以上部分或全部单元的功能;再如,在另一种实现中,该硬件电路可以通过pld实现,以fpga为例,其可以包括大量逻辑门电路,通过配置文件来配置逻辑门电路之间的连接关系,从而实现以上部分或全部单元的功能。以上装置的所有单元可以全部通过处理器调用软件的形式实现,或全部通过硬件电路的形式实现,或部分通过处理器调用软件的形式实现,剩余部分通过硬件电路的形式实现。
113.在本技术实施例中,处理器是一种具有信号的处理能力的电路,在一种实现中,处理器可以是具有指令读取与运行能力的电路,例如cpu、微处理器、gpu、或dsp等;在另一种实现中,处理器可以通过硬件电路的逻辑关系实现一定功能,该硬件电路的逻辑关系是固定的或可以重构的,例如处理器为asic或pld实现的硬件电路,例如fpga等。在可重构的硬件电路中,处理器加载配置文档,实现硬件电路配置的过程,可以理解为处理器加载指令,以实现以上部分或全部单元的功能的过程。此外,还可以是针对人工智能设计的硬件电路,其可以理解为一种asic,例如npu、tpu、dpu等。
114.可见,以上装置中的各单元可以是被配置成实施以上方法的一个或多个处理器(或处理电路),例如:cpu、gpu、npu、tpu、dpu、微处理器、dsp、asic、fpga,或这些处理器形式
中至少两种的组合。
115.此外,以上装置中的各单元可以全部或部分可以集成在一起,或者可以独立实现。在一种实现中,这些单元集成在一起,以soc的形式实现。该soc中可以包括至少一个处理器,用于实现以上任一种方法或实现该装置各单元的功能,该至少一个处理器的种类可以不同,例如包括cpu和fpga,cpu和人工智能处理器,cpu和gpu等。
116.本技术另一实施例还提出一种软件系统构建设备,参见图6所示,该设备包括:存储器200和处理器210;其中,所述存储器200与所述处理器210连接,用于存储程序;所述处理器210,用于通过运行所述存储器200中存储的程序,实现上述任一实施例公开的软件系统构建方法。
117.具体的,上述软件系统构建设备还可以包括:总线、通信接口220、输入设备230和输出设备240。
118.处理器210、存储器200、通信接口220、输入设备230和输出设备240通过总线相互连接。其中:总线可包括一通路,在计算机系统各个部件之间传送信息。
119.处理器210可以是通用处理器,例如通用中央处理器(cpu)、微处理器等,也可以是特定应用集成电路(application-specificintegrated circuit,asic),或一个或多个用于控制本发明方案程序执行的集成电路。还可以是数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
120.处理器210可包括主处理器,还可包括基带芯片、调制解调器等。
121.存储器200中保存有执行本发明技术方案的程序,还可以保存有操作系统和其他关键业务。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。更具体的,存储器200可以包括只读存储器(read-onlymemory,rom)、可存储静态信息和指令的其他类型的静态存储设备、随机存取存储器(random access memory,ram)、可存储信息和指令的其他类型的动态存储设备、磁盘存储器、flash等等。
122.输入设备230可包括接收用户输入的数据和信息的装置,例如键盘、鼠标、摄像头、扫描仪、光笔、语音输入装置、触摸屏、计步器或重力感应器等。
123.输出设备240可包括允许输出信息给用户的装置,例如显示屏、打印机、扬声器等。
124.通信接口220可包括使用任何收发器一类的装置,以便与其他设备或通信网络通信,如以太网,无线接入网(ran),无线局域网(wlan)等。
125.处理器210执行存储器200中所存放的程序,以及调用其他设备,可用于实现本技术上述实施例所提供的任意一种软件系统构建方法的各个步骤。
126.本技术实施例还提出一种芯片,该芯片包括处理器和数据接口,所述处理器通过所述数据接口读取并运行存储器上存储的程序,以执行上述任意实施例所介绍的软件系统构建方法,具体处理过程及其有益效果可参见上述的软件系统构建方法的实施例介绍。
127.除了上述方法和设备以外,本技术的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行上述任意实施
例中描述的软件系统构建方法中的步骤。
128.所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本技术实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c++等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
129.此外,本技术的实施例还可以是计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行上述任意实施例中描述的软件系统构建方法中的步骤。
130.对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。
131.需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
132.本技术各实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减,各实施例中记载的技术特征可以进行替换或者组合。
133.本技术各实施例种装置及终端中的模块和子模块可以根据实际需要进行合并、划分和删减。
134.本技术所提供的几个实施例中,应该理解到,所揭露的终端,装置和方法,可以通过其它的方式实现。例如,以上所描述的终端实施例仅仅是示意性的,例如,模块或子模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个子模块或模块可以结合或者可以集成到另一个模块,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
135.作为分离部件说明的模块或子模块可以是或者也可以不是物理上分开的,作为模块或子模块的部件可以是或者也可以不是物理模块或子模块,即可以位于一个地方,或者也可以分布到多个网络模块或子模块上。可以根据实际的需要选择其中的部分或者全部模块或子模块来实现本实施例方案的目的。
136.另外,在本技术各个实施例中的各功能模块或子模块可以集成在一个处理模块中,也可以是各个模块或子模块单独物理存在,也可以两个或两个以上模块或子模块集成在一个模块中。上述集成的模块或子模块既可以采用硬件的形式实现,也可以采用软件功能模块或子模块的形式实现。
137.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业
技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
138.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件单元,或者二者的结合来实施。软件单元可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的计算机可读存储介质中。
139.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
140.对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

技术特征:
1.一种软件系统构建方法,其特征在于,包括:获取请求信息,所述请求信息包括待构建的软件系统所适用的硬件平台信息和/或编译链信息;根据所述请求信息,从预设的编译链资源中,确定出目标编译链;所述编译链资源包括适用于不同硬件平台的编译链;所述目标编译链是与所述待构建的软件系统所适用的硬件平台信息和/或编译链信息相对应的编译链;通过所述目标编译链,构建得到软件系统。2.根据权利要求1所述的方法,其特征在于,所述请求信息中还包括系统配置信息,所述系统配置信息包括所述待构建的软件系统所需的软件组件信息、编译和链接的配置信息,以及构建输出的镜像文件的格式和类型信息;所述通过所述目标编译链,构建得到软件系统,包括:通过所述目标编译链,按照所述系统配置信息进行软件系统编译,得到软件系统。3.根据权利要求2所述的方法,其特征在于,通过所述目标编译链,按照所述系统配置信息进行软件系统编译,得到软件系统,包括:根据所述软件组件信息,从软件组件资源中确定出与所述软件组件信息对应的目标软件组件;基于所述软件组件信息,对所述目标软件组件进行裁剪,得到待编译软件组件;基于所述待编译软件组件、所述编译和链接的配置信息,以及所述构建输出的镜像文件的格式和类型信息,通过所述目标编译链构建得到软件系统。4.根据权利要求1所述的方法,其特征在于,所述请求信息中还包括所述待构建的软件系统所需的标准函数库信息;所述方法还包括:根据所述请求信息,从预设的标准函数库资源中,确定出与所述标准函数库信息对应的目标标准函数库,所述标准函数库资源包括多个不同的标准函数库;通过所述目标编译链,构建得到软件系统,包括:通过所述目标编译链和所述目标标准函数库,构建得到软件系统。5.根据权利要求4所述的方法,其特征在于,所述标准函数库信息,包括标准函数库名称,以及包括标准函数库的实现方式、使用方式、内存分配策略中的至少一项。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述编译链资源中不存在与所述待构建的软件系统所适用的硬件平台信息和/或编译链信息相对应的编译链的情况下,获取与所述待构建的软件系统所适用的硬件平台信息和/或编译链信息相对应的编译链,并将获取的编译链存储至所述编译链资源中。7.根据权利要求4所述的方法,其特征在于,所述方法还包括:在所述标准函数库资源中不存在与所述标准函数库信息对应的标准函数库的情况下,获取与所述标准函数库信息对应的标准函数库,并将获取的标准函数库存储至所述标准函数库资源中。8.一种软件系统构建装置,其特征在于,包括:信息获取单元,用于获取请求信息,所述请求信息包括待构建的软件系统所适用的硬件平台信息和/或编译链信息;
资源配置单元,用于根据所述请求信息,从预设的编译链资源中,确定出目标编译链,所述编译链资源包括适用于不同硬件平台的编译链;所述目标编译链是与所述待构建的软件系统所适用的硬件平台信息和/或编译链信息相对应的编译链;系统构建单元,用于通过所述目标编译链,构建得到软件系统。9.一种软件系统构建设备,其特征在于,包括:存储器和处理器;所述存储器与所述处理器连接,用于存储程序;所述处理器,用于通过运行所述存储器中的程序,实现如权利要求1至7中任意一项所述的软件系统构建方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时,实现如权利要求1至7中任意一项所述的软件系统构建方法。

技术总结
本申请提出一种软件系统构建方法、装置、设备及计算机可读存储介质,该方法包括:获取请求信息,所述请求信息包括待构建的软件系统所适用的硬件平台信息和/或编译链信息;根据所述请求信息,从预设的编译链资源中,确定出目标编译链;所述编译链资源包括适用于不同硬件平台的编译链;所述目标编译链是与所述待构建的软件系统所适用的硬件平台信息和/或编译链信息相对应的编译链;通过所述目标编译链,构建得到软件系统。上述方案至少能够使得嵌入式实时操作系统的软件系统的构建能够兼容不同的编译链工具,实现对适用于任意编译链的软件系统的构建。件系统的构建。件系统的构建。


技术研发人员:朱耿宇 黄鹤
受保护的技术使用者:飞腾信息技术有限公司
技术研发日:2023.06.14
技术公布日:2023/8/5
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐