CN113961232A - 提供集成开发环境的终端、方法和平台服务器 - Google Patents
提供集成开发环境的终端、方法和平台服务器 Download PDFInfo
- Publication number
- CN113961232A CN113961232A CN202010703261.5A CN202010703261A CN113961232A CN 113961232 A CN113961232 A CN 113961232A CN 202010703261 A CN202010703261 A CN 202010703261A CN 113961232 A CN113961232 A CN 113961232A
- Authority
- CN
- China
- Prior art keywords
- component
- components
- application
- project
- chip
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
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
技术领域
本发明涉及嵌入式研发领域,具体而言,涉及一种在嵌入式开发过程中提供集成开发环境的终端和方法,还涉及一种平台服务器和计算机可读介质。
背景技术
嵌入式系统(Embedded System)是一种嵌入在对象体中的专用计算机系统,通过运行嵌入式系统上的应用程序实现满足需求的应用。由于嵌入式系统基于软硬件协同工作,因此在嵌入式系统的开发过程中需要对嵌入式系统的软件和硬件进行协同开发。由于嵌入式系统本身通常是一个软硬件资源受限的系统,所以在嵌入式系统的开发过程中,直接在嵌入式系统的硬件平台上编写软件几乎是不可能实现的。
因此,为了实现嵌入式系统的软硬件开发,可以由计算机等终端设备提供集成开发环境(Integration Development Environment,简称IDE),该IDE用于提供嵌入式系统的开发过程所需的资源和功能。在IDE中,开发人员可以根据实际应用完成硬件配置(例如选择所需的芯片以及与该芯片耦接的硬件部件),并面向该硬件配置进行代码编写、编译、下载、调试等一系列操作,从而高效地实现嵌入式系统的软硬件协同开发,以使开发完成的嵌入式系统能够实现所需的功能。
随着嵌入式系统可选的各种器件的选型越来越多样化,嵌入式系统内的硬件电路结构也越来越多样化,因此希望能够提升嵌入式系统的开发效率。然而,在对不同的嵌入式系统进行开发时,需要在传统的IDE中逐步完成面向芯片的软件开发、面向芯片所在电路板的软件开发以及面向应用的软件开发等多个步骤,即使对于面向相同应用的两个嵌入式系统,一旦这两个嵌入式系统的实现不同,也需要在传统IDE中按顺序逐步地执行这些开发步骤才能完成整套的复杂开发流程,无法灵活地复用已有信息。
因此,希望进一步改善IDE,以提升嵌入式系统的开发效率。
发明内容
有鉴于此,本发明提出了一种提供集成开发环境的终端、方法、平台服务器和计算机可读介质,以解决上述问题。
为了达到这个目的,根据本发明的第一方面,本发明实施例提供一种提供集成电路开发环境的终端,所述终端接收用户要开发的应用的信息,所述终端根据所述应用的信息生成嵌入式装置的设计文档。所述终端包括:存储器,适于存储多个组件;工程管理器,与所述存储器通信,适于根据所述应用的信息在工程中独立地安装所述多个组件之一;以及编译器,基于所述工程生成所述设计文档,其中,所述工程至少包括选自所述多个组件的芯片组件和/或装置组件,所述芯片组件对所述嵌入式装置的芯片的内部操作提供支持,所述装置组件对所述芯片的外围操作提供支持。
在一些可选的实施例中,所述工程包括选自所述多个组件中与所述应用对应的多个工程组件,所述多个工程组件中的各组件分别为以下类别之一:芯片组件、装置组件、应用组件、操作系统组件和中间件组件,其中,所述应用组件用于对所述嵌入式装置的应用程序提供支持,所述中间件组件用于对所述应用程序的可复用部分提供支持,所述操作系统组件用于对所述应用程序所基于的操作系统提供支持。将工程划分为不同类别的组件有利于实现工程的细化,使得每个细化的部分有机会被独立复用、且能够与其它部分并行开发。
在一些可选的实施例中,所述多个工程组件包括:唯一确定的芯片组件和装置组件;至多一个所述应用组件;以及至多一个所述操作系统组件。
在一些可选的实施例中,所述工程还包括配置模块,用于提供工程配置文件并提供组件化属性,以便于所述工程支持组件的安装和卸载,所述工程管理器还适于将已安装在所述工程中的组件独立地从所述工程中卸载。相比于传统工程,配置模块在本公开实施例的工程中扩展了组件化属性,使得工程可以被配置为允许组件的安装/卸载,也可以被配置为不允许组件的安装/卸载。
在一些可选的实施例中,所述工程由所述配置模块和所述多个工程组件组成,使得开发人员可以通过对配置模块的简单配置、选择多个工程组件、对被选择的工程组件进行适应性的开发等简单步骤获得与所需应用对应的工程,各个工程组件可以被平行地开发,简化了嵌入式开发流程,提升了嵌入式开发的效率。
在一些可选的实施例中,每个所述工程组件被相应的软件接口封装,所述软件接口用于对外提供该组件的各种可调用功能和/或从外部获得该组件所需的各种可调用功能,相同类别的组件包含统一的软件接口,不同的工程组件经由软件接口交换信息。基于软件接口,存在调用关系的组件可以分别被独立开发而无需协同开发,提升了单独组件的独立性、降低了组件之间的耦合度,为开发人员降低了组件开发的难度和复杂度,进一步提升了嵌入式开发的效率、简化嵌入式开发的流程。
在一些可选的实施例中,每个所述工程组件包括以下信息的一种或多种:该组件的身份标识、名称、版本、类别、描述信息;以及与该组件存在调用关系的组件类别,以便于不同类别的所述工程组件基于组件间的调用关系联合对所述嵌入式装置提供支持,在各种组件类别中,所述装置组件、所述应用组件和/或所述中间件组件被配置为与所述芯片组件存在调用关系,所述应用组件和/或所述中间件组件被配置为与所述操作系统组件存在调用关系。
在一些可选的实施例中,在所述工程中安装有所述组件的情况下,所述编译器对各个所述工程组件执行编译操作,以分别生成相应的组件库文件,并对编译生成的全部组件库文件执行链接,以生成所述设计文档。
在一些可选的实施例中,所述芯片的内部操作包括对所述芯片内部的处理器核进行初始化的操作,所述芯片的外围操作包括对所述芯片的引脚进行初始化的操作以及对所述芯片的外围硬件进行驱动的操作。
在一些可选的实施例中,所述工程管理器还用于将所述工程和/或在所述工程中被更新的所述工程组件提供至所述存储器以作为可被所述工程管理器复用的资源。基于此,存储器中的可复用资源可以被不断更新和/或补充,工程管理器可以在对其它应用进行嵌入式开发时从存储器中获得之前上传的资源,进一步提升了代码的复用率。
在一些可选的实施例中,所述终端还包括:交互模块,用于提供图形界面以显示所述存储器中的所述多个组件和/或与所述应用对应的所述多个工程组件,并接收用户提供的所述应用的信息以提供给所述工程管理器。交互模块例如用于支持显示器、键盘、鼠标、触控屏等输入/输出设备。
在一些可选的实施例中,所述终端还包括:收发器,与所述存储器通信,以便于将平台服务器提供的组件作为所述多个组件之一存储至所述存储器,和/或将所述存储器提供的所述多个组件之一上传至所述服务器。基于收发器,终端可以与平台服务器通信,使得终端能够与平台服务器交换资源,例如以组件为单位交换信息。
根据本公开的第二方面,提供了一种平台服务器,所述平台服务器根据要开发的应用向终端返回开发所述应用所需的组件。所述平台服务器包括:存储器,适于存储多个组件;收发器,接收所述终端提供的所述应用的信息;以及资源管理器,适于根据所述收发器提供的所述应用的信息在所述多个组件中选定相应的组件,以便于所述收发器向所述终端提供被选定的所述组件,其中,所述多个组件包括至少一个芯片组件和/或至少一个装置组件,各所述芯片组件对相应的嵌入式装置的芯片的内部操作提供支持,各所述装置组件对相应的嵌入式装置中的芯片的外围操作提供支持。平台服务器以组件的形式组织资源,以便于终端至少可以从平台服务器中查找获得应用所需的组件,从而实现工程。在一些可选的实施例中,被存储在平台服务器中的组件可以是经过审核或认证的组件,以保证终端从平台服务器中获得的组件是正确有效的、安全的。
在一些可选的实施例中,所述多个组件还包括:至少一个应用组件、至少一个操作系统组件和/或至少一个中间件组件,其中,各所述应用组件分别用于对相应的嵌入式装置的应用程序提供支持,各所述中间件组件分别用于对相应的嵌入式装置的应用程序的可复用部分提供支持,各所述操作系统组件分别用于对相应的嵌入式装置的应用程序所基于的操作系统提供支持。
在一些可选的实施例中,每个所述组件包括以下信息的一种或多种:该组件的身份标识、名称、版本、类别、描述信息;以及与该组件存在调用关系的组件类别,以便于与所述应用对应的不同类别的所述组件基于组件间的调用关系联合对相应的所述嵌入式装置提供支持,在各种组件类别中,所述装置组件、所述应用组件和/或所述中间件组件被配置为与所述芯片组件存在调用关系,所述应用组件和/或所述中间件组件被配置为与所述操作系统组件存在调用关系。
在一些可选的实施例中,所述资源管理器根据所述应用的信息在所述存储器中选定相应的组件集,以便于所述收发器向所述终端提供被选定的所述组件集,所述组件集包括与所述应用对应且存在调用关系的多个所述组件。
在一些可选的实施例中,所述收发器还适于接收所述终端上传的组件和/或工程以作为可被所述资源管理器和所述终端复用的资源。
在一些可选的实施例中,所述多个组件中的每个组件被相应的软件接口封装,所述软件接口用于对外提供该组件的各种可调用功能和/或从外部获得该组件所需的各种可调用功能,相同类别的组件包含统一的软件接口,不同的组件经由软件接口交换信息。
根据本公开的第三方面,提供了一种提供集成开发环境的方法,所述集成开发环境用于生成嵌入式装置的设计文档。所述方法包括:接收用户要开发的应用的信息,并根据所述应用的信息在多个组件中查找与所述应用匹配的至少一个工程组件;生成工程,每个所述工程组件分别被独立地安装在所述工程中;以及基于所述工程生成所述设计文档,其中,所述至少一个工程组件包括芯片组件和/或装置组件,所述芯片组件对所述嵌入式装置的芯片的内部操作提供支持,所述装置组件对所述芯片的外围操作提供支持。
在一些可选的实施例中,所述至少一个工程组件中的各组件分别为以下类别之一:芯片组件、装置组件、应用组件、操作系统组件和中间件组件,其中,所述应用组件用于对所述嵌入式装置的应用程序提供支持,所述中间件组件用于对所述应用程序的可复用部分提供支持,所述操作系统组件用于对所述应用程序所基于的操作系统提供支持。
在一些可选的实施例中,基于所述应用的信息生成工程的步骤包括:基于所述应用的信息配置所述工程的组件化属性,以便于所述工程支持组件的安装和卸载;以及在所述工程中安装与所述嵌入式装置匹配的所述至少一个工程组件,和/或,从所述工程中卸载不需要的组件。
在一些可选的实施例中,基于所述工程生成所述设计文档的步骤包括:判断所述工程中是否已安装有组件;在所述工程中安装有所述组件的情况下,对各个所述工程组件执行编译操作,以分别生成相应的组件库文件;以及对编译生成的全部组件库文件执行链接操作,以生成所述设计文档。
在一些可选的实施例中,所述多个组件存储于存储器,所述存储器位于所述终端和/或与所述终端通信的平台服务器中,所述方法还包括:将开发完成的所述工程和/或在所述工程中被更新的工程组件上传至所述存储器以作为可被复用于相应的应用中的资源。
根据本公开的第四方面,提供了一种计算机可读介质,所述计算机可读介质存储有计算机指令,所述计算机指令被执行时,实现如上所述的方法。
本公开实施例提供的提供集成电路开发环境的终端、方法和平台服务器,将面向装置、芯片和应用程序等不同部分的代码分别作为独立的组件,从而可以在工程中灵活地替换、加载和卸载各组件,以实现对应于应用(用户要求的)的工程,提高了代码复用的几率和代码扩展的灵活度,提升了嵌入式系统的开发效率;且由于嵌入式系统的开发过程被合理地细化为多个部分,从而每个工程中包含的不同组件可以由不同的开发人员完成,有利于实现不同部分的并行处理,降低了每个开发人员的开发难度,进一步从整体上提升了嵌入式系统的开发效率。
在一些实施例中,为工程增加了组件化属性,使得工程可选地支持组件的安装、卸载功能,有利于实现不同类别的组件的平行开发,有利于组件化的资源管理。
在一些实施例中,采用软件接口对组件进行封装,不同类别的组件之间经由软件接口调用外部功能,减弱了组件间的依赖调用关系,使得开发人员可以基于软件接口对单独的组件进行编程,有利于实现多位开发人员并行地对不同组件进行开发,进一步提升了嵌入式系统的开发效率,解决了组件之间存在高耦合度依赖关系的问题。
在一些实施例中,优化了基于组件的编译方法,可以在工程安装有组件的情况下将各个组件分别编译成相应的组件库文件,再编译工程本身存在的文件,最后将这些文件全部链接为工程的应用镜像文件,即可被嵌入式装置执行的设计文档。基于这一优化的编译方法,开发人员能够基于组件完成对应用镜像文件的更新。例如,若当前应用镜像文件中关于应用组件的部分需要更新,则开发人员可以在源代码级别对当前工程中的应用组件进行修改,基于修改后的应用组件编译生成组件库文件,并在链接步骤中更新该应用组件对应的组件库文件,复用了在先编译生成的其它文件且无需重新执行全部链接过程,提升了调试效率。
附图说明
通过参考以下附图对本发明实施例的描述,本公开的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1示出了一种目标装置的硬件资源结构示意图;
图2示出了目标装置中运行的软件代码的结构示意图;
图3是根据本公开实施例的一种示例性的应用场景示意图;
图4示出根据本公开实施例的集成开发环境的示例性结构图;
图5示出根据本公开实施例的集成开发环境中的工程的示意性框图;
图6示出根据本公开实施例的一个组件的结构示意图;
图7示出根据本公开实施例的软件接口实现的工程结构示意图;
图8示出根据本公开实施例提供的终端设备/资源端设备的结构示意图;
图9示出本公开实施例提供的一种示例终端设备的结构示意图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
在本文中涉及的一些背景知识和技术术语。
IP核:即知识产权核(Intellectual Property Core),指的是由某一方提供的可复用集成电路模组,可以是集成在芯片内的逻辑单元和/或模拟电路单元等。
工程:提供嵌入式集成开发环境的系统采用“工程”管理嵌入式开发环境下的资源。工程可以包括源代码列表、编译相关配置、调试启动配置、下载配置等内容。
目标装置(或嵌入式装置):提供嵌入式系统开发所需的硬件资源,且可以基于硬件资源运行软件代码以实现嵌入式开发的目标功能。目标装置的硬件资源可以包括处理器、存储器、输入设备、输出设备、数据通路/总线和外部资源接口等一系列硬件。提供嵌入式集成开发环境的系统可以基于工程生成可在目标装置中运行的软件代码,使得开发人员可以基于目标装置和集成开发环境进行嵌入式系统的开发、调试和测试工作,最终基于目标装置实现满足需求的应用。由于目标装置中的一系列硬件通常集成在电路板上,因此目标装置在一些情况下也被称为嵌入式开发板(Embedded Development Board)或开发板(Demoboard);在另一些情况下,目标装置也可以由片上系统(System on Chip,简称SoC)实现。
作为示例,图1示出了一种目标装置的硬件资源结构示意图。如图1所示,目标装置100的硬件资源可以包括:设置在电路板上的芯片110(例如为用于实现片上系统的SoC芯片,SoC芯片可以包括处理器、处理器的外围电路,还可以包括静态随机访问存储器和/或非易失性存储器等存储器)以及其他的一些外围硬件120(例如与芯片110焊接在同一电路板上并可与所述芯片通信的外围电路)。
对目标装置进行嵌入式开发的过程可以包括:
对芯片110进行软件开发;
对芯片110的引脚130的连接进行软件配置(这是由于相同的芯片可能被应用在不同的电路环境中,因此芯片110的引脚功能可能不同、连接关系可能不同,通过对芯片的引脚连接进行软件配置可以让芯片110在该目标装置中正常工作,其中,芯片110的每个引脚130例如被配置为悬空或与电路板中相应的节点电连接);以及
对目标装置中芯片的外围硬件120进行软件配置,以使芯片的外围硬件或与外围硬件相连的外部设备正常工作,外围硬件120例如被焊接在电路板上并作为芯片外围部件与芯片110的引脚130通信。
图2示出了目标装置100中运行的软件代码的结构示意图。基于上述硬件资源,目标装置100中运行的软件代码可以包括芯片级模块101、系统级模块102和应用级模块103。
芯片级模块101主要包括用于对目标装置中的芯片(例如图1示出的芯片110)进行操作的代码,例如包括芯片中各IP核的初始化代码。这里所说的各个IP核例如为中央处理单元(Central Processing Unit,CPU)、与中央处理单元协同工作的外围IP核或其它IP核。
系统级模块102主要包括用于对目标装置中芯片内部电路之外的部分(例如包括图1示出的焊接在电路板上的芯片引脚130以及电路板上设置的芯片的外围硬件120)进行操作的代码,例如对芯片引脚130和/或芯片的外围硬件120进行配置的初始化代码。如果目标装置中包括与外部设备连接的硬件,则系统级模块102还可以包括该外部设备的驱动程序。
应用级模块103主要包括用于实现具体场景/目标功能的示例代码。相比于芯片级模块101和系统级模块102,应用级模块103包含的代码通常与硬件部件的耦合度较低,因此期望应用级模块103的代码能够被有效地复用于包含不同硬件资源的目标装置中,以提升嵌入式开发效率。
在实际应用场景中,包含不同硬件资源和/或用于实现不同应用的目标装置可能是基于相同的芯片实现的,即,相同的芯片可以应用于不同的目标装置中,相同的芯片也可以在不同的目标装置中分别搭配不同的外围部件。同样的,相同/相似的应用也可能基于不同硬件结构的目标装置来实现。
随着芯片的选型越来越丰富、目标装置的设计越来越多样化,基于传统IDE实现嵌入式系统的开发方式存在着一些问题:1)开发复杂度的问题:当面向某一目标装置A完成了芯片级模块、系统级模块以及应用级模块的代码开发之后,与硬件耦合度较低的应用级模块无法用于另一目标装置B的开发,而是需要在传统IDE中重新对目标装置B分别完成芯片级模块和系统级模块的代码开发,之后才可以基于目标装置B的芯片级模块和系统级模块完成对应用级模块的代码开发,因此开发流程无法并行执行且较为复杂,在先开发完成的应用级模块的代码具有复用价值但却无法被复用,导致了开发任务的重复,降低了工作效率和代码复用率,不利于缩短开发时间;2)软件复用的问题:在两个目标装置(C和D)采用相同芯片的情况下,传统IDE无法采用在先开发完成的目标装置C的芯片级模块来加速另一目标装置D的嵌入式开发过程,即,在先开发完成的芯片级模块的代码具有复用价值但却无法被复用,同样导致了开发任务的重复,降低了工作效率和代码复用率。
例如,基于某一传统集成开发环境,在对目标装置B进行开发的过程中,首先获得与目标装置B的硬件对应的开发包,该开发包是面向芯片级模块、应用级模块、系统级模块等部分的代码集合。基于该开发包,开发人员可以在工程中按照一定顺序逐步进行面向芯片的代码开发、面向开发板的代码开发、面向应用程序的代码开发等步骤。然而,在目标装置B具有不同于目标装置A的硬件资源的情况下(例如目标装置A和B采用的嵌入式开发板不同),即使目标装置A的应用级模块包含适用于目标装置B的应用级代码,开发人员也无法在当前工程中直接加载目标装置A的应用级代码,而是需要对目标装置B的应用级模块重新进行代码开发,不利于提升代码复用率和开发效率。
又例如,基于某一传统集成开发环境,在对目标装置D进行开发的过程中,首先获得与目标装置D采用的嵌入式开发板对应的开发包。基于该开发包,开发人员可以按照一定顺序逐步进行芯片级模块的代码开发、系统级模块的代码开发、应用级模块的代码开发等步骤。在此情况下,即使目标装置C与目标装置D采用的嵌入式开发板是基于相同型号的芯片实现的,只要目标装置C和D采用不同的嵌入式开发板(例如芯片外围硬件不同),那么已开发完成的目标装置C对应的芯片级模块就无法被直接复用于目标装置D中,因此,开发人员需要对目标装置D的芯片级模块重新进行代码开发,不利于提升代码复用率和开发效率。
为解决现有问题,本公开实施例的思路在于:基于集成开发环境定义若干个可以在工程中被安装和/或卸载的组件,每个组件彼此独立存在,多个组件之间可以具有对应的调用关系,从而可以基于用户所要求的应用、利用组件的不同组合和相应的调用关系在集成开发环境中生成不同的工程,以应用于相同/不同的目标装置,从而实现用户所要求的应用。基于此,面向开发板、芯片和应用程序等不同部分的代码分别作为独立的组件,从而可以在工程中灵活地替换、加载和卸载各组件,提高了代码复用的几率和代码扩展的灵活度,提升了嵌入式系统的开发效率;且由于嵌入式系统的开发过程被合理地细化为多个部分,从而每个工程中包含的不同组件可以由不同的开发人员完成,有利于实现不同部分的并行处理,降低了每个开发人员的开发难度,进一步从整体上提升了嵌入式系统的开发效率。
图3是本公开实施例的一种示例性的应用场景示意图。如图3所示,终端设备200可以应用于提供集成开发环境的系统1000(后文简称为开发系统)中。开发系统1000可以包括经由网络400耦合的一个或多个终端设备200(可以简称为终端)和资源端设备300(可以平台服务器为代表)。
终端设备200主要用于运行嵌入式开发软件、实现人机交互、与网络400和目标装置100通信,等等。终端设备200可基于目前市场上各种型号的处理器构建,并包括诸如存储器和输入输出设备(例如显示器、键盘、鼠标和各种接口)等多种装置。终端设备200上可以安装有各种操作系统和各种应用软件,操作系统例如WINDOWSTM操作系统、UNIX操作系统、Linux操作系统、实时操作系统(RTOS),应用软件例如为浏览器、视频播放软件、通信软件、各种研发工具(包括嵌入式开发软件)等等。终端设备200例如为个人计算机、台式机、笔记本和掌上电脑等能够使得开发人员实施开发工作的设备。
各个终端设备200可以经由网络400从资源端设备300中获得各种开发资源。
资源端设备300可以采用各种方式与网络400进行通信。网络400可以是基于交换信号实现的各种通信技术之一或多种通信技术的组合,包括但不限于采用电和/或光传导线缆的有线技术,以及采用红外、射频和/或其它形式的无线技术。在不同的应用场景下,网络400可以是互联网、广域网或局域网,例如为公司的专有网络或其它可加密的网络。网络400还可以为有线网络或无线网络。
在本示例中,资源端设备300可以是独立服务器、集群服务器、云服务器或其它能够经由网络400提供开发资源的设备,终端设备200可以经由网络400向资源端设备300请求下载所需的开发资源,以便于资源端设备300响应于该请求并索引至相应的开发资源,随后将该开发资源下发至发起该请求的终端设备200。
在一些实施例中,开发系统1000可以包括一个或多个资源端设备300。当开发系统1000中设置有多个资源端设备300时,资源端设备300可以分级设置,以方便终端设备200经由网络400逐级地在各个资源端设备中查找所需资源。
在一些实施例中,资源端设备300可以在接收到某一终端设备200发起的请求之后,检查该终端设备200是否具有访问权限,并仅在该终端设备200具有访问权限的情况下向该终端设备提供相应的开发资源。
在另一些示例中,资源端设备300也可以是存储设备,终端设备200可以经由网络400在资源端设备300中查找并获得所需的开发资源。存储设备例如为硬盘(Hard Disk)、快闪存储器(Flash Memory)或其它非易失性存储器、云端存储器等。
在一些实施例中,资源端设备300可以直接设置在终端设备200内,以直接经由线缆或无线通信模块向终端设备200提供所需的开发资源。
在一些实施例中,各个终端设备200还可以从包含在终端设备200内部的存储器中获得预存的开发资源,因此,终端设备200不限于应用在图3示出的应用场景中,开发人员可以直接利用终端设备200内的预存资源完成具有所需功能的嵌入式系统的开发,而无需资源端设备300的参与。
在一些实施例中,各个终端设备200可以利用预存的开发资源和/或资源端设备300提供的开发资源获得工程(面向待开发的目标装置100)所需的工程资源,使得开发人员可以基于工程资源实现工程的创建、配置、修改等等,从而最终完成具有目标功能的嵌入式系统的开发。
各个终端设备200上部署有嵌入式开发软件,以管理集成开发环境和工程,便于开发人员的开发工作。嵌入式开发软件可以预装在终端设备200中,或者由开发人员自行从资源端设备300将嵌入式开发软件的安装文件下载/拷贝到终端设备200中,以便于开发人员基于该安装文件在终端设备200中安装嵌入式开发软件。
需要说明的是,嵌入式开发软件可以在操作系统的支持下独立运行,也可以作为子应用程序与作为主应用程序的其他软件协同运行,还可以作为主应用程序以与其它子应用程序协同运行。
图4示出本公开实施例的集成开发环境的示例性结构图。
在一些实施例中,部署在终端设备中的嵌入式开发软件210可获得的各种开发资源包括多个组件,嵌入式开发软件可以基于多个组件生成面向目标装置100的工程500,以便于开发人员基于工程500开展嵌入式开发工作,并基于开发完成的工程生成可被目标装置100执行的文件,使得目标装置100基于该文件获得芯片级模块101、系统级模块102以及应用级模块103的代码(如图2所示)。
在一些实施例中,开发资源可以提供多种类别的组件,举例如下:
芯片组件:是指用于对芯片提供支持的代码。芯片组件主要面向目标装置中的芯片(例如实现处理器和/或片上系统)的内部配置,例如包括对芯片进行初始化操作等芯片基本操作的代码集合,使得目标装置基于该芯片能够实现目标功能。
装置组件:是指用于对目标装置提供支持的代码,主要面向目标装置中用于承载芯片的电路板,或面向片上系统中主IP核之外的部分)。装置组件例如包括对目标装置中的芯片引脚的初始化代码、芯片外围部件的初始化代码和/或驱动代码、与目标装置相连接的外部装置的初始化代码和/或驱动代码等等代码的集合。不同的目标装置100可以对应于不同的装置组件。在一些实施例中,采用不同芯片的目标装置100也可能对应于相同的装置组件。
应用组件:是指用于对目标功能提供支持的代码。应用组件例如包括用于实现预设算法、预设流程等嵌入式功能的代码。相比于装置组件和芯片组件,应用组件对硬件的依赖程度较低,已有的应用组件可以在经过简单调整后适用于不同的目标装置,因此应用组件在不同目标装置的嵌入式开发中复用率较高。
操作系统组件:是指用于为目标功能提供操作系统支持的代码。在目标装置需要运行操作系统的情况下,操作系统组件例如包括用于实现实时操作系统(Real TimeOperating System,简称RTOS)的代码集合。实时操作系统是可应用于嵌入式系统中的操作系统的统称,具有高实时性、可裁剪、体积小等优点。
中间件组件:是指用于对应用提供支持的组件。为了让不同应用所需的相同/相近的代码模块可以被复用,在一些实施例中,针对不同的应用,相同的一个或一组中间件组件可以被复用。在一些实施例中,多个相关联的中间件组件可以按照组件集的形式存在于开发资源中,从而中间件组件可以按照组件集的方式被传输、下载、安装和/或卸载。
部署在终端设备上的嵌入式开发软件210可以包括交互模块211和IDE接口212等等。交互模块211例如可以面向开发人员提供可视化的图形界面,开发人员可以基于可视化的图形界面向交互模块211发起各种用户指令,从而交互模块211可以响应于这些用户指令,以完成各种操作对应的实现。IDE接口212用于向交互模块211提供各种可以调用的接口,这些接口包括建立通信连接、发送访问请求、接收请求结果、下载网络资源,等等。在一些实施例中,终端设备经由IDE接口212发起开发资源获取请求,并可以经由IDE接口212接收嵌入式开发软件210所需的开发资源。交互模块211可以支持键盘和/或鼠标的输入输出设备,用户所要求的应用的相关信息可以被交互模块211获得,以便于终端设备基于应用的相关信息实现工程的开发。
开发人员可以通过交互模块211在集成开发环境IDE中创建工程500,工程面向当前待开发的嵌入式装置。可以根据完成开发的工程生成能够运行在该嵌入式装置上的设计文档,使得嵌入式装置通过运行该设计文档实现目标功能。
作为示例,交互模块211可以提供具有多个功能区的界面。功能区之一提供项目视图,通过菜单列出当前工程的名称和/或当前工程包含的组件列表等基本信息。功能区之一可以提供开发资源列表,用于按照类别划分、级别划分和/或使用频次排序等的组织方式提供各种资源的标签(例如指向不同组件的下载地址、已存储的工程的下载地址等等)。作为示例,开发人员可以通过点击标签的方式将相应的组件下载并安装至当前工程,标签也可以提供该组件的简要说明。功能区之一可以提供开发资源搜索框(以供开发人员录入所需资源的检索词)和搜索结果列表。功能区之一可以用于显示/编辑当前工程的配置(例如组件化配置参数)。交互模块211还可以提供各种可以被触发的虚拟按钮和菜单,以便于根据开发人员的操作执行编译、链接、下载、保存等步骤。
图5示出本公开实施例的集成开发环境中的工程的示意性框图。
如图5所示,面向嵌入式系统的工程500可以包括若干个工程组件520,各组件520的类别可以是上述开发资源提供的装置组件、芯片组件、应用组件、操作系统组件、中间件组件等等。
基于本公开实施例的提供集成开发环境的系统,在工程500中可以灵活地安装、卸载各个组件。例如,可以在已有工程的基础上卸载某一组件并安装另一组件,从而形成具备新功能或适用于新硬件资源/操作系统/应用场景的新工程,提升了代码的复用率和工程的开发效率。
在一些实施例中,为了让工程500适用于当前的目标装置,每个工程有且仅有一个装置组件530,该装置组件与当前目标装置匹配。为了让工程500同时适用于目标装置中的芯片,每个工程有且仅有一个芯片组件540,该芯片组件例如与目标装置中的芯片型号匹配。对于当前目标装置,装置组件530的选择主要基于开发板整体架构(例如芯片的外围硬件)而不受限于芯片型号,芯片组件540的选择主要基于开发板采用的芯片型号。
在一些实施例中,为了让工程500实现指定的目标功能,每个工程至多仅包含一个应用组件520,该应用组件可以通过安装的方式加载至工程500中,也可以通过卸载的方式从工程500中移除。由于应用组件与硬件资源的耦合度较低,可以将原工程中包含的一应用组件卸载,并随后将另一应用组件安装在该工程中以更新该工程,使得原工程中应用组件之外的部分(包括装置组件和芯片组件)被灵活复用于更新的工程中。
在一些需要在目标装置上实现操作系统的实施例中,工程500至多可以包括一个操作系统组件560。在不需要在目标装置上实现操作系统的情况下,嵌入式系统的目标功能不需要操作系统的支持,则面向该嵌入式系统的工程500可以不包含操作系统组件。
在一些实施例中,工程中可以包括中间件组件550或中间件组件集以对当前应用提供支持。中间件组件可以被选择性地加入到工程中,若当前应用不需要相应的中间件组件提供支持,则该工程中可以不包括中间件组件。例如,实现语音信息传输应用的工程和图像信息传输应用的工程可能包含相同/近似的中间件组件,该中间件组件例如用于支持不同应用中的数据传输功能。
如图5所示,工程500还包括配置模块510,包含工程500所需的一系列基础配置文件。开发人员可以修改配置模块510中的基础配置文件,以对工程500的文件名、扩展名、存储位置、支持的计算机语言等属性进行配置;配置模块510中的基础配置文件还可以用于对该工程的组件化属性,以使当前工程支持组件化功能或不支持组件化功能。组件化功能允许开发人员以组件为基本单元对工程500进行组件的组合、安装和卸载等操作;针对不支持组件化功能的工程,则不能直接进行各种组件的操作。
在一些实施例中,配置模块510可以默认支持组件化功能。例如将用于配置组件化属性的参数默认设置为初始码,工程基于该初始码具有支持组件化功能的属性;在一些情况下,可以通过修改该参数的方式将工程的组件化功能关闭或重新开启。
在一些实施例中,依据链接描述文件,嵌入式开发软件可以基于工程500生成目标装置的设计文档。链接描述文件用于描述基于工程链接生成设计文档的规则,主要包括基于芯片对工程进行描述的文本,因此可以被包含在芯片组件之内,从而随芯片组件被加载至工程中。
图6示出本公开实施例的一个组件的结构示意图。这里的组件指的是开发资源包含的组件,也可以是下载至工程500中的一个组件。
如图6所示,组件600可以包括如下所述的多个部分:
基本信息配置文件610:用于提供该组件的身份标识(Identity Document)、名称、版本、概述、类别等基本信息。其中,身份标识例如以序列号的形式表征该组件的身份信息,每个组件例如可以基于其身份标识被唯一识别。
编译列表配置文件620:用于描述该组件中哪些文件需要参与编译,未被编译列表配置文件620指定的文件不会在组件的编译过程中被编译。被编译列表配置文件620指定的文件例如是组件中基于C语言、C++语言等编程语言的源代码文件,需要在对该组件进行编译的过程中转换为可以被目标装置执行的代码。
编译选项配置文件630:在对编译文件列表所指定的源代码文件进行编译时,编译选项配置文件630用于描述工程的基础配置文件以外的、组件所需的编译参数。在对某一组件进行编译的过程中,不仅需要当前工程的配置模块提供的基础配置文件,还需要该组件本身提供一些编译参数,也就是说,配置模块的基础配置文件与组件包含的编译选项配置文件共同提供编译该组件所需的参数。
作为可选的示例,组件内的编译选项配置文件630例如提供以下的一个或多个内容:编译宏参数,用于指定源代码文件中不需要参与编译的局部代码;编译优化参数,用于设置该组件的优化效果(如果某组件不包括编译优化参数或未设置编译优化参数,则该组件可以默认继承当前工程的优化选项);编译头文件搜索路径:可以用来配置组件本身的搜索路径和工程全局搜索路径,其中,组件本身的搜索路径主要作用于组件的编译过程中,工程全局搜索路径主要作用于整个工程的编译过程中;组件接口头文件描述,用于将源代码中的某些文件作为当前组件的接口,以供外部使用。
调用关系配置文件640:包含该组件与其它组件之间的调用关系。在一些实施例中,多个组件可以基于调用关系被配置为组件集,从而可以按照集合的形式被应用于某个特定的应用领域,也可以按照集合的方式被下载至工程。
作为示例,应用组件、装置组件和/或中间件组件通常需要用到芯片组件提供的资源,也就是说,应用组件与芯片组件之间可能存在调用关系,装置组件和芯片组件之间可能存在调用关系,中间件组件和芯片组件之间也可能存在调用关系;在工程500中加载了操作系统组件的情况下,应用组件、装置组件和中间件组件也通常需要用到操作系统组件提供的资源。
以存在调用关系的装置组件和芯片组件为例,装置组件需要从其依赖的芯片组件中获取资源,即,可以认为装置组件的各种操作和配置包含了其依赖的芯片组件所提供的各种操作和配置。基于此,若将该装置组件依赖的芯片组件Cs1(对应于芯片C1)替换为另一芯片组件Cs2(对应于芯片C2),则该装置组件可以直接(或经过简单调整)适用于新的目标装置(基于芯片C2实现),无需对装置组件的代码重新进行编程。可以看出,在不同的工程中,虽然装置组件需要依赖于芯片组件,但相同的装置组件530可能依赖于不同的芯片组件540,不同的装置组件530也可能依赖于相同的芯片组件540,这种基于组件的资源组织方式降低了开发板与芯片之间的耦合度,提升了面向芯片的代码复用率和面向开发板的代码复用率。需要说明的是,不依赖于芯片组件的装置组件由于缺失了芯片内部的操作而在一定程度上无法实现对目标装置的配置,因此装置组件不能脱离芯片组件而独立存在于完整的工程之中。
除此之外,组件600还可以包括上文未提及的、需要被编译或不需要被编译的一个或多个其它文件,本公开对此不作限定。
可以看出,本公开实施例基于组件以及组件调用关系将嵌入式系统的开发过程分为多个细粒化的部分。一方面,芯片级、装置级、应用级、操作系统级等各级别的代码资源可以脱离其它级别的代码资源独立地被复用,相比于现有技术降低了编程工作量,提高了代码复用率和嵌入式系统的开发效率;另一方面,不同开发人员可以分别针对不同的组件/细粒化任务开展开发工作,例如:负责芯片的开发人员可以进行芯片组件的开发工作,与此同时,负责应用的开发人员可以进行应用组件的开发工作,有利于明确不同开发人员的任务分工、提升工程管理效率,有利于开展异地/不同公司的联合开发工作,从而进一步提升了嵌入式系统的开发效率和资源管理效率。
由于不同组件之间存在调用关系,相当于存在调用关系组件之间相互依赖,从而增大了开发难度。因此在一些可选的实施例中,各个组件可以基于相应的软件接口实现,该软件接口中封装有相应操作的代码,这些代码可以包括当前组件提供给外部的各种可调用功能和/或当前组件需要从外部调用的各种功能,从而各个组件可以被相应的软件接口封装以降低其与其它组件的依赖性,各个组件可以经由软件接口获得其他组件中的资源而不需要与特定组件进行协同开发,使得组件可以被独立地下载、卸载、复用。
图7示出根据本公开实施例的软件接口实现的工程结构示意图。
如图7所示,基于软件接口,存在调用关系的不同组件可以分别被独立地开发而互不影响,开发人员仅需要基于软件接口对单独的组件进行编程,而无需对相互依赖的多个组件进行整体开发,提升了开发效率,降低了由于组件之间的依赖调用关系而导致的开发复杂度,也提升了组件的可移植性。
针对不同类别的组件可以定义不同的软件接口,例如:应用组件的软件接口可以封装有操作系统的各种操作,从而应用组件可以基于其软件接口获取操作系统组件提供的资源;装置组件的软件接口可以封装有各种芯片操作,从而装置组件可以基于其软件接口建立与芯片组件的调用关系;芯片组件的软件接口也可以封装有芯片外设/芯片引脚的各种操作,使得芯片组件既独立于装置组件,又能建立与装置组件之间的调用关系,从而装置组件和芯片组件之间能够经由软件接口交换资源。软件接口可以是各种类型的编程接口,本公开对此不做限制,只需要保证各组件采用的软件接口能够建立正确的组件调用关系即可。
针对相同类别的组件,可以定义统一的软件接口,以便于同类别的组件可以相互替换。例如,开发资源提供的各个芯片组件可以具有统一的软件接口,该软件接口可以用于实现一些处理器的操作/功能,因此,不同的芯片组件开发人员可以基于统一的软件接口对芯片组件内部的代码进行编程,在不考虑芯片外部环境的情况下就能完成不同芯片组件的开发,实现了组件之间的隔离、解耦。
作为示例,工程500中的应用组件520、装置组件530、中间件组件550可以分别经由软件接口调用芯片组件540的资源,应用组件520、装置组件530;中间件组件550也可以经由软件接口调用操作系统芯片组件540的资源。软件接口中可以封装有各种具体操作对应的代码,各种具体操作例如包括:芯片的具体操作、每个芯片的外设接口操作、实时操作系统的接口操作等等。各个组件在需要获得其它组件的资源时,可以通过调用软件接口的方式获得相应的资源。
在必要的情况下,开发人员还可以对组件的软件接口进行版本升级,例如在芯片组件的软件接口中新增、删除、修改一些内容。
基于软件接口,若工程中某一组件内的代码在开发过程中发生了变化,只要该组件的软件接口保持不变,则该工程中的其它组件就无需调整。因此,软件接口降低了组件之间的耦合度、提升了组件被独立复用的可行性,有利于实现嵌入式开发任务的细化分工和并行化处理,有利于以组件为单位高效便捷地实现工程开发。
开发流程
基于本公开任一实施例的集成开发环境,嵌入式系统的开发方法主要包括:工程创建S710、组件开发S720、代码编译S730、链接S740以及定址S750。
工程创建S710的步骤有多种可能的实施方式。
在一个实施例中,工程创建S710可以包括:
步骤S711:配置工程的基本属性和组件化属性。基本属性主要包括当前工程的文件名、扩展名、存储位置、支持的计算机语言等属性,组件化属性用于表示当前工程是否支持组件化功能。在本公开实施例中,开发人员可以通过对配置模块中的参数进行确认/改写以完成基本属性和组件化属性的配置。
步骤S712:对于支持组件化功能的工程,安装当前工程所需的多个组件。例如,可以先确定当前工程需要哪些组件,并查找开发资源中是否存在相应的组件(与当前工程所需的组件相同或近似);若存在,则将开发资源中相应的组件下载并安装在当前工程中,若不存在,则可以创建所需类别的新组件,并将该新组件安装在当前工程中。安装在当前工程中的多个组件至少包括:匹配于目标装置的芯片组件和装置组件,以及匹配于当前应用的应用组件。对于需要操作系统支持的嵌入式系统,当前工程中的多个组件还可以包括一个操作系统组件。在一些实施例中,根据应用的需要还可以在当前工程中安装中间件组件/中间件组件集等等。在一些实施例中,具有调用关系的多个组件可以按照组件集的方式从开发资源中下载并安装于当前工程中,每个组件也可以分别被下载和安装。
在一个实施例中,工程创建S710的步骤可以包括:
步骤S713:获得与当前开发任务匹配的已存储工程,基于该已存储工程建立当前工程。与当前开发任务匹配的已存储工程可以是从开发资源中查找得到的已开发完成的工程文件/工程文件集,也可以是未录入开发资源但可以被开发人员获取的工程文件/工程文件集。
在基于已存储工程建立当前工程的过程中,还可以根据实际需要调整当前工程的文件名、存储位置等基本属性和组件化属性。
可选的步骤S714:以组件为单位对当前工程进行适应性调整,从而将不需要的组件从当前工程中卸载和/或将当前开发任务所需的组件下载并安装至当前工程中。在一些实施例中,可以按照组件集的形式下载/卸载多个相互关联的组件。
可选的步骤S715:在开发资源中不存在工程所需组件的情况下,可以创建指定类别的新组件,并将其安装在工程中。在一些实施例中,可以脱离工程直接创建指定类别的组件,也可以直接在工程中创建并安装指定类别的新组件。在一些实施例中,新组件也可以基于其它类别的组件完成创建,例如新的目标装置组件可以基于开发资源提供的芯片组件实现,新的应用组件可以基于开发资源提供的装置组件实现,等等。
需要说明的是,与当前开发任务匹配的已存储工程中的至少部分可以被当前工程复用。示例:若当前开发任务需要基于第一芯片以及第一芯片所在的目标装置实现第一应用,则与当前开发任务匹配的已存储工程可以是基于第一芯片实现的,从而第一芯片对应的芯片组件可以被复用;与当前开发任务匹配的已存储工程也可以基于其它硬件资源实现第一应用,从而第一应用对应的应用组件可以被复用;与当前开发任务匹配的已有工程也可以具有能够被当前工程复用的装置组件、操作系统组件、中间件组件等组件中的至少一个。
组件开发S720的步骤可以包括:
步骤S721:对于安装在当前工程中的一个或多个组件的代码分别进行适应性的调整和更新,使得当前工程满足开发任务的要求。其中,工程中不同组件的开发调试任务可以被分配给不同的开发人员,有利于实现并行开发和任务细化,从而提升开发效率和管理效率。
组件的适应性调整和更新例如包括:对当前组件的调用关系进行配置、对组件内代码的适应性调整、对当前组件的相关软件接口进行更新等等操作中的一个或多个,使得该组件适用于当前工程,且能够调用具有调用关系的组件中的资源。在一些实施例中,被更新的组件可以作为新的组件被上传并存储在开发资源中;在一些实施例中,也可以设置组件上传的审核机制/权限机制,以保证被上传的组件的安全性和有效性。
可选的步骤S722:在工程创建S710的步骤之前,也可以预先完成各个组件的编程开发工作,预先开发完成的各个组件被存储在开发资源中,从而开发人员在创建工程的过程中直接从开发资源中获取有效的组件资源,有利于组件化的资源管理,有利于不同开发人员能够及时获得各种技术更新信息。
在完成工程开发S710以及组件开发S720之后,当前工程的代码集合被确定,这一代码集合通常不能直接运行于目标装置中,而是需要在具有较强运算能力的集成开发环境中完成对工程的代码编译S730、链接S740和定址S750等步骤,从而生成能够被目标装置运行的目标代码(例如为二进制代码)。
代码编译S730的步骤例如包括:
步骤S731:判断当前工程中是否安装了组件。若是,则执行步骤S732;若否,则执行步骤S733。
步骤S732:将当前工程中已安装的组件源代码编译为组件库文件,随后执行步骤S733。为方便说明,这里将当前工程的代码集合划分为已安装的组件源代码以及非组件化的源代码。安装在工程中的不同组件可以被编译为不同的组件库文件,使得各组件库文件继承组件的独立性,有利于实现组件库文件灵活组合。
步骤S733:将当前工程中的工程中非组件化的源代码(通常指工程本身存在的文件,例如基本配置文件)编译为目标文件。
随后,对编译生成的全部文件(例如包括目标文件和组件库文件等)执行链接S740的步骤,以生成当前工程的应用镜像文件。链接S740的步骤例如基于芯片组件提供的链接描述文件提供的链接规则实现。该应用镜像文件例如为包括代码信息和相应的地址信息的二进制文件,并可以被下载至目标装置的存储器中,使得目标装置可以运行该应用镜像文件以实现相应的应用,或基于该应用镜像文件与终端设备完成交叉调试。
在目标装置的调试过程中,开发人员同样能够基于组件完成对应用镜像文件的更新。例如,若当前应用镜像文件中关于应用组件的部分需要更新,则开发人员可以在源代码级别对当前工程中的应用组件进行修改,基于修改后的应用组件编译生成组件库文件,并在链接步骤中更新该应用组件对应的组件库文件,复用了在先编译生成的其它文件且无需重新执行全部编译过程,提升了调试效率。
图8示出根据本公开实施例提供的终端设备/资源端设备的结构示意图。
如图8所示,上述各实施例描述的终端设备、资源端设备中的任意一个在硬件层面上可包括处理器201和存储器202,除此之外,一些情况下还包括输入输出设备203和其他硬件209。存储器202例如为高速随机存取存储器(Random-Access Memory,RAM),也可能是非易失性存储器(non-volatile memory),例如为至少1个磁盘存储器等。输入输出设备203例如为显示器、键盘、鼠标、网络控制器等设备。处理器201可以基于目前市场上各种型号的处理器构建。处理器201、存储器202、输入输出设备203和其他硬件209通过总线相互连接,该总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一个线条表示,但并不表示仅有一根总线或一种类型的总线。
存储器202用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机指令。存储器可以包括内存和非易失性存储器,并向处理器201提供计算机指令和数据。处理器201从存储器202中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成上述在集成开发环境中实现嵌入式系统开发的方法。
图9示出本公开实施例提供的终端设备的内部结构示意图。
如图9所示,终端设备200包括存储器201、输入输出设备203、工程管理器204、编译器205、下载运行机206,在一些实施例中还可以包括收发器207。
存储器201可以存储多个组件,部署在终端设备中的存储器可以仅用于存储包含在工程中的各个工程组件,也可以提供一些可以被下载至工程中的组件资源和/或已开发的、可被复用的工程资源。
输入输出设备203可以如上文所描述的那样,包括能够提供交互界面的显示器、用于接收用户提供的要开发的应用的信息的键盘、鼠标、触摸屏、音频接收装置等等,上述交互模块可以支持输入输出设备203的至少一部分操作。用户在交互界面上可以输入、编辑程序代码,也可以选择其上提供的各种辅助功能。用户也是在该交互界面的指定位置,输入要开发的应用的信息,例如应用的名称、标识等,从而资源端设备300能够为用户返回开发该应用需要的组件和/或工程,显示在交互界面上。需要说明的是,虽然本实施例将输入输出设备203描述为终端设备的一部分,但本公开实施例不限于此,在一些替代的实施例中,输入输出设备203可以作为终端设备的外部设备与终端设备中相应的接口模块通信。
工程管理器204可以与存储器201通信,且可以获得输入输出设备203提供的用户要开发的应用的信息。工程管理器204主要用于建立并管理工程,例如工程管理器204可以根据用户提供的信息在工程中独立地安装存储器201提供的相应的组件,也可以将已安装在工程中的组件独立地从工程中卸载。在一些实施例中,工程管理器204还用于将已开发完成的工程和/或在工程中被更新的工程组件提供至存储器201和/或资源端设备300,以将这些资源作为可被工程管理器204复用的资源。
收发器207是终端设备200中向外界发送消息、和从外界接收消息的器件。它可以通过天线或收发电路等实现。收发器207例如可以与存储器201和/或资源端设备300通信,以便于将资源端设备300提供的组件存储至存储器201以供工程管理器204获取,在一些可选的实施例中,收发器207也可以将存储器201中被用户更新的组件资源和/或工程资源上传至资源端设备300,以基于资源端设备300和网络实现开发资源的共享和同步。
编译器205是工程在终端设备200上运行时对工程执行编译操作的单元,其中,编译操作用于基于工程生成可被目标装置执行的设计文档。例如,编译器205可以首先判断工程中是否安装有组件,若是,则编译器205对工程中安装的各个工程组件执行编译操作,以分别生成相应的组件库文件,并对编译生成的全部组件库文件和目标文件执行链接操作,以生成设计文档。
下载运行机206是用于将编译器206生成的设计文档下载到目标装置,使得目标装置得以通过运行该设计文档实现用户所要求的应用,从而完成所述应用的自动化开发的单元。由于设计文档是支持该应用的开发的各类软件代码,其编译后必须下载到相应的目标装置(板或片等)实际运行,同时用户编写的代码也在该目标装置安装的芯片上运行,确保了开发的应用的执行。下载运行机206还可以用于获得目标装置在运行设计文档时反馈的一些参数,以便于用户可以从终端设备200中观察到设计文档是否被正确执行、定位需要调整的组件和/或代码等等。
资源端设备300例如为平台服务器,作为示例,可以包括存储器、收发器以及资源管理器等多个部分。在资源端设备300中,存储器用于存储各种类别的、面向各种软硬件和应用的组件,还可以用于存储已开发完的工程,以便于终端设备200以工程和/或组件为单位获得资源端设备300中存储的开发资源。
收发器包括资源端设备300与外部通信的接口,主要完成资源端设备300向外部发送数据和从外部接收数据。收发器至少用于接收终端设备提供的需要开发的应用的信息,以便于资源管理器可以将存储器中相应的开发资源经由收发器反馈给终端设备200。
例如,资源管理器可以根据收发器提供的应用的信息在资源端设备的存储器中存储的各个组件中选定与该信息匹配的组件,随后收发器向终端设备提供被选定的组件,从而终端设备200可以基于资源管理器反馈的资源、在用户指令下完成组件的开发和工程的开发,并基于开发完成的工程完成应用的开发。
本领域的技术人员能够理解,本发明可以实现为系统、方法和计算机程序产品。因此,本发明可以具体实现为以下形式,即完全的硬件、完全的软件(包括固件、驻留软件、微代码),还可以实现为软件和硬件结合的形式。此外,在一些实施例中,本发明还可以实现为一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如但不限于为电、磁、光、电磁、红外线或半导体的系统、装置或器件,或其他任意以上的组合。计算机可读存储介质的更具体的例子包括:具体一个或多个导线的电连接,便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器、磁存储器或者上述任意合适的组合。在本文中,计算机可读的存储介质可以是任意包含或存储程序的有形介质,该程序可以被处理单元、装置或者器件使用,或者与其结合使用。
计算机可读信号介质可以包括在基带中或者作为截波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或者其他任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质之外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令系统、装置或器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,以及上述任意合适的组合。
开发人员可以基于一种或者多种程序设计语言或者组合来编写用于执行本发明实施例的计算机程序代码。所述程序设计语言包括面向对象的程序设计语言,例如JAVA、C++,还可以包括常规的过程式程序设计语言,例如C。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (24)
1.一种提供集成开发环境的终端,所述终端接收用户要开发的应用的信息,所述终端根据所述应用的信息生成嵌入式装置的设计文档,其特征在于,所述终端包括:
存储器,适于存储多个组件;
工程管理器,与所述存储器通信,适于根据所述应用的信息在工程中独立地安装所述多个组件之一;以及
编译器,基于所述工程生成所述设计文档,
其中,所述工程至少包括选自所述多个组件的芯片组件和/或装置组件,所述芯片组件对所述嵌入式装置的芯片的内部操作提供支持,所述装置组件对所述芯片的外围操作提供支持。
2.根据权利要求1所述的终端,其特征在于,所述工程包括选自所述多个组件中与所述应用对应的多个工程组件,所述多个工程组件中的各组件分别为以下类别之一:
芯片组件、装置组件、应用组件、操作系统组件和中间件组件,
其中,所述应用组件用于对所述嵌入式装置的应用程序提供支持,所述中间件组件用于对所述应用程序的可复用部分提供支持,所述操作系统组件用于对所述应用程序所基于的操作系统提供支持。
3.根据权利要求2所述的终端,其特征在于,所述多个工程组件包括:
唯一确定的芯片组件和装置组件;
至多一个所述应用组件;以及
至多一个所述操作系统组件。
4.根据权利要求2所述的终端,其特征在于,所述工程还包括配置模块,用于提供工程配置文件并提供组件化属性,以便于所述工程支持组件的安装和卸载,所述工程管理器还适于将已安装在所述工程中的组件独立地从所述工程中卸载。
5.根据权利要求4所述的终端,其特征在于,所述工程由所述配置模块和所述多个工程组件组成。
6.根据权利要求2所述的终端,其特征在于,每个所述工程组件被相应的软件接口封装,所述软件接口用于对外提供该组件的各种可调用功能和/或从外部获得该组件所需的各种可调用功能,相同类别的组件包含统一的软件接口,不同的工程组件经由软件接口交换信息。
7.根据权利要求2所述的终端,其特征在于,每个所述工程组件包括以下信息的一种或多种:
该组件的身份标识、名称、版本、类别、描述信息;以及
与该组件存在调用关系的组件类别,以便于不同类别的所述工程组件基于组件间的调用关系联合对所述嵌入式装置提供支持,
在各种组件类别中,所述装置组件、所述应用组件和/或所述中间件组件被配置为与所述芯片组件存在调用关系,所述应用组件和/或所述中间件组件被配置为与所述操作系统组件存在调用关系。
8.根据权利要求2所述的终端,其特征在于,在所述工程中安装有所述组件的情况下,所述编译器对各个所述工程组件执行编译操作,以分别生成相应的组件库文件,并对编译生成的全部组件库文件执行链接,以生成所述设计文档。
9.根据权利要求1所述的终端,其特征在于,所述芯片的内部操作包括对所述芯片内部的处理器核进行初始化的操作,所述芯片的外围操作包括对所述芯片的引脚进行初始化的操作以及对所述芯片的外围硬件进行驱动的操作。
10.根据权利要求1所述的终端,其特征在于,所述工程管理器还用于将所述工程和/或在所述工程中被更新的所述工程组件提供至所述存储器以作为可被所述工程管理器复用的资源。
11.根据权利要求1所述的终端,其特征在于,还包括:
交互模块,用于提供图形界面以显示所述存储器中的所述多个组件和/或与所述应用对应的所述多个工程组件,并接收用户提供的所述应用的信息以提供给所述工程管理器。
12.根据权利要求1所述的终端,其特征在于,还包括:
收发器,与所述存储器通信,以便于将平台服务器提供的组件作为所述多个组件之一存储至所述存储器,和/或将所述存储器提供的所述多个组件之一上传至所述平台服务器。
13.一种平台服务器,所述平台服务器根据要开发的应用向终端返回开发所述应用所需的组件,其特征在于,所述平台服务器包括:
存储器,适于存储多个组件;
收发器,接收所述终端提供的所述应用的信息;以及
资源管理器,适于根据所述收发器提供的所述应用的信息在所述多个组件中选定相应的组件,以便于所述收发器向所述终端提供被选定的所述组件,
其中,所述多个组件包括至少一个芯片组件和/或至少一个装置组件,各所述芯片组件对相应的嵌入式装置的芯片的内部操作提供支持,各所述装置组件对相应的嵌入式装置中的芯片的外围操作提供支持。
14.根据权利要求13所述的平台服务器,其特征在于,所述多个组件还包括:
至少一个应用组件、至少一个操作系统组件和/或至少一个中间件组件,
其中,各所述应用组件分别用于对相应的嵌入式装置的应用程序提供支持,各所述中间件组件分别用于对相应的嵌入式装置的应用程序的可复用部分提供支持,各所述操作系统组件分别用于对相应的嵌入式装置的应用程序所基于的操作系统提供支持。
15.根据权利要求14所述的平台服务器,其特征在于,每个所述组件包括以下信息的一种或多种:
该组件的身份标识、名称、版本、类别、描述信息;以及
与该组件存在调用关系的组件类别,以便于与所述应用对应的不同类别的所述组件基于组件间的调用关系联合对相应的所述嵌入式装置提供支持,
在各种组件类别中,所述装置组件、所述应用组件和/或所述中间件组件被配置为与所述芯片组件存在调用关系,所述应用组件和/或所述中间件组件被配置为与所述操作系统组件存在调用关系。
16.根据权利要求15所述的平台服务器,其特征在于,所述资源管理器根据所述应用的信息在所述存储器中选定相应的组件集,以便于所述收发器向所述终端提供被选定的所述组件集,
所述组件集包括与所述应用对应且存在调用关系的多个所述组件。
17.根据权利要求13所述的平台服务器,所述收发器还适于接收所述终端上传的组件和/或工程以作为可被所述资源管理器和所述终端复用的资源。
18.根据权利要求13所述的平台服务器,其特征在于,所述多个组件中的每个组件被相应的软件接口封装,所述软件接口用于对外提供该组件的各种可调用功能和/或从外部获得该组件所需的各种可调用功能,相同类别的组件包含统一的软件接口,不同的组件经由软件接口交换信息。
19.一种提供集成开发环境的方法,所述集成开发环境用于生成嵌入式装置的设计文档,其特征在于,所述方法包括:
接收用户要开发的应用的信息,并根据所述应用的信息在多个组件中查找与所述应用匹配的至少一个工程组件;
生成工程,每个所述工程组件分别被独立地安装在所述工程中;以及
基于所述工程生成所述设计文档,
其中,所述至少一个工程组件包括芯片组件和/或装置组件,所述芯片组件对所述嵌入式装置的芯片的内部操作提供支持,所述装置组件对所述芯片的外围操作提供支持。
20.根据权利要求19所述的方法,其特征在于,所述至少一个工程组件中的各组件分别为以下类别之一:
芯片组件、装置组件、应用组件、操作系统组件和中间件组件,
其中,所述应用组件用于对所述嵌入式装置的应用程序提供支持,所述中间件组件用于对所述应用程序的可复用部分提供支持,所述操作系统组件用于对所述应用程序所基于的操作系统提供支持。
21.根据权利要求19所述的方法,其特征在于,基于所述应用的信息生成工程的步骤包括:
基于所述应用的信息配置所述工程的组件化属性,以便于所述工程支持组件的安装和卸载;以及
在所述工程中安装与所述嵌入式装置匹配的所述至少一个工程组件,和/或,从所述工程中卸载不需要的组件。
22.根据权利要求19所述的方法,其特征在于,基于所述工程生成所述设计文档的步骤包括:
判断所述工程中是否已安装有组件;
在所述工程中安装有所述组件的情况下,对各个所述工程组件执行编译操作,以分别生成相应的组件库文件;以及
对编译生成的全部组件库文件执行链接操作,以生成所述设计文档。
23.根据权利要求19所述的方法,其特征在于,所述多个组件存储于存储器,所述存储器位于所述终端和/或与所述终端通信的平台服务器中,所述方法还包括:
将开发完成的所述工程和/或在所述工程中被更新的工程组件上传至所述存储器以作为可被复用于相应的应用中的资源。
24.一种计算机可读介质,所述计算机可读介质存储有计算机指令,所述计算机指令被执行时,实现如权利要求19至23任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010703261.5A CN113961232A (zh) | 2020-07-21 | 2020-07-21 | 提供集成开发环境的终端、方法和平台服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010703261.5A CN113961232A (zh) | 2020-07-21 | 2020-07-21 | 提供集成开发环境的终端、方法和平台服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113961232A true CN113961232A (zh) | 2022-01-21 |
Family
ID=79459936
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010703261.5A Pending CN113961232A (zh) | 2020-07-21 | 2020-07-21 | 提供集成开发环境的终端、方法和平台服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113961232A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116301754A (zh) * | 2023-03-23 | 2023-06-23 | 深圳市启明智显科技有限公司 | 基于云服务器的嵌入式设备固件开发方法、装置及系统 |
-
2020
- 2020-07-21 CN CN202010703261.5A patent/CN113961232A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116301754A (zh) * | 2023-03-23 | 2023-06-23 | 深圳市启明智显科技有限公司 | 基于云服务器的嵌入式设备固件开发方法、装置及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8621419B2 (en) | Automating the life cycle of a distributed computing application | |
US8966438B2 (en) | System and methods for end-users to graphically program and manage computers and devices | |
CN112685035A (zh) | 项目开发方法及装置、计算机可读存储介质、电子设备 | |
CN111459506B (zh) | 深度学习平台集群的部署方法、装置、介质及电子设备 | |
US7844734B2 (en) | Dynamic addressing (DA) using a centralized DA manager | |
US20050204351A1 (en) | Dynamic addressing (DA) using a centralized DA Manager | |
JP2004503866A (ja) | モジュラーコンピュータシステムおよび関連方法 | |
CN112148278A (zh) | 可视化的区块链智能合约框架及智能合约开发部署方法 | |
CN112631915B (zh) | 一种pcie设备软件仿真的方法、系统、设备及介质 | |
CN111970349B (zh) | 基于远程过程调用的通讯系统、方法、装置、设备及介质 | |
CN113961232A (zh) | 提供集成开发环境的终端、方法和平台服务器 | |
CN111683005B (zh) | 一种物联网智能网关设备及其构建方法 | |
US11372627B2 (en) | System and method for providing integrated development environment (IDE) for programmable software system | |
CN114816418A (zh) | 一种嵌入式操作系统的搭建方法、装置、设备和介质 | |
CN114816475A (zh) | 一种嵌入式操作系统的更新方法、装置、设备和介质 | |
CN109189591A (zh) | 用于调用应用组件的方法和装置 | |
CN114721647A (zh) | 一种基于无代码应用开发的面向对象编程方法 | |
WO2004088508A2 (en) | A method of creating software that is portable across different operating systems | |
CN114253615B (zh) | 一种引导程序设置方法、装置、电子设备及存储介质 | |
CN116991355B (zh) | 修改和迭代脚本支持led驱动芯片的方法、系统及装置 | |
US20090106378A1 (en) | Open System for Integrating and managing computer-based components representing a specific functionality of a specific application | |
CN118484245A (zh) | 插件管理装置、方法、电子设备、系统及芯片 | |
CN115048087A (zh) | Kubernetes环境下实现在线IDE工具的方法、设备及存储介质 | |
CN114647413A (zh) | 一种代码处理方法以及相关设备 | |
CN117270490A (zh) | 车辆控制器的测试方法、装置、车载终端及可读存储介质 |
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 |