CN114816475A - 一种嵌入式操作系统的更新方法、装置、设备和介质 - Google Patents
一种嵌入式操作系统的更新方法、装置、设备和介质 Download PDFInfo
- Publication number
- CN114816475A CN114816475A CN202210411608.8A CN202210411608A CN114816475A CN 114816475 A CN114816475 A CN 114816475A CN 202210411608 A CN202210411608 A CN 202210411608A CN 114816475 A CN114816475 A CN 114816475A
- Authority
- CN
- China
- Prior art keywords
- updated
- building block
- information
- block assembly
- operating system
- 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/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供嵌入式操作系统的更新方法、装置、设备和介质,方法包括:获取嵌入式操作系统对应的更新后参数信息;至少根据更新后参数信息中待更新功能模块的标识信息和目标积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定待更新积木组件,将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境;根据更新后积木组件对应的脚本文件中的积木配置信息和更新后参数信息中待更新功能模块的标识信息,对更新后积木组件进行编译,得到更新后的可执行文件,作为更新后的嵌入式操作系统。本申请的更新过程简单,嵌入式操作系统的更新效率高。
Description
技术领域
本申请涉及计算机领域,特别是涉及一种嵌入式操作系统的更新方法、装置、设备和介质。
背景技术
嵌入式操作系统是一种用于嵌入式设备,如智能灯具,空调,冰箱等资源受限设备的操作系统。与用于手机,PC使用的操作系统不同,嵌入式操作系统运行的系统环境比较复杂,可使用的资源也有大有小,例如,嵌入式操作系统可以在几十K内存的蓝牙低功耗设备中运行,也可以在几十M内存、可以运行wifi能够联通网络的网络设备中运行,因为系统环境的复杂,意味着嵌入式操作系统很难标准化,在搭建和更新操作系统的时候会碰到各种各样的问题。
目前,嵌入式操作系统基于软件模块搭建得到,则该嵌入式操作系统需要更新时,需要按照搭建过程重新下载相关的代码(即软件模块),然后再根据系统的需求,在某个文件中通过宏或者其他方式对功能进行裁剪配置。但是,目前通常只能从一个软件仓库将所有源代码下载,源代码中既包含本项目需要的软件,也包含一些不需要的软件,开发人员通常需要花费几天的时间确定哪些模块需要,哪些模块不需要,导致下载过程需要耗费开发人员大量的时间;并且,由于各个软件模块通常在不同的头文件中进行配置,甚至单个软件模块在不同的地方多次配置,可配置文件不在同一个配置头文件中,容易遗漏相关配置,造成混乱,影响更新效率。
综上,现有的嵌入式操作系统的更新方法存在更新困难且更新效率低下的缺点,亟待解决。
发明内容
有鉴于此,本申请提供了一种嵌入式操作系统的更新方法、装置、设备和介质,以解决现有技术存在的更新困难且更新效率低下的问题,其技术方案如下:
一种嵌入式操作系统的更新方法,包括:
获取嵌入式操作系统对应的更新后参数信息,其中,嵌入式操作系统由目标积木组件在目标环境下搭建得到,目标积木组件包含的每个积木组件均由若干功能模块组成且均对应有脚本文件,更新后参数信息中至少包括更新嵌入式操作系统所需的待更新功能模块的标识信息;
至少根据更新后参数信息中待更新功能模块的标识信息和目标积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定待更新积木组件,并将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中;
根据更新后积木组件对应的脚本文件中的积木配置信息,以及更新后参数信息中待更新功能模块的标识信息,对更新后积木组件进行编译,得到更新后的可执行文件,作为更新后的嵌入式操作系统,其中,更新后积木组件包括未更新积木组件和待更新积木组件。
可选的,至少根据更新后参数信息中待更新功能模块的标识信息和目标积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定待更新积木组件,包括:
根据更新后参数信息中待更新功能模块的标识信息和目标积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定待更新积木组件;
或,
根据更新后参数信息中待更新功能模块的标识信息、更新后参数信息中目标积木组件的待更新版本信息,以及目标积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定待更新积木组件。
可选的,根据更新后参数信息中待更新功能模块的标识信息、更新后参数信息中目标积木组件的待更新版本信息,以及目标积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定待更新积木组件,包括:
根据更新后参数信息中待更新功能模块的标识信息和更新后参数信息中目标积木组件的待更新版本信息,从目标积木组件中确定第一待更新积木组件;
根据第一待更新积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定与第一待更新积木组件存在积木依赖关系的积木组件,作为第二待更新积木组件;
由第一待更新积木组件和第二待更新积木组件得到待更新积木组件。
可选的,目标积木组件对应的脚本文件中的积木依赖信息为接口依赖信息。
可选的,待更新积木组件对应的脚本文件中还包括待更新积木组件的版本信息;
将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中,包括:
基于预设的仓库信息确定待更新积木组件所在的软件子仓库,作为目标软件子仓库,其中,仓库信息中包括积木组件的标识信息与软件子仓库的标识信息的对应关系;
若更新后参数信息中不包括待更新版本信息,则从目标软件子仓库中将最新版本下的待更新积木组件和最新版本下的待更新积木组件对应的脚本文件下载到目标环境中;
若更新后参数信息中包括待更新版本信息,则从目标软件子仓库中将待更新版本信息下的待更新积木组件和待更新版本信息下的待更新积木组件对应的脚本文件下载到目标环境中。
可选的,根据更新后积木组件对应的脚本文件中的积木配置信息,以及更新后参数信息中待更新功能模块的标识信息,对更新后积木组件进行编译,得到更新后的可执行文件,包括:
根据更新后积木组件对应的脚本文件中的积木配置信息,以及更新后参数信息中待更新功能模块的标识信息,得到更新后配置文件;
根据更新后配置文件,对更新后积木组件进行裁剪,得到裁剪的更新后积木组件;
根据更新后配置文件,生成更新后编译文件;
根据更新后编译文件,对裁剪的更新后积木组件进行编译,得到更新后的可执行文件。
可选的,根据更新后积木组件对应的脚本文件中的积木配置信息,以及更新后参数信息中待更新功能模块的标识信息,得到更新后配置文件,包括:
按照更新后参数信息中待更新功能模块的标识信息对待更新积木组件对应的脚本文件中的积木配置信息进行修改,由修改后的积木配置信息和未更新积木组件对应的脚本文件中的积木配置信息得到更新后配置文件。
可选的,根据更新后配置文件,对更新后积木组件进行裁剪,得到裁剪的更新后积木组件,包括:
根据更新后配置文件,将更新后积木组件中除待更新功能模块外的其他功能模块裁掉,以得到裁剪的更新后积木组件。
可选的,更新后积木组件对应的脚本文件中还包括更新后积木后处理信息;
在根据更新后积木组件对应的脚本文件中的积木配置信息,以及更新后参数信息中待更新功能模块的标识信息,对更新后积木组件进行编译,得到更新后的可执行文件之后,还包括:
根据更新后积木后处理信息,对更新后的可执行文件进行后处理,后处理后的可执行文件作为更新后的嵌入式操作系统。
可选的,根据更新后积木后处理信息,对更新后的可执行文件进行后处理,包括:
若更新后积木后处理信息中包括加密处理,则从外部指定位置获取加密命令,并基于加密命令对更新后的可执行文件进行加密处理;
和/或,
若更新后积木后处理信息中包括添加包头处理,则从外部指定位置获取包头添加命令,并基于包头添加命令为更新后的可执行文件添加包头信息;
和/或,
若更新后积木后处理信息中包括功能打印处理,则从外部指定位置获取功能打印命令,并基于功能打印命令对更新后的可执行文件对应的功能列表信息进行打印输出。
一种嵌入式操作系统的更新装置,包括:更新后参数信息获取模块、重下载模块和重编译模块;
更新后参数信息获取模块,用于获取待更新嵌入式操作系统对应的更新后参数信息,其中,待更新嵌入式操作系统由目标积木组件在目标环境下搭建得到,目标积木组件包含的每个积木组件均由若干功能模块组成且均对应有脚本文件,更新后参数信息中至少包括更新嵌入式操作系统所需的待更新功能模块的标识信息;
重下载模块,用于至少根据更新后参数信息中待更新功能模块的标识信息和目标积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定待更新积木组件,并将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中;
重编译模块,用于根据更新后积木组件对应的脚本文件中的积木配置信息,以及更新后参数信息中待更新功能模块的标识信息,对更新后积木组件进行编译,得到更新后的可执行文件,作为更新后的嵌入式操作系统,其中,更新后积木组件包括未更新积木组件和待更新积木组件。
一种嵌入式操作系统的更新设备,包括存储器和处理器;
存储器,用于存储程序;
处理器,用于执行程序,实现如上述任一项的嵌入式操作系统的更新方法的各个步骤。
一种可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,实现如上述任一项的嵌入式操作系统的更新方法的各个步骤。
经由上述的技术方案可知,本申请提供的嵌入式操作系统的更新方法,首先获取嵌入式操作系统对应的更新后参数信息,然后至少根据更新后参数信息中待更新功能模块的标识信息和目标积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定待更新积木组件,并将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中,最后根据更新后积木组件对应的脚本文件中的积木配置信息,以及更新后参数信息中待更新功能模块的标识信息,对更新后积木组件进行编译,得到更新后的可执行文件,作为更新后的嵌入式操作系统。由此可见,本申请在更新嵌入式操作系统时,仅需配置好更新后参数信息,便可一站式更新好嵌入式操作系统,更新过程比较简单,且提高了嵌入式操作系统的更新效率;并且,在更新嵌入式操作系统时,仅将需要更新的那些积木组件下载下来即可,无需下载所有积木组件,节省了下载时间,并且开发人员无需关心下载的积木组件中,哪些积木组件需要,哪些积木组件不需要,节省了开发人员的时间。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的嵌入式操作系统的更新方法的流程示意图;
图2a为现有技术提供的嵌入式操作系统架构的示意图;
图2b为本申请搭建的嵌入式操作系统的架构的示意图;
图3为本申请实施例提供的嵌入式操作系统的更新装置的结构示意图;
图4为本申请实施例提供的嵌入式操作系统的更新设备的硬件结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
鉴于现有技术存在的问题,本案发明人进行了深入研究,最终提出了一种嵌入式操作系统的更新方法,接下来通过下述实施例对本申请提供的嵌入式操作系统的更新方法进行详细介绍。
请参阅图1,示出了本申请实施例提供的嵌入式操作系统的更新方法的流程示意图,该嵌入式操作系统的更新方法可以包括:
步骤S101、获取嵌入式操作系统对应的更新后参数信息。
其中,嵌入式操作系统由目标积木组件在目标环境下搭建得到,目标积木组件包含的每个积木组件均对应有脚本文件,脚本文件中包括积木依赖信息和积木配置信息,积木依赖信息用于描述对应积木组件与其他积木组件之间的依赖关系,积木配置信息用于描述组成对应积木组件的若干功能模块是否为搭建嵌入式操作系统所需的设定功能模块,更新后参数信息中至少包括更新嵌入式操作系统所需的待更新功能模块的标识信息。
本申请实施例提供的嵌入式操作系统在目标环境下由目标积木组件搭建得到。
具体的,目标积木组件的搭建过程可以包括:搭建目标环境;获取第一积木组件的标识信息和嵌入式操作系统配套的目标参数信息;至少根据第一积木组件的标识信息,将第一积木组件和第一积木组件对应的脚本文件下载到目标环境中;至少根据第一积木组件对应的脚本文件中的积木依赖信息,将第二积木组件和第二积木组件对应的脚本文件下载到目标环境中;根据目标积木组件对应的脚本文件中的积木配置信息,以及目标参数信息中设定功能模块的标识信息,对下载的目标积木组件进行编译,得到编译后的可执行文件,作为搭建的嵌入式操作系统。
其中,第一积木组件为目标积木组件中的根积木组件,第二积木组件为目标积木组件中除第一积木组件外的其他积木组件,目标积木组件包含的每个积木组件对应的脚本文件中均包括积木依赖信息和积木配置信息,积木依赖信息用于描述对应积木组件与其他积木组件之间的依赖关系,积木配置信息用于描述组成对应积木组件的若干功能模块是否为搭建嵌入式操作系统所需的设定功能模块,目标参数信息至少包括设定功能模块的标识信息。
这里,搭建目标环境是因为:考虑到构建嵌入式操作系统时桌面操作系统的不同、编译软件版本的不同、功能软件的不同等,均会导致在搭建编译环境时耗费大量时间,为此,本实施例可以先搭建目标环境,从而可以以最小的空间屏蔽操作系统(例如,Windows系统、Linux系统等)的差异,之后再在目标环境下搭建嵌入式操作系统。
可选的,本实施例搭建目标环境的过程可以有多种实现方式,本申请提供但不限于以下两种实现方式。
第一种:创建docker虚拟映像,相应的,在映像中预装所有工具软件。
该第一种方式需要建立操作系统映像,占用磁盘空间更大,基于此,优选地,本步骤可以选用下述第二种实现方式。
第二种:使用虚拟环境技术和目标沙箱软件搭建目标环境。
可选的,这里的虚拟环境技术具体可以为Python的虚拟环境技术,目标沙箱软件可以为miniconda软件或者其他python沙箱软件,也就是说,本步骤可以使用Python的虚拟环境技术,并使用miniconda软件或者其他python沙箱软件来搭建目标环境。
需要说明的是,本实施例搭建的目标环境可以在系统构建时本地运行,也可以从软件仓库下载运行。
由于本申请是基于目标环境搭建嵌入式操作系统,则对嵌入式操作系统进行更新的过程中使用的工具软件(比如构建工具和构建软件,这里,构建软件例如可以为CMake或Make软件)也需要预安装到目标环境中,也就是说,嵌入式操作系统的更新过程中使用的工具软件需要在目标环境中运行。
以下对积木组件及其相关信息进行介绍,以便本领域技术人员更加理解本实施例提供的积木组件及其相关信息。
参见图2a所示,现有技术中(积木组件化改造前),整个嵌入式操作系统是一个统一的整体,在整体内部区分不同软件模块;本实施例可以预先将现存的软件模块做组件积木化处理,得到各软件模块分别对应的积木组件,则本实施例可以将积木组件作为嵌入式操作系统的基本单元来对嵌入式操作系统进行搭建和更新,基于此,嵌入式操作系统的架构示意图可以参见图2b所示,本实施例中的目标积木组件是指图2b所示的所有积木组件,第一积木组件是指图2b所示虚线框中的积木组件,第二积木组件是指图2b所示虚线框外的所有积木组件。
可选的,本实施例可通过高级语言(例如Python)编写用于对软件模块进行组件积木化处理的积木组件改造工具,然后再基于编写的积木组件改造工具将现存的每个软件模块均处理为积木组件。
需要说明的是,现有技术中,每个软件模块均由若干功能模块组成,相应的,本申请对软件模块进行组件积木化处理后,每个积木组件均由功能模块组成,例如,积木组件A由功能模块1~5组成,积木组件B由功能模块6~7组成,积木组件C由功能模块8~10组成,积木组件D由功能模块11组成,等等。
在本实施例中,将现有技术中的各软件模块均改造为积木组件后,还可以为每个积木组件编写相应的脚本文件,以通过该脚本文件描述嵌入式操作系统更新过程需要依据的积木组件的相关信息。
在一可选实施例中,任一积木组件对应的脚本文件中至少包括积木依赖信息和积木配置信息。
其中,一积木组件对应的脚本文件中的积木依赖信息用于描述该积木组件与其他积木组件之间的依赖关系,例如,第一积木组件对应的脚本文件中包含第一积木组件与下层积木组件(即第二层积木组件)的依赖关系。
可选的,该依赖关系可以用依赖表进行描述,也就是说,依赖表代表了该积木组件与其他积木组件的上下层依赖关系;由于上层积木组件会调用下层积木组件提供的接口,则可选的,积木依赖信息具体可以包括接口依赖信息。
一积木组件对应的脚本文件中的积木配置信息用于描述组成该积木组件的若干功能模块是否为搭建嵌入式操作系统所需的设定功能模块(搭建嵌入式操作系统时,可能会用到某个积木组件的部分或全部功能模块,本实施例将搭建嵌入式操作系统时用到的功能模块定义为设定功能模块)。
可选的,本实施例可以用Y和N表示每个功能模块是否为设定功能模块,其中,若一功能模块配置为Y,表示该功能模块为设定功能模块,若配置为N,表示该功能模块不为设定功能模块,初始情况下可以均配置为Y或N。
例如,当前嵌入式操作系统包含的一积木组件(日志组件)的积木配置信息可以为:
Feature_config:
LOG_SUPPORT_ASYNC Y(这里的N也可以为Y)
LOG_SUPPORT_FS N(这里的N也可以为Y)
LOG_SUPPORT_CLOUD N(这里的N也可以为Y)
这里,“LOG_SUPPORT_ASYNC”、“LOG_SUPPORT_FS”和“LOG_SUPPORT_CLOUD”为组成日志组件的三个功能模块,其中,“LOG_SUPPORT_ASYNC”代表异步日志功能,如果为Y表示搭建的嵌入式操作系统支持异步日志,如果为N表示不支持;“LOG_SUPPORT_FS”代表日志存储到文件系统功能,如果为Y表示搭建的嵌入式操作系统支持日志存贮到文件系统,如果为N表示不支持;“LOG_SUPPORT_CLOUD”代表日志传送到云服务前端功能,如果为Y表示搭建的嵌入式操作系统支持日志传送到云服务前端,如果为N表示不支持。
需要说明的是,上述Y和N仅为示例,除此之外,还可以采用其他标识,本申请对此不进行限定。
可选的,脚本文件可以使用YAML、JSON、XML等脚本语言实现,易于开发人员读写,易于使用高级语言进行处理。优选的情况下,可以使用YAML脚本语言实现上述脚本文件。
可以理解的是,可能存在某些嵌入式操作系统需要实现的功能还未开发相关代码,即现有技术中没有该功能对应的软件模块,此时,本实施例仍可以通过编写的积木组件改造工具生成该需要实现的功能所对应的积木组件,由于还未开发相关代码,该需要实现的功能所对应的积木组件内容为空。为了后续能够基于该需要实现的功能在空的积木组件中添加相关代码等信息,可以根据未开发的相关代码,自动生成该空的积木组件对应的积木组件脚手架代码。
可选的,积木组件脚手架代码中包括以下信息:第一,组件信息文件,用于根据代码目录名,自动添加相关信息;第二,默认代码目录结构,用于扫描代码目录,自动生成目录信息;第三,默认系统配置选项,用于预留空间方便开发人员按需定制;第四,默认编译选项,用于预留空间方便开发人员按需定制。当然,该积木组件脚手架代码中还可以包括其他信息,本申请对此不进行限定。
在本步骤中,在搭建好嵌入式操作系统后,如果需要对嵌入式操作系统(例如图2b所示的嵌入式操作系统)进行更新,则可以获得嵌入式操作系统对应的更新后参数信息。
上述更新后参数信息中至少包括待更新功能模块的标识信息,该待更新功能模块是指对嵌入式操作系统进行更新时所需的设定功能模块,也即,搭建所要得到的更新后的嵌入式操作系统时所需的设定功能模块。
可选的,本步骤“获取嵌入式操作系统对应的更新后参数信息”的具体实现方式可以有多种,本申请提供但不限于以下两种实现方式。
第一种:对目标参数信息进行改写,得到嵌入式操作系统对应的更新后参数信息。
在本实施例中,对搭建好的嵌入式操作系统进行更新的过程主要涉及更新某个积木组件的版本信息,和/或,增加或删除设定功能模块。因此,当需要对搭建好的嵌入式操作系统进行更新时,可以对目标参数信息中目标积木组件的版本信息和/或设定功能模块的标识信息进行更新,得到更新后参数信息,由此本步骤可以获取更新后参数信息。
例如,假设目标参数信息中包括积木组件A的功能模块1~3的标识信息,若对当前待更新的嵌入式操作系统进行更新时,新版本下的嵌入式操作系统(即更新后的嵌入式操作系统)中需要包含积木组件A的功能模块1~4,则本步骤可以在目标参数信息中增加积木组件A的功能模块4的标识信息。
再例如,假设目标参数信息中包括V1.0版本下的积木组件A的功能模块1~3的标识信息,若需要基于V2.0版本下的积木组件A的功能模块1~3进行嵌入式操作系统的更新,则可以将目标参数信息中V1.0版本下的积木组件A的功能模块1~3的标识信息改写为V2.0版本下的积木组件A的功能模块1~3的标识信息。
第二种:针对所要得到的更新后的嵌入式操作系统,编写其配套的更新后参数信息。
步骤S102、至少根据更新后参数信息中待更新功能模块的标识信息和目标积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定待更新积木组件,并将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中。
可以理解的是,无论是对目标参数信息中目标积木组件的版本信息进行更新,还是对设定功能模块的标识信息进行更新,都需要重新下载对应积木组件。同时,由于一些积木组件之间存在依赖关系,当这些积木组件中存在需要重新下载的积木组件时,与该需要重新下载的积木组件存在依赖关系的积木组件可能也需要重新下载,因此,本步骤可以根据更新后参数信息中待更新功能模块的标识信息和目标积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定待更新积木组件,这里,待更新积木组件即需要重新下载的积木组件。
需要说明的是,本实施例之所以会根据目标积木组件对应的脚本文件中的积木依赖信息确定一部分待更新积木组件,是因为积木依赖信息中包括接口依赖信息,而当存在接口依赖的积木组件中,任一个积木组件需要重新下载时,其他存在接口依赖的积木组件也需要重新下载,否则,对嵌入式操作系统进行更新后,上层积木组件调用下层积木组件提供的接口时会出现调用失败的情况。基于此,可选的,上述目标积木组件对应的脚本文件中的积木依赖信息具体可以为接口依赖信息。
值得注意的是,在嵌入式操作系统搭建时,已经将目标积木组件下载到目标环境中了,因此在通过本申请实施例对该嵌入式操作系统进行更新时,仅将目标积木组件中需要更新的积木组件下载到目标环境就可以,那些不需要更新的积木组件由于搭建时已经下载了,所以本步骤无需再下载。
如前述步骤中的介绍,本实施例会在目标环境中预装构建工具,则本步骤可以通过构建工具将待更新积木组件本身和待更新积木组件对应的脚本文件下载下来。
在一可选实施例中,本步骤中的“确定待更新积木组件”具体可以为确定待更新积木组件的标识信息,相应的,“将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中”的过程可以包括:至少根据该待更新积木组件的标识信息将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中。
步骤S103、根据更新后积木组件对应的脚本文件中的积木配置信息,以及更新后参数信息中待更新功能模块的标识信息,对更新后积木组件进行编译,得到更新后的可执行文件,作为更新后的嵌入式操作系统。
其中,更新后积木组件包括未更新积木组件和待更新积木组件,未更新积木组件是指目标积木组件中除待更新积木组件外的其他积木组件。
当重新下载了待更新积木组件和待更新积木组件对应的脚本文件后,需要通过本步骤重新编译,才可以得到更新后的嵌入式操作系统。
如前述步骤中的介绍,本实施例会在目标环境中预安装构建工具和构建软件,此外,可选的,本步骤还可以在构建系统未安装编译软件时,从软件仓库自动下载编译软件,然后便可根据未更新积木组件对应的脚本文件中的积木配置信息、待更新积木组件对应的脚本文件中的积木配置信息,以及更新后参数信息中待更新功能模块的标识信息,使用安装好的构建工具、构建软件和编译软件,对前述步骤下载的待更新积木组件以及嵌入式操作系统搭建时下载的未更新积木组件进行编译,并输出编译信息,在编译出错时,还会输出编译错误信息。
本申请提供的嵌入式操作系统的更新方法,首先在目标环境下的嵌入式操作系统需要更新时,获取嵌入式操作系统对应的更新后参数信息,然后至少根据更新后参数信息中待更新功能模块的标识信息和目标积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定待更新积木组件,并将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中,最后根据更新后积木组件对应的脚本文件中的积木配置信息,以及更新后参数信息中待更新功能模块的标识信息,对更新后积木组件进行编译,得到更新后的可执行文件,作为更新后的嵌入式操作系统。由此可见,本申请在更新嵌入式操作系统时,仅需配置好更新后参数信息,便可一站式更新好嵌入式操作系统,更新过程比较简单,且提高了嵌入式操作系统的更新效率;并且,在更新嵌入式操作系统时,仅将需要更新的那些积木组件下载下来即可,无需下载所有积木组件,节省了下载时间,并且开发人员无需关心下载的积木组件中,哪些积木组件需要,哪些积木组件不需要,节省了开发人员的时间。
经由实验证明,本申请提供的嵌入式操作系统的更新方法,可以让开发人员在Windows,Linux,MAC OS等系统上一站式,仅仅花费数分钟便可完成对先前搭建的嵌入式操作系统的更新。
本申请的一个实施例,对上述步骤S102中“至少根据更新后参数信息中待更新功能模块的标识信息和目标积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定待更新积木组件”的过程进行说明。
可选的,“至少根据更新后参数信息中待更新功能模块的标识信息和目标积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定待更新积木组件”的过程可以包括:
若更新后参数信息中包括待更新功能模块的标识信息,但不包括目标积木组件的待更新版本信息,则根据更新后参数信息中待更新功能模块的标识信息和目标积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定待更新积木组件;
若更新后参数信息中包括待更新功能模块的标识信息,且包括目标积木组件的待更新版本信息,则根据更新后参数信息中待更新功能模块的标识信息、更新后参数信息中目标积木组件的待更新版本信息,以及目标积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定待更新积木组件。
上述目标积木组件的待更新版本信息是指更新嵌入式操作系统时所需的目标积木组件的版本信息。
在一可选实施例中,上述“根据更新后参数信息中待更新功能模块的标识信息和目标积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定待更新积木组件”的过程可以包括:
步骤a1、根据更新后参数信息中待更新功能模块的标识信息,从目标积木组件中确定第一待更新积木组件。
在本步骤中,可以根据更新后参数信息中包含的待更新功能模块的标识信息,确定出哪些积木组件需要更新。为了便于描述,将本步骤确定出的积木组件定义为第一待更新积木组件。
步骤a2、根据第一待更新积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定与第一待更新积木组件存在积木依赖关系的积木组件,作为第二待更新积木组件。
在本步骤中,可以将所有与第一待更新积木组件存在积木依赖关系的积木组件均确定为第二待更新积木组件,也就是说,如果某个积木组件需要更新,则其下层所有的积木组件均定义为第二待更新积木组件,例如,若图2b所示的虚线框中左侧的积木组件为第一待更新积木组件,则其下层的8个积木组件均确定为第二待更新积木组件。
考虑到如果一个积木组件与第一待更新积木组件存在依赖关系,但是不存在接口依赖关系,则即使不对该积木组件进行重新下载,也不会对更新后的嵌入式操作系统造成影响;但是如果该积木组件与第一待更新积木组件存在接口依赖关系,则如果不对该积木组件进行重新下载,将导致上层积木组件调用下层积木组件提供的接口时会出现调用失败的情况。基于此,可选的,上述第一待更新积木组件对应的脚本文件中的积木依赖信息可以为接口依赖关系。
步骤a3、由第一待更新积木组件和第二待更新积木组件得到待更新积木组件。
在一可选实施例中,上述“根据更新后参数信息中待更新功能模块的标识信息、更新后参数信息中目标积木组件的待更新版本信息,以及目标积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定待更新积木组件”的过程可以包括:
步骤b1、根据更新后参数信息中待更新功能模块的标识信息和更新后参数信息中目标积木组件的待更新版本信息,从目标积木组件中确定第一待更新积木组件。
在本步骤中,可以根据更新后参数信息中包含的待更新功能模块的标识信息,以及更新后参数信息中包含的目标积木组件的待更新版本信息,确定出哪些积木组件需要更新。
步骤b2、根据第一待更新积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定与第一待更新积木组件存在积木依赖关系的积木组件,作为第二待更新积木组件。
本步骤的过程与前述步骤a2的过程相同,详细可参照前述步骤中的介绍,在此不再赘述。
步骤b3、由第一待更新积木组件和第二待更新积木组件得到待更新积木组件。
本实施例能够根据更新后参数信息中待更新功能模块的标识信息和目标积木组件对应的脚本文件中的积木依赖信息,和/或,更新后参数信息中目标积木组件的待更新版本信息,准确地确定出哪些积木组件需要重新下载,从而避免了下载所有的目标积木组件,节省了下载积木组件的时间,提高了嵌入式操作系统的更新效率。
以下的一个实施例,对上述步骤S102“将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中”的过程进行说明。
在一种可能的实现方式中,为了便于对积木组件进行维护,本实施例可以将一个大的积木组件软件仓库拆分为多个软件子仓库,每个软件子仓库存储一个积木组件,从而本实施例可以在一个大的积木组件软件仓库中按积木组件的方式维护不同组件级的软件子仓库。
那么,在下载待更新积木组件及对应的脚本文件时,就需要知道要下载的待更新积木组件及对应的脚本文件在哪个软件子仓库,基于此,本实施例可以维护一个预设的仓库信息,在该仓库信息中将软件子仓库与积木组件关联起来,从而可基于仓库信息从对应软件子仓库中下载相应积木组件。基于此,步骤S102“将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中”的过程可以包括:根据预设的仓库信息,将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中。
如前述步骤S102中的介绍,“确定待更新积木组件”具体可以为确定待更新积木组件的标识信息,则这里“根据预设的仓库信息,将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中”的过程具体是指:根据预设的仓库信息和待更新积木组件的标识信息,将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中。
在另一种可能的实现方式中,积木组件可能对应有多个版本信息(例如版本号),则上述“每个软件子仓库存储一个积木组件”具体是指每个软件子仓库存储一个积木组件的若干个版本。
可选的,本实施例可将积木组件的版本信息写入脚本文件,也即,任一积木组件的脚本信息中还包括该积木组件的版本信息。
那么可以理解的是,本实施例在下载待更新积木组件时,需要提前获知下载哪个版本的待更新积木组件,才可以去对应软件子仓库进行下载。
可选的,可以将需要下载的版本信息(为便于后续描述,将该待更新积木组件对应的需要下载的版本信息定义为待更新版本信息)写入更新后参数信息中,也即,更新后参数信息中可以包括待更新积木组件的待更新版本信息,此时,可选的,步骤S102“将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中”的过程可以包括:根据预设的仓库信息,将待更新版本信息下的待更新积木组件和待更新版本信息下的待更新积木组件对应的脚本文件下载到目标环境中。
具体来说,若更新后参数信息中包括待更新版本信息,则“根据预设的仓库信息,将待更新版本信息下的待更新积木组件和待更新版本信息下的待更新积木组件对应的脚本文件下载到目标环境中”的过程包括:
步骤c1、基于预设的仓库信息确定待更新积木组件所在的软件子仓库,作为目标软件子仓库,其中,仓库信息中包括积木组件的标识信息与软件子仓库的标识信息的对应关系,目标软件子仓库中包括若干个版本下的待更新积木组件和若干个版本下的待更新积木组件分别对应的脚本文件。
可选的,本步骤可以根据仓库信息和待更新积木组件的标识信息,确定待更新积木组件所在的软件子仓库。
步骤c2、从目标软件子仓库中将待更新版本信息下的待更新积木组件和待更新版本信息下的待更新积木组件对应的脚本文件下载到目标环境中。
上述步骤c1~c2详细介绍了更新后参数信息中包括待更新版本信息的情况下,对待更新积木组件本身和待更新积木组件对应的脚本文件进行下载的详细过程。可以理解的是,还可以存在更新后参数信息中不包括待更新版本信息的情况,此时步骤S102“将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中”的过程可以包括:从目标软件子仓库中将最新版本下的待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中。
具体的,首先基于预设的仓库信息确定待更新积木组件所在的目标软件子仓库,然后再从目标软件子仓库中将待更新版本信息下的待更新积木组件和待更新版本信息下的待更新积木组件对应的脚本文件下载到目标环境中。
也就是说,在本实施例中,步骤S102“将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中”的过程可以包括:若更新后参数信息中不包括待更新版本信息,则根据仓库信息将最新版本下的待更新积木组件和最新版本下的待更新积木组件对应的脚本文件下载到目标环境中;若更新后参数信息中包括待更新版本信息,则根据仓库信息将待更新版本信息下的待更新积木组件和待更新版本信息下的待更新积木组件对应的脚本文件下载到目标环境中。
需要说明的是,上述本实施例给出了步骤S102“将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中”的两种具体实现方式,但是步骤S102“将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中”的实施方式并不仅限于这两种实现方式,除此之外,还可以有其他实现方式。
例如,可以将所有积木组件及对应的脚本文件存储在一个大的积木组件软件仓库中,若待更新积木组件中的每个积木组件只有一个版本,则步骤S102仅根据待更新积木组件的标识信息,便可将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中,若待更新积木组件中的每个积木组件包括多个版本,则步骤S102可根据待更新积木组件的标识信息和待更新版本信息,将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中。
综上,以上本实施例给出了步骤S102中“将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中”的四种实现方式,分别如下:
第一种实现方式,若所有积木组件及对应的脚本文件存储在一个大的积木组件软件仓库中,且待更新积木组件中的每个积木组件只有一个版本,则步骤S102“将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中”的过程可以包括:根据待更新积木组件的标识信息,将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中。
第二种实现方式,若所有积木组件及对应的脚本文件存储在一个大的积木组件软件仓库中,且待更新积木组件中的每个积木组件包括多个版本,则步骤S102“将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中”的过程可以包括:若更新后参数信息中不包括待更新版本信息,则根据待更新积木组件的标识信息,将最新版本下的待更新积木组件和最新版本下的待更新积木组件对应的脚本文件下载到目标环境中;若更新后参数信息中包括待更新版本信息,则根据待更新积木组件的标识信息,将待更新版本信息下的待更新积木组件和待更新版本信息下的待更新积木组件对应的脚本文件下载到目标环境中。
这里,待更新版本信息是指需要下载的待更新积木组件的版本信息,在本实施例中,待更新版本信息可以写入嵌入式操作系统对应的更新后参数信息中。
第三种实现方式,若待更新积木组件中的每个积木组件存储在一个软件子仓库中,且待更新积木组件中的每个积木组件只有一个版本,则步骤S102“将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中”的过程可以包括:根据待更新积木组件的标识信息和仓库信息,从目标软件子仓库中将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中。
第四种实现方式,若待更新积木组件中的每个积木组件存储在一个软件子仓库中,且待更新积木组件中的每个积木组件包括多个版本,则步骤S102“将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中”的过程可以包括:若更新后参数信息中不包括待更新版本信息,则根据待更新积木组件的标识信息和仓库信息,从目标软件子仓库中将最新版本下的待更新积木组件和最新版本下的待更新积木组件对应的脚本文件下载到目标环境中;若更新后参数信息中包括待更新版本信息,则根据待更新积木组件的标识信息和仓库信息,从目标软件子仓库中将待更新版本信息下的待更新积木组件和待更新版本信息下的待更新积木组件对应的脚本文件下载到目标环境中。
需要说明的是,步骤S102“将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中”的实施方式并不仅限于上述几种实现方式,除此之外,还可以有其他实现方式,本申请对此不进行具体限定。
本实施例通过仓库信息和/或待更新版本信息可以快速定位到需要下载的待更新积木组件及其脚本文件,节省了下载时间,提高了下载效率。
以下对上述实施例中的“步骤S103、根据更新后积木组件对应的脚本文件中的积木配置信息,以及更新后参数信息中待更新功能模块的标识信息,对更新后积木组件进行编译,得到更新后的可执行文件”进行说明。
可选的,上述“步骤S103、根据更新后积木组件对应的脚本文件中的积木配置信息,以及更新后参数信息中待更新功能模块的标识信息,对更新后积木组件进行编译,得到更新后的可执行文件”的过程可以包括以下步骤d1~d4:
步骤d1、根据更新后积木组件对应的脚本文件中的积木配置信息,以及更新后参数信息中待更新功能模块的标识信息,得到更新后配置文件。
具体的,本步骤可根据未更新积木组件对应的脚本文件中的积木配置信息、待更新积木组件对应的脚本文件中的积木配置信息,以及更新后参数信息中待更新功能模块的标识信息,得到更新后配置文件。
更具体地来说,在本步骤中,构建工具可以根据未更新积木组件对应的脚本文件中的积木配置信息、待更新积木组件对应的脚本文件中的积木配置信息,以及更新后参数信息中待更新功能模块的标识信息,生成一个统一的配置文件,该统一的配置文件即更新后配置文件。
在一可选实施例中,本步骤的过程可以包括:按照更新后参数信息中待更新功能模块的标识信息对待更新积木组件对应的脚本文件中的积木配置信息进行修改,由修改后的积木配置信息和未更新积木组件对应的脚本文件中的积木配置信息得到更新后配置文件。
可以理解的是,初始情况下,待更新积木组件对应的脚本文件中的积木配置信息通常与所要得到的更新后的嵌入式操作系统不相匹配,需要通过本步骤的修改过程,将待更新积木组件对应的脚本文件中的积木配置信息修改为与所要得到的更新后的嵌入式操作系统相匹配的配置信息,也就是说,所要得到的更新后的嵌入式操作系统需要哪个功能模块,就将该功能模块的配置信息修改为待更新功能模块对应的配置信息。
例如,以步骤S101示出的日志组件为例,假设目标积木组件中包括该日志组件,且更新后参数信息中包括待更新功能模块“LOG_SUPPORT_ASYNC”和“LOG_SUPPORT_CLOUD”的标识信息,则对日志组件的脚本文件中的积木配置信息进行修改后,得到的修改后的积木配置信息为:
Feature_config:
LOG_SUPPORT_ASYNC Y
LOG_SUPPORT_FS N
LOG_SUPPORT_CLOUD Y
上述积木配置信息中,日志组件包含的“LOG_SUPPORT_ASYNC”配置为Y,表征“LOG_SUPPORT_ASYNC”为待更新功能模块,同理,日志组件包含的“LOG_SUPPORT_CLOUD”配置为Y,表征“LOG_SUPPORT_CLOUD”为待更新功能模块。
在本步骤中,按照更新后参数信息中待更新功能模块的标识信息对待更新积木组件对应的脚本文件中的积木配置信息进行修改,就可以由修改后的积木配置信息和未更新积木组件对应的脚本文件中的积木配置信息得到更新后配置文件。
步骤d2、根据更新后配置文件,对更新后积木组件进行裁剪,得到裁剪的更新后积木组件。
具体来说,本步骤可以根据更新后配置文件,将更新后积木组件中除待更新功能模块外的其他功能模块裁掉,也即,根据更新后配置文件,将未更新积木组件和待更新积木组件中除待更新功能模块外的其他功能模块裁掉,以得到裁剪的更新后积木组件。
由于更新后配置文件是基于更新后参数信息包含的待更新功能模块的标识信息生成的,那么根据目标配置文件,便可知道如何对未更新积木组件和待更新积木组件进行裁剪。例如,根据由d1示出的修改后的积木配置文件得到的更新后配置文件,本步骤就可以将“LOG_SUPPORT_FS”功能模块从日志组件中裁掉,得到由待更新功能模块“LOG_SUPPORT_ASYNC”和待更新功能模块“LOG_SUPPORT_CLOUD”组成的裁剪的更新后日志组件。
步骤d3、根据更新后配置文件,生成更新后编译文件。
其中,更新后编译文件用于指示如何对裁剪的更新后积木组件进行编译。
在本步骤中,更新后配置文件做为更新后积木组件的输入文件,可以按需构成用于指示如何对裁剪的更新后积木组件进行编译的更新后编译文件。这里,更新后编译文件为预先安装的构建软件所需的编译文件。
由于本步骤能够根据更新后配置文件,自动生成更新后编译文件,从而开发人员不再需要手动编写编译文件,节省了开发人员的时间。
可选的,更新后编译文件可以为makefile文件或CMakeLists文件。
步骤d4、根据更新后编译文件,对裁剪的更新后积木组件进行编译,得到更新后的可执行文件。
在本步骤中,根据更新后编译文件,构建系统可以自动调用构建软件,然后再根据更新后编译文件、构建软件和编译软件,即可对裁剪的更新后积木组件进行编译,得到更新后的可执行文件。
综上,本实施例的整个过程均自动执行,使得开发人员不需要额外做任何工作(现有技术中,开发人员需要在各个软件模块内进行修改,并且经常会发生多处修改,或者由于软件模块耦合,导致配置不统一,从而需要花费开发人员大量的时间进行调试),节省了开发人员的时间,并且极大的减少了出错的可能性。
在一些场景下,在前述步骤S103对更新后积木组件进行编译后,可能还需要对更新后的可执行文件进行后处理,例如加密处理、添加包头处理、打印处理等。
可选的,本实施例可以将更新后积木后处理信息写入更新后积木组件的某个或某些积木组件对应的脚本文件中,例如,将更新后积木后处理信息写入更新后积木组件对应的脚本文件中,从而后续可以在步骤S103后,根据写入更新后积木组件对应的脚本文件中的更新后积木后处理信息,对更新后的可执行文件进行后处理,后处理后的可执行文件作为更新后的嵌入式操作系统。
需要说明的是,脚本文件包含的更新后积木后处理信息仅用于指示更新嵌入式操作系统时,需要对更新后的可执行文件做哪些后处理,但是具体怎么进行该后处理由外部命令指示。
例如,若更新后积木组件对应的脚本文件中的更新后积木后处理信息为加密处理,则说明需要对可执行文件进行加密,但是如何进行加密,加密算法是什么由外部加密命令指示。也就是说,本实施例“根据更新后积木后处理信息,对更新后的可执行文件进行后处理”的过程包括:若更新后积木后处理信息中包括加密处理,则从外部指定位置获取加密命令,并基于加密命令对更新后的可执行文件进行加密处理。
再例如,若更新后积木组件对应的脚本文件包含的更新后积木后处理信息为添加包头处理,则说明需要为可执行文件添加包头信息,但是如何进行添加包头,添加的包头信息是什么由外部包头添加命令指示。也就是说,本实施例“根据更新后积木后处理信息,对更新后的可执行文件进行后处理”的过程包括:若更新后积木后处理信息中包括添加包头处理,则从外部指定位置获取包头添加命令,并基于包头添加命令为更新后的可执行文件添加包头信息。
再例如,若更新后积木组件对应的脚本文件包含的更新后积木后处理信息为功能打印处理,则说明需要将更新嵌入式操作系统时用到的待更新功能模块的相关信息进行打印输出,但是具体如何打印由外部功能打印命令指示。也就是说,本实施例“根据更新后积木后处理信息,对更新后的可执行文件进行后处理”的过程包括:若更新后积木后处理信息中包括功能打印处理,则从外部指定位置获取功能打印命令,并基于功能打印命令对更新后的可执行文件对应的功能列表信息进行打印输出,其中,功能列表信息为待更新功能模块的相关信息,例如标识信息等。
综上,本实施例可在更新后积木组件编译后,进行各种后处理工作,使得本实施例提供的嵌入式操作系统的功能更丰富。
在上述各实施例中,详细介绍了任一积木组件对应的脚本文件中包括该积木组件的版本信息、用于描述该积木组件与其他积木组件之间的依赖关系的积木依赖信息、积木配置信息、积木后处理信息等,除此之外,本实施例提供的脚本文件还可以包括其他信息,例如,在一个实施例中,一积木组件对应的脚本文件可以包括以下内容:
第一,积木基本信息,包含积木组件的名称,积木组件独立管理的版本信息,积木组件的简单描述,积木组件的类型分类,积木组件的许可证信息等信息。
第二,积木的依赖信息,包含积木组件的依赖表,依赖表代表了各个积木组件的上下层依赖关系,可选的,积木依赖信息可以为接口依赖信息,上层积木组件会调用下层积木组件提供的接口。
第三,积木的外观信息,包含运行嵌入式操作系统的板级组件相关信息,包含CPU,芯片组,开发板组件等。
第四,积木编译信息,包含积木组件独立于项目的单独编译信息。
第五,积木配置信息,包含积木组件的相关配置信息。通过配置信息,可以自由的裁剪组件,从而可以让积木组件可大可小。
第六,积木后处理信息(可选),包含积木组件编译完成后的各种后处理工作信息。
可见,本申请使用脚本文件使得各个积木组件提供对外统一、可裁剪配置的功能组件集,以及统一风格的API调用函数。
需要说明的是,上述脚本文件仅为示例,不作为对本申请脚本文件的限定。
本申请实施例还提供了一种嵌入式操作系统的更新装置,下面对本申请实施例提供的嵌入式操作系统的更新装置进行描述,下文描述的嵌入式操作系统的更新装置与上文描述的嵌入式操作系统的更新方法可相互对应参照。
请参阅图3,示出了本申请实施例提供的嵌入式操作系统的更新装置的结构示意图,如图3所示,该嵌入式操作系统的更新装置可以包括:更新后参数信息获取模块301、重下载模块302和重编译模块303。
更新后参数信息获取模块301,用于获取待更新嵌入式操作系统对应的更新后参数信息,其中,待更新嵌入式操作系统由目标积木组件在目标环境下搭建得到,目标积木组件包含的每个积木组件均由若干功能模块组成且均对应有脚本文件,更新后参数信息中至少包括更新嵌入式操作系统所需的待更新功能模块的标识信息。
重下载模块302,用于至少根据更新后参数信息中待更新功能模块的标识信息和目标积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定待更新积木组件,并将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中。
重编译模块303,用于根据更新后积木组件对应的脚本文件中的积木配置信息,以及更新后参数信息中待更新功能模块的标识信息,对更新后积木组件进行编译,得到更新后的可执行文件,作为更新后的嵌入式操作系统,其中,更新后积木组件包括未更新积木组件和待更新积木组件。
综上所述,本实施例公开的嵌入式操作系统的更新装置的工作原理,与上述实施例公开的嵌入式操作系统的更新方法的工作原理相同,详细可参照前述实施例中的介绍,在此不再赘述。
本申请实施例还提供了一种嵌入式操作系统的更新设备。可选的,图4示出了嵌入式操作系统的更新设备的硬件结构框图,参照图4,该嵌入式操作系统的更新设备的硬件结构可以包括:至少一个处理器401,至少一个通信接口402,至少一个存储器403和至少一个通信总线404;
在本申请实施例中,处理器401、通信接口402、存储器403、通信总线404的数量为至少一个,且处理器401、通信接口402、存储器403通过通信总线404完成相互间的通信;
处理器401可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路等;
存储器403可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory)等,例如至少一个磁盘存储器;
其中,存储器403存储有程序,处理器401可调用存储器403存储的程序,所述程序用于:
获取嵌入式操作系统对应的更新后参数信息,其中,嵌入式操作系统由目标积木组件在目标环境下搭建得到,目标积木组件包含的每个积木组件均由若干功能模块组成且均对应有脚本文件,更新后参数信息中至少包括更新嵌入式操作系统所需的待更新功能模块的标识信息;
至少根据更新后参数信息中待更新功能模块的标识信息和目标积木组件对应的脚本文件中的积木依赖信息,从目标积木组件中确定待更新积木组件,并将待更新积木组件和待更新积木组件对应的脚本文件下载到目标环境中;
根据更新后积木组件对应的脚本文件中的积木配置信息,以及更新后参数信息中待更新功能模块的标识信息,对更新后积木组件进行编译,得到更新后的可执行文件,作为更新后的嵌入式操作系统,其中,更新后积木组件包括未更新积木组件和待更新积木组件。
可选的,所述程序的细化功能和扩展功能可参照上文描述。
本申请实施例还提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上述嵌入式操作系统的更新方法。
可选的,所述程序的细化功能和扩展功能可参照上文描述。
最后,还需要说明的是,在本文中,诸如和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (13)
1.一种嵌入式操作系统的更新方法,其特征在于,包括:
获取所述嵌入式操作系统对应的更新后参数信息,其中,所述嵌入式操作系统由目标积木组件在目标环境下搭建得到,所述目标积木组件包含的每个积木组件均由若干功能模块组成且均对应有脚本文件,所述更新后参数信息中至少包括更新所述嵌入式操作系统所需的待更新功能模块的标识信息;
至少根据所述更新后参数信息中待更新功能模块的标识信息和所述目标积木组件对应的脚本文件中的积木依赖信息,从所述目标积木组件中确定待更新积木组件,并将所述待更新积木组件和所述待更新积木组件对应的脚本文件下载到所述目标环境中;
根据更新后积木组件对应的脚本文件中的积木配置信息,以及所述更新后参数信息中待更新功能模块的标识信息,对所述更新后积木组件进行编译,得到更新后的可执行文件,作为更新后的嵌入式操作系统,其中,所述更新后积木组件包括未更新积木组件和所述待更新积木组件。
2.根据权利要求1所述的嵌入式操作系统的更新方法,其特征在于,所述至少根据所述更新后参数信息中待更新功能模块的标识信息和所述目标积木组件对应的脚本文件中的积木依赖信息,从所述目标积木组件中确定待更新积木组件,包括:
根据所述更新后参数信息中待更新功能模块的标识信息和所述目标积木组件对应的脚本文件中的积木依赖信息,从所述目标积木组件中确定待更新积木组件;
或,
根据所述更新后参数信息中待更新功能模块的标识信息、所述更新后参数信息中所述目标积木组件的待更新版本信息,以及所述目标积木组件对应的脚本文件中的积木依赖信息,从所述目标积木组件中确定待更新积木组件。
3.根据权利要求2所述的嵌入式操作系统的更新方法,其特征在于,所述根据所述更新后参数信息中待更新功能模块的标识信息、所述更新后参数信息中所述目标积木组件的待更新版本信息,以及所述目标积木组件对应的脚本文件中的积木依赖信息,从所述目标积木组件中确定待更新积木组件,包括:
根据所述更新后参数信息中待更新功能模块的标识信息和所述更新后参数信息中所述目标积木组件的待更新版本信息,从所述目标积木组件中确定第一待更新积木组件;
根据所述第一待更新积木组件对应的脚本文件中的积木依赖信息,从所述目标积木组件中确定与所述第一待更新积木组件存在积木依赖关系的积木组件,作为第二待更新积木组件;
由所述第一待更新积木组件和所述第二待更新积木组件得到所述待更新积木组件。
4.根据权利要求3所述的嵌入式操作系统的更新方法,其特征在于,所述目标积木组件对应的脚本文件中的积木依赖信息为接口依赖信息。
5.根据权利要求4所述的嵌入式操作系统的更新方法,其特征在于,所述待更新积木组件对应的脚本文件中还包括所述待更新积木组件的版本信息;
所述将所述待更新积木组件和所述待更新积木组件对应的脚本文件下载到所述目标环境中,包括:
基于预设的仓库信息确定所述待更新积木组件所在的软件子仓库,作为目标软件子仓库,其中,所述仓库信息中包括积木组件的标识信息与软件子仓库的标识信息的对应关系;
若所述更新后参数信息中不包括所述待更新版本信息,则从所述目标软件子仓库中将最新版本下的待更新积木组件和所述最新版本下的待更新积木组件对应的脚本文件下载到所述目标环境中;
若所述更新后参数信息中包括所述待更新版本信息,则从所述目标软件子仓库中将所述待更新版本信息下的待更新积木组件和所述待更新版本信息下的待更新积木组件对应的脚本文件下载到所述目标环境中。
6.根据权利要求1所述的嵌入式操作系统的更新方法,其特征在于,所述根据更新后积木组件对应的脚本文件中的积木配置信息,以及所述更新后参数信息中待更新功能模块的标识信息,对所述更新后积木组件进行编译,得到更新后的可执行文件,包括:
根据所述更新后积木组件对应的脚本文件中的积木配置信息,以及所述更新后参数信息中待更新功能模块的标识信息,得到更新后配置文件;
根据所述更新后配置文件,对所述更新后积木组件进行裁剪,得到裁剪的更新后积木组件;
根据所述更新后配置文件,生成更新后编译文件;
根据所述更新后编译文件,对所述裁剪的更新后积木组件进行编译,得到所述更新后的可执行文件。
7.根据权利要求6所述的嵌入式操作系统的更新方法,其特征在于,所述根据所述更新后积木组件对应的脚本文件中的积木配置信息,以及所述更新后参数信息中待更新功能模块的标识信息,得到更新后配置文件,包括:
按照所述更新后参数信息中待更新功能模块的标识信息对所述待更新积木组件对应的脚本文件中的积木配置信息进行修改,由修改后的积木配置信息和所述未更新积木组件对应的脚本文件中的积木配置信息得到所述更新后配置文件。
8.根据权利要求6所述的嵌入式操作系统的更新方法,其特征在于,所述根据所述更新后配置文件,对所述更新后积木组件进行裁剪,得到裁剪的更新后积木组件,包括:
根据所述更新后配置文件,将所述更新后积木组件中除所述待更新功能模块外的其他功能模块裁掉,以得到所述裁剪的更新后积木组件。
9.根据权利要求1所述的嵌入式操作系统的更新方法,其特征在于,所述更新后积木组件对应的脚本文件中还包括更新后积木后处理信息;
在所述根据更新后积木组件对应的脚本文件中的积木配置信息,以及所述更新后参数信息中待更新功能模块的标识信息,对所述更新后积木组件进行编译,得到更新后的可执行文件之后,还包括:
根据所述更新后积木后处理信息,对所述更新后的可执行文件进行后处理,后处理后的可执行文件作为所述更新后的嵌入式操作系统。
10.根据权利要求9所述的嵌入式操作系统的更新方法,其特征在于,所述根据所述更新后积木后处理信息,对所述更新后的可执行文件进行后处理,包括:
若所述更新后积木后处理信息中包括加密处理,则从外部指定位置获取加密命令,并基于所述加密命令对所述更新后的可执行文件进行加密处理;
和/或,
若所述更新后积木后处理信息中包括添加包头处理,则从所述外部指定位置获取包头添加命令,并基于所述包头添加命令为所述更新后的可执行文件添加包头信息;
和/或,
若所述更新后积木后处理信息中包括功能打印处理,则从所述外部指定位置获取功能打印命令,并基于所述功能打印命令对所述更新后的可执行文件对应的功能列表信息进行打印输出。
11.一种嵌入式操作系统的更新装置,其特征在于,包括:更新后参数信息获取模块、重下载模块和重编译模块;
所述更新后参数信息获取模块,用于获取所述待更新嵌入式操作系统对应的更新后参数信息,其中,所述待更新嵌入式操作系统由目标积木组件在目标环境下搭建得到,所述目标积木组件包含的每个积木组件均由若干功能模块组成且均对应有脚本文件,所述更新后参数信息中至少包括更新所述嵌入式操作系统所需的待更新功能模块的标识信息;
所述重下载模块,用于至少根据所述更新后参数信息中待更新功能模块的标识信息和所述目标积木组件对应的脚本文件中的积木依赖信息,从所述目标积木组件中确定待更新积木组件,并将所述待更新积木组件和所述待更新积木组件对应的脚本文件下载到所述目标环境中;
所述重编译模块,用于根据更新后积木组件对应的脚本文件中的积木配置信息,以及所述更新后参数信息中待更新功能模块的标识信息,对所述更新后积木组件进行编译,得到更新后的可执行文件,作为更新后的嵌入式操作系统,其中,所述更新后积木组件包括未更新积木组件和所述待更新积木组件。
12.一种嵌入式操作系统的更新设备,其特征在于,包括存储器和处理器;
所述存储器,用于存储程序;
所述处理器,用于执行所述程序,实现如权利要求1~10任一项所述的嵌入式操作系统的更新方法的各个步骤。
13.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1~10任一项所述的嵌入式操作系统的更新方法的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210411608.8A CN114816475A (zh) | 2022-04-19 | 2022-04-19 | 一种嵌入式操作系统的更新方法、装置、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210411608.8A CN114816475A (zh) | 2022-04-19 | 2022-04-19 | 一种嵌入式操作系统的更新方法、装置、设备和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114816475A true CN114816475A (zh) | 2022-07-29 |
Family
ID=82505163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210411608.8A Pending CN114816475A (zh) | 2022-04-19 | 2022-04-19 | 一种嵌入式操作系统的更新方法、装置、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114816475A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115686620A (zh) * | 2022-12-12 | 2023-02-03 | 深圳市欧瑞博科技股份有限公司 | 智能家居系统集成管理方法、电子设备及计算机存储介质 |
-
2022
- 2022-04-19 CN CN202210411608.8A patent/CN114816475A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115686620A (zh) * | 2022-12-12 | 2023-02-03 | 深圳市欧瑞博科技股份有限公司 | 智能家居系统集成管理方法、电子设备及计算机存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106605212B (zh) | 在动态链接的运行时环境中的模块化共同版本管理 | |
US20190227794A1 (en) | Systems and methods for real time version control for integrating updated web-based components with a native application | |
US20090064196A1 (en) | Model based device driver code generation | |
US8589522B2 (en) | Incrementally updatable system software infrastructure for sensor networks | |
EP1872215B1 (en) | Implementing data-compatibility-based version scheme | |
CN105657191B (zh) | 一种基于Android系统的应用增量升级方法及系统 | |
US10296298B1 (en) | Systems and methods for cross platform information exchange mechanism for integrating web-based components with a native application | |
US10296309B1 (en) | Systems and methods for automatic API generation for bi-directional communication between native and web-based components of a mobile application | |
CN111897570A (zh) | 一种基于Maven插件的多依赖项文件提取方法及装置 | |
US20160246582A1 (en) | Generic Semantic Configuration Service | |
CN111399840B (zh) | 一种模块开发方法及装置 | |
CN109669692B (zh) | 源码共享方法、服务器、计算机可读存储介质及系统 | |
EP3866443A1 (en) | Opc ua server, system operating using opc ua, and method of executing opc ua system | |
CN113312046A (zh) | 子应用页面处理方法、装置和计算机设备 | |
CN115291946A (zh) | 鸿蒙系统移植方法、装置、电子设备及可读介质 | |
Polakovic et al. | Experience with safe dynamic reconfigurations in component-based embedded systems | |
CN114816475A (zh) | 一种嵌入式操作系统的更新方法、装置、设备和介质 | |
CN111683005B (zh) | 一种物联网智能网关设备及其构建方法 | |
CN111552480B (zh) | 跨平台编译方法、装置、设备及可读存储介质 | |
CN113360156B (zh) | 一种ios编译方法及相关设备 | |
CN114816418A (zh) | 一种嵌入式操作系统的搭建方法、装置、设备和介质 | |
CN114721647B (zh) | 一种基于无代码应用开发的面向对象编程方法 | |
CN110806891A (zh) | 嵌入式设备软件版本的生成方法及装置 | |
CN115794214A (zh) | 应用模块元数据管理方法、设备、存储介质及装置 | |
CN113961232A (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 |