CN115840569A - 一种组态增量下装方法、装置、设备及存储介质 - Google Patents
一种组态增量下装方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115840569A CN115840569A CN202211662854.7A CN202211662854A CN115840569A CN 115840569 A CN115840569 A CN 115840569A CN 202211662854 A CN202211662854 A CN 202211662854A CN 115840569 A CN115840569 A CN 115840569A
- Authority
- CN
- China
- Prior art keywords
- file
- target
- split
- files
- preset
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本申请公开了一种组态增量下装方法、装置、设备及存储介质,涉及计算机技术领域,包括:利用预设编译器对源代码进行编译以生成相应的目标代码文件,并在对所述目标代码文件进行链接的过程中根据预设拆分规则对所述目标代码文件进行拆分得到若干拆分文件;从若干所述拆分文件中筛选出目标拆分文件并下装至预设控制器以更新所述预设控制器中与所述目标拆分文件对应的历史拆分文件;通过所述预设控制器对自身存储的若干待重组文件进行相应的重组操作以得到可执行的目标文件。本申请通过对目标代码文件进行拆分、更新和重组以得到可执行的目标文件,在不影响其他逻辑内容的情况下实现了增量编译及增量下装,避免利用传统方式造成大量人工和时间成本。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种组态增量下装方法、装置、设备及存储介质。
背景技术
工业控制软件一般包括组态软件和控制器,其中组态软件需要将硬件配置信息,用户组态的逻辑信息及其他配置信息进行编译后下装到控制器中,同时为了不扰动现场逻辑的执行,增量编译和增量下装功能必不可少。要实现以上功能,其核心部分就是用户组态逻辑的编译,实现一款可靠的组态逻辑编译器,至关重要。
目前大部分的工业控制软件需要实现自己对组态逻辑进行编译,实现方法有自己研制编译器也有通过开源编译器如GCC等实现编译。但由于编译器的架构限制,这些方案存在以下问题:第一是扩展困难,由于架构的限制,这些工业控制器软件很难集成一种新的语言或者一种新的指令架构,需要花费大量的人力。第二传统方案未真正做到增量编译及增量下装,逻辑修改后,因为逻辑间的依赖需要下装大量的文件,耗费较长的时间。
发明内容
有鉴于此,本发明的目的在于提供一种组态增量下装方法、装置、设备及存储介质,能够在不影响其他逻辑内容的情况下实现了增量编译及增量下装,避免利用传统方式造成大量人工和时间成本。其具体方案如下:
第一方面,本申请公开了一种组态增量下装方法,包括:
利用预设编译器对源代码进行编译以生成相应的目标代码文件,并在对所述目标代码文件进行链接的过程中根据预设拆分规则对所述目标代码文件进行拆分得到若干拆分文件;
从若干所述拆分文件中筛选出目标拆分文件并下装至预设控制器以更新所述预设控制器中与所述目标拆分文件对应的历史拆分文件;
通过所述预设控制器对自身存储的若干待重组文件进行相应的重组操作以得到可执行的目标文件;所述若干待重组文件包括所述目标拆分文件和未更新的所述历史拆分文件。
可选的,所述利用预设编译器对源代码进行编译以生成相应的目标代码文件,包括:
利用预设编译器对源代码进行分析操作以生成相应的中间代码,并对所述中间代码进行优化以编译生成相应的目标代码文件。
可选的,所述对所述目标代码文件进行链接的过程中根据预设拆分规则对所述目标代码文件进行拆分得到若干拆分文件,包括:
对所述目标代码文件进行链接得到相应的二进制文件并建立相应的全局偏移表;
根据预设拆分规则对所述二进制文件中目标段的每一程序组织单元进行拆分得到若干拆分文件和结构文件。
可选的,所述从若干所述拆分文件中筛选出目标拆分文件并下装至预设控制器以更新所述预设控制器中与所述目标拆分文件对应的历史拆分文件,包括:
识别若干所述程序组织单元中更新的目标程序组织单元以从若干所述拆分文件中筛选出与所述目标程序组织单元对应的目标拆分文件;
将所述目标拆分文件下装至预设控制器以更新所述预设控制器中与所述目标拆分文件对应的历史拆分文件。
可选的,所述通过所述预设控制器对自身存储的若干待重组文件进行相应的重组操作以得到可执行的目标文件,包括:
通过所述预设控制器根据所述结构文件对自身存储的若干待重组文件进行相应的重组操作以得到可执行的目标文件,并根据所述目标文件的运行地址对所述全局偏移表进行重定位操作。
可选的,所述从若干所述拆分文件中筛选出目标拆分文件并下装至预设控制器之后,还包括:
对接收到的所述目标拆分文件进行校验操作,并将校验操作成功的所述目标拆分文件进行存储以更新所述预设控制器中与所述目标拆分文件对应的历史拆分文件。
可选的,所述对接收到的所述目标拆分文件进行校验操作之后,还包括:
若所述目标拆分文件的校验操作失败,则重新从上位机获取校验操作失败的所述目标拆分文件。
第二方面,本申请公开了一种组态增量下装装置,包括:
代码编译模块,用于利用预设编译器对源代码进行编译以生成相应的目标代码文件;
文件链接模块,用于在对所述目标代码文件进行链接的过程中根据预设拆分规则对所述目标代码文件进行拆分得到若干拆分文件;
文件下装模块,用于从若干所述拆分文件中筛选出目标拆分文件并下装至预设控制器以更新所述预设控制器中与所述目标拆分文件对应的历史拆分文件;
文件重组模块,用于通过所述预设控制器对自身存储的若干待重组文件进行相应的重组操作以得到可执行的目标文件;所述若干待重组文件包括所述目标拆分文件和未更新的所述历史拆分文件。
第三方面,本申请公开了一种电子设备,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序以实现前述的组态增量下装方法。
第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述的组态增量下装方法。
可见,本申请首先利用预设编译器对源代码进行编译以生成相应的目标代码文件,并在对所述目标代码文件进行链接的过程中根据预设拆分规则对所述目标代码文件进行拆分得到若干拆分文件;从若干所述拆分文件中筛选出目标拆分文件并下装至预设控制器以更新所述预设控制器中与所述目标拆分文件对应的历史拆分文件;通过所述预设控制器对自身存储的若干待重组文件进行相应的重组操作以得到可执行的目标文件;所述若干待重组文件包括所述目标拆分文件和未更新的所述历史拆分文件。由此可知,本申请通过对源代码进行编译转化成目标代码文件,将所述目标代码文件进行拆分并更新预设控制器中的历史拆分文件以组装得到可执行的目标文件,这样一来,通过只替换存在更新的历史拆分文件,可以真正的实现只对变化代码进行增量编译和增量下装并且不影响其他逻辑内容,避免利用传统方式造成大量人工和时间成本,有效提高了编译和下装的速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种组态增量下装方法流程图;
图2为本申请公开的一种LLVM编译器架构示意图;
图3为本申请公开的一种具体的组态增量下装方法流程图;
图4为本申请公开的一种组态增量下装方法的编译操作过程流程图;
图5为本申请公开的一种目标代码文件中的段信息示例图;
图6为本申请公开的一种组态增量下装方法的拆分操作过程示意图;
图7为本申请公开的一种预设控制器的运行内存布局示意图;
图8为本申请公开的一种第一次全量下装后运行内存的数据排布示例图;
图9为本申请公开的一种删除数据后运行内存的数据排布示例图;
图10为本申请公开的一种增加数据后运行内存的数据排布示例图;
图11为本申请公开的一种组态增量下装装置结构示意图;
图12为本申请公开的一种电子设备结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前大部分的工业控制软件需要实现自己对组态逻辑进行编译,实现方法有自己研制编译器也有通过开源编译器如GCC等实现编译。但由于编译器的架构限制,这些方案存在以下问题:第一是扩展困难,由于架构的限制,这些工业控制器软件很难集成一种新的语言或者一种新的指令架构,需要花费大量的人力。第二传统方案未真正做到增量编译及增量下装,逻辑修改后,因为逻辑间的依赖需要下装大量的文件,耗费较长的时间。
参见图1所示,本申请实施例公开了一种组态增量下装方法,包括:
步骤S11:利用预设编译器对源代码进行编译以生成相应的目标代码文件,并在对所述目标代码文件进行链接的过程中根据预设拆分规则对所述目标代码文件进行拆分得到若干拆分文件。
本实施例中,在上位机即分布式控制系统(DCS,Distributed Control System)的逻辑组态软件中首先需要利用预设编译器对源代码进行编译操作以生成相应的目标代码文件,所述目标代码文件为.O文件(.O file,即对象文件),并在所述目标代码文件进行连接的过程中,根据预设拆分规则对所述目标代码文件进行拆分得到若干拆分文件,所述拆分文件为bin文件(binary file,即二进制文件)。其中所述上位机指的是分布式控制系统的逻辑组态软件,主要进行控制逻辑的编写组态;所述预设编译器可以为LLVM(Low LevelVirtual Machine,即底层虚拟机)编译器,LLVM和传统的编译器一样,分为前端、优化和后端三个阶段完成编译,其架构示意图参见图2所示,利用LLVM的架构的优点,如果需要支持一种新的编程语言,那么我们只需要实现一种新的前端。如果我们需要支持一种新的硬件设备,那只需要实现一个新的后端。而优化阶段因为是针对了统一的LLVM IR(Intermediate Representation,即中间表示),所以它是一个通用的阶段,不论是支持新的编程语言,还是支持新的硬件设备,这里不需要对优化阶段做修改。减少了工作量同时增加了稳定性。
步骤S12:从若干所述拆分文件中筛选出目标拆分文件并下装至预设控制器以更新所述预设控制器中与所述目标拆分文件对应的历史拆分文件。
本实施例中,得到若干所述拆分文件后,所述上位机从若干所述拆分文件中筛选出目标拆分文件并下装至预设控制器中以更新所述预设控制器中与所述目标拆分文件对应的历史拆分文件。其中所述预设控制器为RTS(Run Time System),这里指控制器控制软件,主要负责IEC(International Electro technical Commission)运算的调度与执行,以及系统运行状态的逻辑控制。需要指出的是,在进行增量下装操作之前,一定会有一次全量下装操作,在全量下装执行完毕后,所述预设控制器中已经存储了许多未更新的初始历史拆分文件,因此在进行增量下装时,需要将所述预设控制器中已经存储的历史拆分文件替换成更新后的目标拆分文件。这样一来,通过只对部分目标拆分文件进行更新可以实现增量下装的过程。
步骤S13:通过所述预设控制器对自身存储的若干待重组文件进行相应的重组操作以得到可执行的目标文件;所述若干待重组文件包括所述目标拆分文件和未更新的所述历史拆分文件。
本实施例中,所述预设控制器收到目标拆分文件后,对自身存储的包括所述目标拆分文件和未更新的所述历史拆分文件进行相应的重组操作,以得到可执行的目标文件。其中,所述可执行的目标文件是指在本方案的分布式控制系统中可以执行的目标文件。可以理解的是,在下装操作中对更新的拆分文件进行替换后,需要将替换后的文件与未替换的部分进行重组以组成一个完成的可执行的目标文件。这样一来,通过只替换存在更新的历史拆分文件,可以真正的实现只对变化代码进行增量编译和增量下装并且不影响其他逻辑内容,避免利用传统方式造成大量人工和时间成本,有效提高了编译和下装的速度。
可见,本申请首先利用预设编译器对源代码进行编译以生成相应的目标代码文件,并在对所述目标代码文件进行链接的过程中根据预设拆分规则对所述目标代码文件进行拆分得到若干拆分文件;从若干所述拆分文件中筛选出目标拆分文件并下装至预设控制器以更新所述预设控制器中与所述目标拆分文件对应的历史拆分文件;通过所述预设控制器对自身存储的若干待重组文件进行相应的重组操作以得到可执行的目标文件;所述若干待重组文件包括所述目标拆分文件和未更新的所述历史拆分文件。由此可知,本申请通过对源代码进行编译转化成目标代码文件,将所述目标代码文件进行拆分并更新预设控制器中的历史拆分文件以组装得到可执行的目标文件,这样一来,通过只替换存在更新的历史拆分文件,可以真正的实现只对变化代码进行增量编译和增量下装并且不影响其他逻辑内容,避免利用传统方式造成大量人工和时间成本,有效提高了编译和下装的速度。
参见图3所示,本申请实施例公开了一种具体的组态增量下装方法,包括:
步骤S21:利用预设编译器对源代码进行分析操作以生成相应的中间代码,并对所述中间代码进行优化以编译生成相应的目标代码文件。
本实施例中,利用预设编译器对源代码进行词法分析、语法分析和语义分析操作以生成相应的中间代码,并对所述中间代码进行优化以编译生成相应的目标代码文件,编译操作过程的流程图参见图4所示。所述编译操作过程中,前端分析可以自行完成,中间代码优化以及目标代码文件生成部分,可以使用LLVM编译框架完成。所述目标代码文件为.O文件,以LINUX的一个.O文件举例,其中包含的段信息参见图5所示,图5指示了段表的主要内容,源代码编译生成目标代码文件后的数据存放在各个段(section)里,其中“.text”段存放源代码编译后的机器指令;“.data”段存放全局变量和静态局部变量;“.bss”段存放未初始化的全局变量和局部静态变量;“.rodata”段存放只读数据;“.systab”段存放程序符号信息。如果存在重定位代码段则会生成“.rel.text”重定位表,存在重定位的数据信息则生成“.rel.data”重定位表,上述内容将是构成最终可执行目标文件的重要原料,但还需要确定程序中的地址信息。
步骤S22:对所述目标代码文件进行链接得到相应的二进制文件并建立相应的全局偏移表。
本实施例中,通过编译操作得到相应的所述目标代码文件后,实际变量和函数的地址还未确定,因此需要对所述目标代码进行链接,得到相应的二进制文件,通过LLVM编译器中的LLD链接器自动建立一个全局偏移表即GOT(Global Offset Table)表,以便后续通过对GOT表内容的重定位,代码段和数据段可以做到数据无关访问。在步骤S21中描述了目标代码文件中的段信息,而通过对目标代码文件进行链接操作生成的二进制文件中需要拷贝所述目标代码文件中的段主要包括“.text”、“.got”、“.data”、“.rodata”、“.bss”。本方案用到的链接脚本格式如下所示:
步骤S23:根据预设拆分规则对所述二进制文件中目标段的每一程序组织单元进行拆分得到若干拆分文件和结构文件。
本实施例中,对所述目标代码文件进行链接得到相应的二进制文件后,根据预设拆分规则对所述二进制文件中的目标段即“.text”段的每一个程序组织单元(POU,Programming Organization Unit)进行拆分,得到相应的若干拆分文件和结构文件,所述拆分文件和所述结构文件均为bin文件。其中所述程序组织单元可以是功能、功能块或程序等。参见图6所示,对于所述二进制文件中的“.got”、“.data”、“.rodata”、“.bss”段的信息,将整段从所述二进制文件中拆分后合并为DATA.bin即结构文件,所述结构文件包括但不限于“.bss”段的起止地址,“.got”段的起止地址,文件名及序号列表,需要重定位的信息等;而对于“.text”段,需要根据输入文件的程序组织单元进行拆分,每一个输入文件的程序组织单元对应二进制文件的一段得到一个所述拆分文件,所述拆分文件包括但不限于文件头信息,文件内容。需要指出的是,上述的拆分过程是在所述LLD链接器中完成的,但所述LLD链接器本身不支持文件的拆分,所以需要自行添加代码完成上述拆分操作。拆分后的文件头信息如下所示:
步骤S24:识别若干所述程序组织单元中更新的目标程序组织单元以从若干所述拆分文件中筛选出与所述目标程序组织单元对应的目标拆分文件。
本实施例中,将所述二进制文件拆分得到若干所述拆分文件后,通过识别若干所述程序组织单元中发生变化的目标程序组织单元,从若干所述拆分文件中筛选出与所述目标程序组织单元对应的目标拆分文件,基于步骤S23可知,一个程序组织单元对一个拆分文件,这样一来,通过识别单个程序组织单元的变化可以实现仅下装变化的所述目标程序组织单元对应的所述目标拆分文件,达到增量下装的目的。
步骤S25:将所述目标拆分文件下装至预设控制器,通过所述预设控制器对接收到的所述目标拆分文件进行校验操作,并将校验操作成功的所述目标拆分文件进行存储以更新所述预设控制器中与所述目标拆分文件对应的历史拆分文件。
本实施例中,确定出发生变化的所述目标拆分文件后,将所述目标拆分文件下装至预设控制器中,通过所述预设控制器对接收到的所述目标拆分文件和所述结构文件进行CRC(Cyclic redundancy check,循环冗余校验)校验操作,并将校验操作成功即校验正确的所述目标拆分文件进行存储以更新所述预设控制器中与所述目标拆分文件对应的历史拆分文件。需要指出的是,在增量下装的过程中,所述预设控制器中包括数据存储区和逻辑存储区,在运行状态时数据存储区保存工程运行的变量值,逻辑存储区保存工程运行中的逻辑控制代码。在增量下装的过程中,所述预设控制器中存在两片逻辑内存可供交替使用,参见图7所示,在第一次全量下装后所述预设控制器的运行内存参见图8所示,数据存储区中保存了历史拆分文件,利用逻辑存储一区存储第一次下装时的工程运行控制逻辑;当删除数据存储区中的SM481_2并进行无扰下装时,所述预设控制器的数据排布参见图9所示,增量下装后进行了逻辑切换,即在逻辑存储二区中存储了删除SM481_2的工程运行控制逻辑以控制数据存储区进行运算,并删除数据存储区中内存地址为0x6F1020中存储的SM481_2数据;增加SM481_4、SM481_5并进行无扰下装后的数据排布参见图10所示,此时逻辑存储一区存储了增加SM481_4、SM481_5的工程运行控制逻辑,以控制数据存储区分别在内存地址为0x6F1020和0x6F10A0的位置增加SM481_4、SM481_5数据。这样一来,通过两片逻辑内存区交替使用,可以保证新工程下装的逻辑制代码不会覆盖旧工程的逻辑控制代码,进而保证逻辑控制无扰并且数据运行无扰,对于工程中没有变化的变量,无扰下装后内存地址不变,从而可以保证对变量数据值无扰。
本实施例中,所述对接收到的所述目标拆分文件进行校验操作之后,还包括:若所述目标拆分文件的校验操作失败,则重新从上位机获取校验操作失败的所述目标拆分文件。即若所述目标拆分文件的校验操作失败,则表明所述目标拆分文件可能在拆分或下装的过程中产生了某些问题,需要重新从上位机中获取所述目标拆分文件并重新进行校验操作直至校验成功。
步骤S26:通过所述预设控制器根据所述结构文件对自身存储的若干待重组文件进行相应的重组操作以得到可执行的目标文件,并根据所述目标文件的运行地址对所述全局偏移表进行重定位操作。
本实施例中,利用所述目标拆分文件将所述历史拆分文件替换之后,所述预设控制器根据所述结构文件中的顺序对自身存储的若干待重组文件按照文件偏移和文件长度进行重组操作以得到可执行的目标文件。在重组操作完成后,通过将“.bss”段进行初始化后,根据目标文件的运行地址对全局偏移表中数据地址进行重定位操作。需要指出的是,在链接操作时,可以指定“.got”段和“.text”段的相对偏移,所述预设控制器按照固定偏移分别加载数据区和代码区,通过对数据区的重定位,代码区中的函数调用数据访问可以访问到正确的数据地址。在所述预设控制器中对所述全局变量表进行的函数代码如下所示:
可见,本实施例通过对目标代码文件中的目标段的程序组织单元进行拆分并识别,以确定出目标拆分文件并将所述目标拆分文件下装至预设控制器中,这样一来可以通过识别单个程序组织单元的过程来实现增量下装的过程;并且本实施例中的所述预设控制器存在两片逻辑内存区以交替使用,从而保证新工程下装的逻辑制代码不会覆盖旧工程的逻辑控制代码,实现无忧下装,对于工程中没有变化的变量,无扰下装后内存地址不变,从而保证对变量数据值无扰,这样一来,可以在不影响其他逻辑内容的执行的情况下使系统真正具备增量编译和增量下装的功能。
参考图11所述,本申请实施例还相应公开了一种组态增量下装装置,包括:
代码编译模块11,用于利用预设编译器对源代码进行编译以生成相应的目标代码文件;
文件链接模块12,用于在对所述目标代码文件进行链接的过程中根据预设拆分规则对所述目标代码文件进行拆分得到若干拆分文件;
文件下装模块13,用于从若干所述拆分文件中筛选出目标拆分文件并下装至预设控制器以更新所述预设控制器中与所述目标拆分文件对应的历史拆分文件;
文件重组模块14,用于通过所述预设控制器对自身存储的若干待重组文件进行相应的重组操作以得到可执行的目标文件;所述若干待重组文件包括所述目标拆分文件和未更新的所述历史拆分文件。
可见,本申请首先利用预设编译器对源代码进行编译以生成相应的目标代码文件,并在对所述目标代码文件进行链接的过程中根据预设拆分规则对所述目标代码文件进行拆分得到若干拆分文件;从若干所述拆分文件中筛选出目标拆分文件并下装至预设控制器以更新所述预设控制器中与所述目标拆分文件对应的历史拆分文件;通过所述预设控制器对自身存储的若干待重组文件进行相应的重组操作以得到可执行的目标文件;所述若干待重组文件包括所述目标拆分文件和未更新的所述历史拆分文件。由此可知,本申请通过对源代码进行编译转化成目标代码文件,将所述目标代码文件进行拆分并更新预设控制器中的历史拆分文件以组装得到可执行的目标文件,这样一来,通过只替换存在更新的历史拆分文件,可以真正的实现只对变化代码进行增量编译和增量下装并且不影响其他逻辑内容,避免利用传统方式造成大量人工和时间成本,有效提高了编译和下装的速度。
在一些具体的实施例中,所述代码编译模块11,具体可以用于利用预设编译器对源代码进行分析操作以生成相应的中间代码,并对所述中间代码进行优化以编译生成相应的目标代码文件。
在一些具体的实施例中,所述文件链接模块12,具体可以包括:
文件链接单元,用于对所述目标代码文件进行链接得到相应的二进制文件并建立相应的全局偏移表;
文件拆分单元,用于根据预设拆分规则对所述二进制文件中目标段的每一程序组织单元进行拆分得到若干拆分文件和结构文件。
在一些具体的实施例中,所述文件下装模块13,具体可以包括:
文件筛选单元,用于识别若干所述程序组织单元中更新的目标程序组织单元以从若干所述拆分文件中筛选出与所述目标程序组织单元对应的目标拆分文件;
文件下装单元,用于将所述目标拆分文件下装至预设控制器以更新所述预设控制器中与所述目标拆分文件对应的历史拆分文件。
在一些具体的实施例中,所述文件重组模块14,具体可以用于通过所述预设控制器根据所述结构文件对自身存储的若干待重组文件进行相应的重组操作以得到可执行的目标文件,并根据所述目标文件的运行地址对所述全局偏移表进行重定位操作。
在一些具体的实施例中,所述组态增量下装装置,还可以包括:
文件校验模块,用于对接收到的所述目标拆分文件进行校验操作,并将校验操作成功的所述目标拆分文件进行存储以更新所述预设控制器中与所述目标拆分文件对应的历史拆分文件。
在一些具体的实施例中,所述组态增量下装装置,还可以包括:
文件获取模块,用于当所述目标拆分文件的校验操作失败时,则重新从上位机获取校验操作失败的所述目标拆分文件。
进一步的,本申请实施例还公开了一种电子设备,图12是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。
图12为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的组态增量下装方法中的相关步骤。另外,本实施例中的电子设备20具体可以为电子计算机。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222等,存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的组态增量下装方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
进一步的,本申请还公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的组态增量下装方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的技术方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种组态增量下装方法,其特征在于,包括:
利用预设编译器对源代码进行编译以生成相应的目标代码文件,并在对所述目标代码文件进行链接的过程中根据预设拆分规则对所述目标代码文件进行拆分得到若干拆分文件;
从若干所述拆分文件中筛选出目标拆分文件并下装至预设控制器以更新所述预设控制器中与所述目标拆分文件对应的历史拆分文件;
通过所述预设控制器对自身存储的若干待重组文件进行相应的重组操作以得到可执行的目标文件;所述若干待重组文件包括所述目标拆分文件和未更新的所述历史拆分文件。
2.根据权利要求1所述的组态增量下装方法,其特征在于,所述利用预设编译器对源代码进行编译以生成相应的目标代码文件,包括:
利用预设编译器对源代码进行分析操作以生成相应的中间代码,并对所述中间代码进行优化以编译生成相应的目标代码文件。
3.根据权利要求1所述的组态增量下装方法,其特征在于,所述对所述目标代码文件进行链接的过程中根据预设拆分规则对所述目标代码文件进行拆分得到若干拆分文件,包括:
对所述目标代码文件进行链接得到相应的二进制文件并建立相应的全局偏移表;
根据预设拆分规则对所述二进制文件中目标段的每一程序组织单元进行拆分得到若干拆分文件和结构文件。
4.根据权利要求3所述的组态增量下装方法,其特征在于,所述从若干所述拆分文件中筛选出目标拆分文件并下装至预设控制器以更新所述预设控制器中与所述目标拆分文件对应的历史拆分文件,包括:
识别若干所述程序组织单元中更新的目标程序组织单元以从若干所述拆分文件中筛选出与所述目标程序组织单元对应的目标拆分文件;
将所述目标拆分文件下装至预设控制器以更新所述预设控制器中与所述目标拆分文件对应的历史拆分文件。
5.根据权利要求3所述的组态增量下装方法,其特征在于,所述通过所述预设控制器对自身存储的若干待重组文件进行相应的重组操作以得到可执行的目标文件,包括:
通过所述预设控制器根据所述结构文件对自身存储的若干待重组文件进行相应的重组操作以得到可执行的目标文件,并根据所述目标文件的运行地址对所述全局偏移表进行重定位操作。
6.根据权利要求1至5任一项所述的组态增量下装方法,其特征在于,所述从若干所述拆分文件中筛选出目标拆分文件并下装至预设控制器之后,还包括:
对接收到的所述目标拆分文件进行校验操作,并将校验操作成功的所述目标拆分文件进行存储以更新所述预设控制器中与所述目标拆分文件对应的历史拆分文件。
7.根据权利要求6所述的组态增量下装方法,其特征在于,所述对接收到的所述目标拆分文件进行校验操作之后,还包括:
若所述目标拆分文件的校验操作失败,则重新从上位机获取校验操作失败的所述目标拆分文件。
8.一种组态增量下装装置,其特征在于,包括:
代码编译模块,用于利用预设编译器对源代码进行编译以生成相应的目标代码文件;
文件链接模块,用于在对所述目标代码文件进行链接的过程中根据预设拆分规则对所述目标代码文件进行拆分得到若干拆分文件;
文件下装模块,用于从若干所述拆分文件中筛选出目标拆分文件并下装至预设控制器以更新所述预设控制器中与所述目标拆分文件对应的历史拆分文件;
文件重组模块,用于通过所述预设控制器对自身存储的若干待重组文件进行相应的重组操作以得到可执行的目标文件;所述若干待重组文件包括所述目标拆分文件和未更新的所述历史拆分文件。
9.一种电子设备,其特征在于,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序以实现如权利要求1至7任一项所述的组态增量下装方法。
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的组态增量下装方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211662854.7A CN115840569A (zh) | 2022-12-23 | 2022-12-23 | 一种组态增量下装方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211662854.7A CN115840569A (zh) | 2022-12-23 | 2022-12-23 | 一种组态增量下装方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115840569A true CN115840569A (zh) | 2023-03-24 |
Family
ID=85579133
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211662854.7A Pending CN115840569A (zh) | 2022-12-23 | 2022-12-23 | 一种组态增量下装方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115840569A (zh) |
-
2022
- 2022-12-23 CN CN202211662854.7A patent/CN115840569A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Reijers et al. | Efficient code distribution in wireless sensor networks | |
EP1872215B1 (en) | Implementing data-compatibility-based version scheme | |
US7155381B2 (en) | Module for developing wireless device applications using an integrated emulator | |
CN109491695A (zh) | 一种集成安卓应用的增量更新方法 | |
CN105100191A (zh) | 一种云编译实现Java应用安装的方法、装置及系统 | |
CN109614165B (zh) | 一种com组件的多版本并行运行方法和装置 | |
KR101213275B1 (ko) | 무선 장치에서 사용할모놀리식(monolithic)이미지를 제공하기 위한시스템 및 방법 | |
CN111142903A (zh) | 一种基于文件对比的配置文件交互式更新方法及装置 | |
US20030236657A1 (en) | Method of developing wireless device applications using an integrated emulator and an IDE | |
CN104182255A (zh) | 一种系统应用的库文件升级方法及终端 | |
CN109324799A (zh) | 一种代码编译方法、计算机装置及计算机可读存储介质 | |
CN106095504B (zh) | 预置应用加载方法和移动终端 | |
CN112379940B (zh) | 一种可执行文件处理方法、装置、电子设备及存储介质 | |
CN102364433B (zh) | 在ARM处理器上实现Wine构建工具移植的方法 | |
CN112799677A (zh) | 一种编译期的hook方法、装置、设备及存储介质 | |
CN108694049B (zh) | 一种更新软件的方法和设备 | |
Polakovic et al. | Experience with safe dynamic reconfigurations in component-based embedded systems | |
CN115640037A (zh) | 程序更新方法和装置 | |
CN110688140B (zh) | 一种代码管理方法和终端 | |
CN115840569A (zh) | 一种组态增量下装方法、装置、设备及存储介质 | |
CN112306474A (zh) | 一种基于组件化模板的vue项目平滑升级方法 | |
CN114816475A (zh) | 一种嵌入式操作系统的更新方法、装置、设备和介质 | |
CN113849181A (zh) | 交叉编译工具链构建方法、装置、电子设备及存储介质 | |
CN108958795B (zh) | 一种嵌入式系统中BootLoader代码重利用方法和开发板 | |
CN113360156A (zh) | 一种ios编译方法及相关设备 |
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 |