CN107943504B - 一种嵌入式***中软件模块的动态升级方法 - Google Patents

一种嵌入式***中软件模块的动态升级方法 Download PDF

Info

Publication number
CN107943504B
CN107943504B CN201711293651.4A CN201711293651A CN107943504B CN 107943504 B CN107943504 B CN 107943504B CN 201711293651 A CN201711293651 A CN 201711293651A CN 107943504 B CN107943504 B CN 107943504B
Authority
CN
China
Prior art keywords
module
upgrading
service
dynamic
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
CN201711293651.4A
Other languages
English (en)
Other versions
CN107943504A (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.)
Xian Aeronautics Computing Technique Research Institute of AVIC
Original Assignee
Xian Aeronautics Computing Technique Research Institute of AVIC
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 Xian Aeronautics Computing Technique Research Institute of AVIC filed Critical Xian Aeronautics Computing Technique Research Institute of AVIC
Priority to CN201711293651.4A priority Critical patent/CN107943504B/zh
Publication of CN107943504A publication Critical patent/CN107943504A/zh
Application granted granted Critical
Publication of CN107943504B publication Critical patent/CN107943504B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/62Uninstallation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44594Unloading

Landscapes

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

Abstract

在节点众多的嵌入式***中,存在着安装\拆卸困难,要求节点具有可重新配置和自适应性,在需要的时候能够进行自主升级。因此,本发明提出一种在运行时嵌入式***条件下,支持软件模块进行动态升级的方法。软件动态升级技术能够在不影响现有***正常运行的情况下,将新模块加载到***中,或对旧模块进行动态替换,提供***运行时的更新服务,实现软件模块的平滑升级,并能保证***长时间可靠运转。该技术解决了如何在目标***中将软件模块链入到目标***中的问题,以及实现了模块依赖管理技术。在软件模块的加/卸载过程中,保证了嵌入式***的安全可靠运行。

Description

一种嵌入式***中软件模块的动态升级方法
技术领域
本发明属于嵌入式开发及维护领域,具体涉及一种软件的动态升级方法。
背景技术
在具有复杂应用的嵌入是***中,当某些软件模块开发完成后,需要该模块在嵌入式***中运行,此时就需要用到加载技术。当前常用的加载技术有两种:一种是静态加载技术,一种是动态加载技术。
其中,静态加载方式使用成熟的工具链,该工具链(比如:GNU)提供可靠完整的编译和链接工具,开发人员解决编译、链接中存在的问题,就可生成可重定位格式的目标文件。当需要加载时,主机端工具需要计算可重定位目标文件各段大小,向目标机端发送加载地址请求,根据回复的加载地址,对可重定位文件进行二次链接,进行地址重定位,得到最终目标文件。最后,将目标文件写入到目标机内存中,并运行程序。
动态加载方式可以用于在软件开发过程中,以增量方式向目标机动态下载目标模块进行调试,从而加快开发的速度。目标机端配合主机端动作,将目标模块进行加载和运行。主机端的编译器生成的目标文件,这些目标文件没有实际的运行地址。先将目标文件加载到目标机机端的指定区域,当需要模块运行时,首先,在目标机端,要完成对目标文件的二次链接,才能将目标文件加载到内存中运行,但不记录模块间存在的相互依赖关系。
这两种方式应用于软件动态升级中都存着缺陷,不能满足嵌入式***中对于软件进行动态升级的要求。
采用静态加载方式将软件模块加载到目标机端后,代码段和数据段的位置都不能改变。从设计上不满足操作***动态升级的要求,模块的升级无法脱离开发环境的支持,在软件维护升级阶段意义不大。
传统的动态加载方式,在需要卸载旧版本的软件模块,回收其所占用资源时,各模块间可能存在相互依赖关系,应当确保***中没有其他模块依赖于待卸载模块。由于该方法没有进行模块依赖关系检查功能,在卸载的过程中,如果软件模块间存有依赖关系,则极有可能会出现软件***出现紊乱,导致不可预料的后果,所以该方法常用于软件调试阶段,而不用于软件升级以及维护阶段。
发明内容
模块化的软件架构是实现操作***动态升级的前提,所设计的***应具有高度的模块化特征,每个模块完成特定的任务。模块的动态升级一般适用于应用程序或者组件等独立性较强、与操作***核心功能无扇入的模块。内核不可裁剪部分组件只有在底层硬件或资源管理能力发生改变时才需要修改,因此内核不可裁剪部分组件不需要在线升级能力。
动态升级是指通过一系列预定的动作将新模块加载到***中,并适时对旧模块进行动态替换,最终实现***平滑升级的过程。动态升级可以在***运行过程中把下载到指定空间的独立模块链接到***中,实现不停机的更新服务。其中,动态链接是动态升级的关键技术。目标机端通过动态链接技术,能够在实现目标模块在指定地址空间中的再定位。
动态升级工具软件架构分为主机端和目标机端两部分,如图1所示。主机端升级工具由升级功能插件和升级图形插件两部分组成。升级图形插件和升级功能插件都是以插件的形式集成到Eclipse平台上,作为开发环境的一部分功能。包括如下几部分:
1.升级图形插件面向用户,提供图形化的界面操作。
2.升级功能插件用于控制宿主机端的整个升级流程,是主机端升级工具的逻辑控制单元。
3.目标机管理负责发送主机端的信息到目标机端,信息包括主机端的命令和目标映像。
目标机端通讯服务提供数据的收取和发送服务,当前可以提供网络或者串口的方式实现。通讯服务用于接受主机端发送过来的数据信息,包括,命令信息、数据信息等;同时,通讯服务将目标机端的信息反馈给主机端,包括应答信息、查询信息、状态信息等。
目标机端分为管理服务和升级服务两部分。各部分功能如下:
1.管理服务创建数据结构并保存模块信息;通过符号引用关系动态分析模块之间的依赖关系,维护模块依赖关系表,并将被加载模块信息及其依赖关系上报给升级服务;与操作***层交互,实现管理服务功能。
2.升级服务是整个动态升级模块的核心部分,与管理服务交互,执行主机端的各种命令,包括查询、加载模块和卸载模块等,主要功能包括如下几个方面:
1)调用管理服务的功能,提取模块间依赖关系,为后续的模块的加/卸载功能提供支持。
2)处理查询命令,返回目标机端的查询信息,包括已加载模块信息和模块间依赖关系等。
3)接收文件并将文件加载到指定的区域,在目标机端进行二次链接,并将目标文件加载到内存中运行。
在节点众多的嵌入式***中,比如传感器网络等,存在着安装拆卸困难等情况,所以,当软件模块发生改变,动态升级技术能够实现软件模块的平滑升级,满足节点的可重新配置和自适应性要求,并保证***的正常运行。
技术方案:
一种嵌入式***中软件模块的动态升级方法,包括以下几个步骤;
步骤1:开发环境基于Eclipse平台实现,主机端的动态升级功能以插件的形式集成在开发环境平台上,开发环境发起升级动作,通过目标机管理将数据发送到目标机端。
步骤2:通讯服务负责接受主机端的数据,将升级请求转发给升级服务。
步骤3:升级服务响应升级请求,查询模块表,判断该模块是否存在,模块存在,到步骤4,模块不存在到步骤8。
步骤4:***中已存在该模块,根据模块之间依赖关系表,调用管理服务功能进行模块停止操作,如果停止成功,进行模块卸载,修改依赖关系表,到步骤7;如果停止失败,到步骤8。
步骤5:主机端收到成功命令后,发送目标文件,通讯服务接收文件,由升级服务存储到存储区域。
步骤6:升级服务依据管理服务提供的模块依赖信息,进行目标文件的动态连接。在动态连接成功过程中,完成地址重定位,调用管理服务的模块加载功能,当该模块加载完成后,在管理服务中启动已升级的模块,到步骤7。
步骤7:进入通讯服务,发送成功反馈。
步骤8:进入通讯服务,发送错误反馈。
所述主机端升级工具由升级功能插件和升级图形插件两部分组成。升级图形插件面向用户,提供图形化的界面操作;升级功能插件用于控制宿主机端的整个升级流程,是主机端升级工具的逻辑控制单元。这两部分都是以插件的形式集成到Eclipse平台上,作为开发环境的一部分功能。
目标机端分为管理服务和升级服务两部分。管理服务创建数据结构并保存模块信息;通过符号引用关系动态分析模块之间的依赖关系,维护模块依赖关系表,并将被加载模块信息及其依赖关系上报给升级服务,与操作***层交互,实现管理服务功能。升级服务实现与管理服务交互,执行主机端的各种命令,包括查询、加载模块和卸载模块等命令。
附图说明
图1为本发明动态升级工具软件架构图;
图2为本发明动态升级结构图;
图3为本发明动态升级流程图。
图4为模块依赖示意图;
图5为本发明模块依赖关系提取过程图;
具体实施方式
动态升级工具按照模块划分为主机端部分和目标机端部分。主机端面向用户,提供信息查询、模块操作、模块设置等操作。目标机端负责对模块进行动态升级和管理。主机端将具体操作转化为命令,发送给目标机端;目标机端在加载过程中产生信息反馈,形成回复信息,使主机端知悉当前加载状态。
主机端动态升级管理分为信息查询、模块设置、模块加载和模块卸载四部分功能。各部分功能如下:
1.信息查询:提供对模块信息的查询功能,帮助用户实时了解已加载和待加载模块的信息。
2.模块设置:提供对模块的设置功能。
3.模块加载:将目标映像文件发送到目标机端。这些映像文件可能没有指定实际的运行地址。
4.模块卸载:将已加载文件从目标机端卸载。
目标机端是动态升级的主要部分,它识别加载命令,读取存储设备中的指定模块,进行升级。动态升级结构设计如图2所示。
升级服务提供实现动态加载的API,通过该API可以启动目标机端动态加载过程。通过开发环境的操作或者目标机端的程序调用,最终都会使用到升级服务API。升级服务从存储设备中读取模块文件,经过动态链接,完成地址重定位后,将模块加载到内存中,供***正常调用。管理服务为加载服务提供服务支持,升级服务执行过程中调用到管理服务提供的功能接口。
动态升级的过程中,通讯服务接受主机端的数据,将升级请求转发给升级服务。升级服务响应升级请求,判断该模块是否存在,如果存在,则需调用管理服务功能停止模块,如果停止失败,向主机端回复错误数据包;如果停止成功,进行模块卸载,则回复成功状态。主机端收到成功命令后,发送目标文件,通讯服务接收文件,由升级服务存储到存储区域。升级服务依据管理服务提供的模块依赖信息,进行目标文件的动态连接。动态连接成功后,调用管理服务的模块加载功能,当该模块加载完成后,在管理服务中启动已升级的模块。动态升级具体流程如图3所示。
其中,通讯服务负责的来自主机端数据包的接收,并转发给对应的处理服务,同时,它也负责目标机端信息的反馈给主机端。升级服务响应升级请求,是整个动态升级的主逻辑单元。它存储接受到的文件,根据管理服务提供的依赖关系完成动态连接过程,调用管理服务提供的功能,完成整个动态链接过程。管理服务与操作***交互,实现模块的管理功能,包括模块信息管理和模块操作管理。其中,模块信息管理包括模块自身信息以及模块依赖关系信息;模块操作管理包括模块的停止、卸载、加载和启动等功能。
升级服务中实现了动态加载的过程,动态加载过程方案中各部分功能的详细分析如下:
1.目标文件解析:目标文件必须是一种标准的可执行文件,采用分层管理模型,分析可执行文件是内部信息,将解析结果存放在数据存储结构中。
2.符号分析与管理:用于动态升级的模块是被单独编译成目标文件的,因此在该模块的目标文件存对其他模块中的函数和全局变量的调用。模块符号解析时,遇到符号就填入本模块中相应的符号表中,升级服务利用这些已加载到内存中的符号的内存地址来修正目标模块中的符号引用。
3.重定位:升级服务所要处理的重定位信息,是以重定位表的形式存在的。重定位项具有两个功能:当代码段被重定位到另一个段基址时,标注修改信息;标注未定义符号,明确改写符号值的位置。分析目标文件,根据重定位表中的信息修正每个重定位项后,更新地址敏感指令。如果内存映像中仍有外部引用的地址未知,则升级服务将进行报错处理,此时目标模块不能被加载。
4.模块载入:经过上述处理后的模块代码,是可以载入的目标代码。升级服务向***申请各段加载地址空间,完成程序的内存载入。
5.***运行:该模块已经正常的融入到整个***中,***根据运行时机,调用更新后的模块功能。
软件***中包含各类可加载的软件模块构成,可加载模块的代码作为编译单元被独立编译,***中的每个模块都应具有格式的一致性。在升级过程中,模块直到被载入前都保持独立,一个模块可能会被多个进程使用。当模块需要被调用时,通过动态升级的方式把模块链接入***,等执行到模块部分时,进程就会进入到该模块进行功能执行,所以就存在多个进程去调用一个模块的情况。模块的输入\输出关系对应着模块之间的引用关系,也就是依赖关系。由于模块具有输入和输出的特性,那么就存在它依赖于某些模块,同时某些模块也依赖于它,如图4所示,因此提到依赖关系时,两种特性都需要关注。
依据图4中各个模块之间的依赖情况,可以提取出这些模块之间的依赖关系如表1所示。表中记录了一个模块依赖于哪些模块,同时,哪些模块又依赖于它。
表1依赖关系表
模块名 依赖于(数目) 拥有的依赖
A B,C(2) 无(0)
B C,D(2) A(1)
C 无(0) A,B(2)
D 无(0) B(1)
E 无(0) 无(0)
可以看到,如果要卸载模块E,对***并没有影响,当然这种没有输入和输入的模块,可能在***中并不存在。如果卸载模块A,则对***并没有太大的影响,只需要修改依赖关系表即可,修改后的模块依赖表如表2所示。
表2卸载模块A后的依赖关系表
模块名 依赖于(数目) 拥有的依赖
B C,D(2) 无(0)
C 无(0) B(1)
D 无(0) B(1)
E 无(0) 无(0)
当模块需要卸载的时候,需要保证依赖于它的模块不存在,如果卸载模块B,查询到模块B,还拥有来自于A的依赖,这个时候,就不能随意的卸载模块B了,必须保证依赖于它的模块A暂停工作,才能卸载模块B,否则,直接卸载模块B,会导致***发生不可预知的错误。
要保证***的安全运行,在动态升级过程中必须考虑到模块之间的依赖关系,尤其在模块卸载时,一定要考察依赖于该模块的其他模块运行状态。在动态升级的管理服务中实现了对模块依赖关系的管理,对模块间依赖关系进行提取,把提取到的关系记录到模块信息中,建立该模块的依赖关系映射,包括该模块依赖于哪些模块,和哪些模块依赖于该模块。
在动态升级的符号解析阶段,自动提取模块依赖信息。模块间依赖关系产生的原因是某模块对另一个模块中定义的符号进行外部引用。在动态加载模块的过程中,利用***符号表中的符号,对这些外部符号引用进行重定位。由于在***符号表中由不同模块定义的符号各自具有与本模块对应的标记,所以对于符号解析中使用的每个符号,通过其模块标记就可以追溯到定义该符号的模块,此模块即为新加载模块所依赖的模块,从而可提取每个新加载模块对其他模块的依赖关系信息。
模块信息提取过程,如图5所示。建立模块表用于管理模块信息,依赖关系的提取是在动态加载过程中实现的,对待升级模块M_E进行符号分析后,发现未定义符号S_X,在符号表中进行查找S_X的信息,找到符号S_X的定义,完成符号地址的重定位,同时,在S_X符号项中记录了它属于M_K模块,这样就建立了待加载模块M_E与M_K之间的依赖关系,在模块M_E中记录对模块M_K的依赖,而在M_K中也同样记录存在来自M_E的依赖。
当需要卸载模块M_K时,需要查询有没有对M_K的依赖,如果有,不能直接卸载。如果没有,直接卸载该模块,并且通知所有M_K所依赖的模块,让这些模块在自己的依赖链表中删除M模块。
模块及它们之间的依赖关系可以用一个有向图来描述,每个模块作为图的一个结点,各个结点都拥有出度(依赖于哪些模块)和入度(哪些模块依赖于它),这样就可以把对模块依赖关系的处理当作对图来处理,利用数据结构中对图的处理方法进行算法设计。设计两个链表,分别用来记录每个模块对该模块的依赖信息,和该模块对其他模块的依赖信息。当软件模块进行加\卸载的时候,就变成了对链表的添加和删除操作。

Claims (4)

1.一种嵌入式***中软件模块的动态升级方法,其特征在于:包括以下几个步骤;
步骤一:开发环境基于Eclipse平台实现,主机端的动态升级功能以插件的形式集成在开发环境平台上,开发环境发起升级动作,通过目标机管理将数据发送到目标机端;
步骤二:通讯服务负责接受主机端的数据,将升级请求转发给升级服务;
步骤三:升级服务响应升级请求,查询模块表,判断该模块是否存在,模块存在,到步骤四,模块不存在到步骤八;
步骤四:***中已存在该模块,根据模块之间依赖关系表,调用管理服务功能进行模块停止操作,如果停止成功,进行模块卸载,修改依赖关系表,到步骤七;如果停止失败,到步骤八;
步骤五:主机端收到成功命令后,发送目标文件,通讯服务接收文件,由升级服务存储到存储区域;
步骤六:升级服务依据管理服务提供的模块依赖信息,进行目标文件的动态连接;在动态连接成功过程中,完成地址重定位,调用管理服务的模块加载功能,当该模块加载完成后,在管理服务中启动已升级的模块,到步骤七;
步骤七:进入通讯服务,发送成功反馈;
步骤八:进入通讯服务,发送错误反馈。
2.根据权利要求1所述的一种嵌入式***中软件模块的动态升级方法,其特征在于:所述主机端升级工具由升级功能插件和升级图形插件两部分组成;升级图形插件面向用户,提供图形化的界面操作;升级功能插件用于控制宿主机端的整个升级流程。
3.根据权利要求1所述的一种嵌入式***中软件模块的动态升级方法,其特征在于:所述目标机端分为管理服务和升级服务。
4.根据权利要求3所述的一种嵌入式***中软件模块的动态升级方法,其特征在于:所述管理服务创建数据结构并保存模块信息;通过符号引用关系动态分析模块之间的依赖关系,维护模块依赖关系表,并将被加载模块信息及其依赖关系上报给升级服务,与操作***层交互,实现管理服务功能;所述升级服务实现与管理服务交互,执行主机端的各种命令,包括查询、加载模块和卸载模块命令。
CN201711293651.4A 2017-12-07 2017-12-07 一种嵌入式***中软件模块的动态升级方法 Active CN107943504B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711293651.4A CN107943504B (zh) 2017-12-07 2017-12-07 一种嵌入式***中软件模块的动态升级方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711293651.4A CN107943504B (zh) 2017-12-07 2017-12-07 一种嵌入式***中软件模块的动态升级方法

Publications (2)

Publication Number Publication Date
CN107943504A CN107943504A (zh) 2018-04-20
CN107943504B true CN107943504B (zh) 2021-03-26

Family

ID=61945289

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711293651.4A Active CN107943504B (zh) 2017-12-07 2017-12-07 一种嵌入式***中软件模块的动态升级方法

Country Status (1)

Country Link
CN (1) CN107943504B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112241271A (zh) * 2019-07-17 2021-01-19 西安旌旗电子股份有限公司 一种嵌入式软件的部分升级方法
CN111274271A (zh) * 2020-01-13 2020-06-12 北京奇艺世纪科技有限公司 一种信息管理装置、方法、电子设备及存储介质
CN112667285B (zh) * 2021-01-25 2023-11-03 Vidaa(荷兰)国际控股有限公司 一种应用升级方法、显示设备及服务器
CN114201149B (zh) * 2022-02-18 2022-05-31 北京阿丘科技有限公司 运行流程生成方法、装置、***与计算机可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7461374B1 (en) * 2003-12-01 2008-12-02 Cisco Technology, Inc. Dynamic installation and activation of software packages in a distributed networking device
CN101425018A (zh) * 2008-12-05 2009-05-06 深圳创维数字技术股份有限公司 基于分段式的嵌入式固件升级方法及装置
CN102693145A (zh) * 2012-05-31 2012-09-26 红石阳光(北京)科技有限公司 用于嵌入式***的差分升级方法
CN102945179A (zh) * 2012-11-28 2013-02-27 青岛海信宽带多媒体技术有限公司 基于mtd分区的软件升级方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7461374B1 (en) * 2003-12-01 2008-12-02 Cisco Technology, Inc. Dynamic installation and activation of software packages in a distributed networking device
CN101425018A (zh) * 2008-12-05 2009-05-06 深圳创维数字技术股份有限公司 基于分段式的嵌入式固件升级方法及装置
CN102693145A (zh) * 2012-05-31 2012-09-26 红石阳光(北京)科技有限公司 用于嵌入式***的差分升级方法
CN102945179A (zh) * 2012-11-28 2013-02-27 青岛海信宽带多媒体技术有限公司 基于mtd分区的软件升级方法和装置

Also Published As

Publication number Publication date
CN107943504A (zh) 2018-04-20

Similar Documents

Publication Publication Date Title
CN107943504B (zh) 一种嵌入式***中软件模块的动态升级方法
EP2116913B1 (en) Mobile function block for a plc based distributed control system
CN107577609B (zh) 一种基于主机端动态链接的嵌入式***动态模块调试***
JP2008282363A (ja) プログラマブルコントローラ、プログラム作成支援装置、コンピュータプログラム及びplcシステム
US20110126179A1 (en) Method and System for Dynamic Patching Software Using Source Code
CN103838584A (zh) 一种移动终端应用的开发方法及装置
CN116737130B (zh) 面向模态中间表示的编译方法、***、设备和存储介质
CN110990048A (zh) 一种监控Unity项目资源缺失的方法及***
CN105045642A (zh) 一种自定义类的加载方法及装置
CN102981942B (zh) 一种任务处理方法和***
US9952953B2 (en) Non-monotonic eventual convergence for desired state configuration
CN102968336B (zh) 处理任务的方法和***
CN110647349B (zh) 一种实现iOS APP持续交付的方法
CN106502763A (zh) 一种软件更新方法及装置
CN107544813B (zh) 一种静态库配置的切换方法和***
CN110806891B (zh) 嵌入式设备软件版本的生成方法及装置
CN110334031A (zh) 内存分配代码检测方法、装置、计算机设备及存储介质
CN114610516B (zh) 应用程序的修复方法、装置、计算机设备以及存储介质
CN113918452B (zh) 一种多国产化平台下的工业软件兼容性测试方法
CN113031977A (zh) 一种软件批量化安装方法以及相关装置
US20110283271A1 (en) Techniques for reunion of veneers
CN113568834A (zh) Sdk代码的兼容性检测方法、装置、计算机设备和介质
CN111273912B (zh) 一种分配独立环境的方法、智能终端及存储介质
CN114840260B (zh) 复合基板管理控制器***及其产生方法
US7739654B2 (en) Model curation for integrated circuit designs

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