CN115878178A - Codesys运行时软件的移植方法、装置及存储介质 - Google Patents
Codesys运行时软件的移植方法、装置及存储介质 Download PDFInfo
- Publication number
- CN115878178A CN115878178A CN202211371171.6A CN202211371171A CN115878178A CN 115878178 A CN115878178 A CN 115878178A CN 202211371171 A CN202211371171 A CN 202211371171A CN 115878178 A CN115878178 A CN 115878178A
- Authority
- CN
- China
- Prior art keywords
- file
- library
- xenomai
- codesys
- software
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了CODESYS运行时软件的移植方法、装置及存储介质,涉及软件移植技术领域。该方法包括获取Makefile脚本中的特定宏定义;基于Makefile脚本内的编译参数,获取libcobalt库头文件和Xenomai头文件;查找出Makefile脚本所在路径下指定格式的源代码文件,基于libcobalt库头文件和Xenomai头文件将指定格式的源代码文件转换为二进制目标文件;获取静态库文件;获取实时相关库libcobalt的库文件及内存管理库的库文件;向本地链接器传入主函数的包装参数;通过本地链接器将二进制目标文件、静态库文件、实时相关库libcobalt的库文件和内存管理库的库文件进行链接,得到可在Xenomai框架下执行的目标文件。本发明公开的方法、装置及存储介质可将CODESYS运行时软件移植到Xenomai框架下的系统。
Description
技术领域
本发明属于软件移植技术领域,具体涉及一种CODESYS运行时软件的移植方法、装置及存储介质。
背景技术
CODESYS(Controlled Development System)是德国3S公司推出的一款付费的软PLC开发软件,它包括用来编程的软件界面(Development System,IDE)和运行时软件(Runtime System),二者安装的位置通常不同,IDE一般安装在用户的开发计算机上,CODESYS运行时软件是个典型的实时应用程序,部署于起控制作用的硬件设备上。
目前,CODESYS运行时软件,其运行的环境仅限于标准的linux系统,而对于一些Xenomai框架下的系统,CODESYS运行时软件则无法在其上运行,导致CODESYS运行时软件的使用场景受限,不利于CODESYS运行时软件的广泛推广和应用。
因此,如何提供一种有效的方案,以便CODESYS运行时软件能够应用在Xenomai框架下的系统,已成为现有技术中一亟待解决的问题。
发明内容
本发明的目的是提供一种CODESYS运行时软件的移植方法、装置及存储介质,用以解决现有技术中存在的上述问题。
为了实现上述目的,本发明采用以下技术方案:
第一方面,本发明提供了一种CODESYS运行时软件的移植方法,用于将CODESYS运行时软件移植到Xenomai框架下的系统,该方法包括:
调用本地编译器,获取预先编的Makefile脚本中的特定宏定义,所述特定宏定义定义了CODESYS运行时软件的COBALT内核代码和符号包装在Xenomai框架下的系统生效;
基于Makefile脚本内的编译参数,获取libcobalt库头文件和Xenomai头文件,所述编译参数包括libcobalt库头文件路径和Xenomai头文件路径;
查找出Makefile脚本所在路径下指定格式的源代码文件,并基于所述libcobalt库头文件和所述Xenomai头文件将所述指定格式的源代码文件转换为二进制目标文件,所述指定格式包括.c格式和.cpp格式;
获取所述CODESYS运行时软件的静态库文件;
获取所述CODESYS运行时软件的实时相关库libcobalt及内存管理库的存储路径,以便本地链接器获取所述实时相关库libcobalt的库文件和所述内存管理库的库文件,所述内存管理库用于内存管理,所述实时相关库libcobalt用于实现COBALT内核的系统调用;
传入符号包装规则文件路径,以便本地链接器获取符号包装规则文件中的符号包装规则以对所述CODESYS运行时软件中引用的POSIX接口进行包装;
向本地链接器传入主函数的包装参数,以用于实现所述CODESYS运行时软件包装后的主函数;
通过本地链接器将所述二进制目标文件、所述静态库文件、所述实时相关库libcobalt的库文件和所述内存管理库的库文件进行链接,得到可在Xenomai框架下执行的目标文件。
基于上述公开的内容,本发明通过获取预先编的Makefile脚本中的特定宏定义,特定宏定义定义了CODESYS运行时软件的COBALT内核代码和符号包装在Xenomai框架下的系统生效;基于Makefile脚本内的编译参数,获取libcobalt库头文件和Xenomai头文件;查找出Makefile脚本所在路径下指定格式的源代码文件,并基于libcobalt库头文件和Xenomai头文件将指定格式的源代码文件转换为二进制目标文件;获取CODESYS运行时软件的静态库文件;获取CODESYS运行时软件的实时相关库libcobalt及内存管理库的存储路径,以便本地链接器获取实时相关库libcobalt的库文件和内存管理库的库文件;传入符号包装规则文件路径,以便本地链接器获取符号包装规则文件中的符号包装规则以对CODESYS运行时软件中引用的POSIX接口进行包装;向本地链接器传入主函数的包装参数,以用于实现CODESYS运行时软件包装后的主函数;通过本地链接器将二进制目标文件、所述静态库文件、实时相关库libcobalt的库文件和内存管理库的库文件进行链接,得到可在Xenomai框架下执行的目标文件。在此过程中,能够通过传入符号包装规则文件路径使得本地链接器可获取符号包装规则以对CODESYS运行时软件中引用的POSIX接口进行包装,通过向本地链接器传入主函数的包装参数,可用于实现CODESYS运行时软件包装后的主函数,并通过本地链接器将转换成的可在Xenomai框架下的系统执行的二进制目标文件、用于执行CODESYS运行时软件的业务功能的静态库文件、用于内存管理的内存管理库以及用于实现COBALT内核的系统调用实时相关库libcobalt链接起来,使得链接所到的目标文件可在Xenomai框架下的系统执行,从而将CODESYS运行时软件移植到Xenomai框架下的系统,拓展CODESYS运行时软件的应用场景,便于CODESYS运行时软件的广泛推广和使用。
在一个可能的设计中,在调用本地编译器之前,所述方法还包括:
加载预先编写好的所述Makefile脚本并搜索所述本地编译器。
在一个可能的设计中,所述基于Makefile脚本内的编译参数,获取libcobalt库头文件和Xenomai头文件,包括:
将所述Makefile脚本内的编译参数传入所述本地编译器;
基于所述编译参数中的libcobalt库头文件路径和Xenomai头文件路径,通过所述本地编译器查找出所述libcobalt库头文件和所述Xenomai头文件。
在一个可能的设计中,在将所述指定格式的源代码文件转换为二进制目标文件之后,所述方法还包括:
将所述二进制目标文件的路径传入所述本地链接器。
在一个可能的设计中,所述获取所述CODESYS运行时软件的静态库文件,包括:
将所述静态库文件的文件路径传入所述本地链接器;
通过所述本地链接器依据所述文件路径查找到所述静态库文件。
在一个可能的设计中,所述向本地链接器传入主函数的包装参数,包括:
向本地链接器传入初始化模块参数,所述初始化模块参数中包括用于实现所述CODESYS运行时软件包装后的主函数的指定文件的文件路径;
基于所述指定文件的文件路径获取所述指定文件;
通过Makefile脚本将所述指定文件中的用于包装主函数的主函数包装参数传入所述本地链接器。
在一个可能的设计中,所述符号包装规则文件包括cobalt.wrappers文件和modechk.wrappers文件。
第二方面,本发明提供了一种CODESYS运行时软件的移植装置,用于将CODESYS运行时软件移植到Xenomai框架下的系统,CODESYS运行时软件的移植装置包括:
第一获取单元,用于调用本地编译器,获取预先编的Makefile脚本中的特定宏定义,所述特定宏定义定义了CODESYS运行时软件的COBALT内核代码和符号包装在Xenomai框架下的系统生效;
第二获取单元,用于基于Makefile脚本内的编译参数,获取libcobalt库头文件和Xenomai头文件,所述编译参数包括libcobalt库头文件路径和Xenomai头文件路径;
查找转换单元,用于查找出Makefile脚本所在路径下指定格式的源代码文件,并基于所述libcobalt库头文件和所述Xenomai头文件将所述指定格式的源代码文件转换为二进制目标文件,所述指定格式包括.c格式和.cpp格式;
第三获取单元,用于获取所述CODESYS运行时软件的静态库文件;
第四获取单元,用于获取所述CODESYS运行时软件的实时相关库libcobalt及内存管理库的存储路径,以便本地链接器获取所述实时相关库libcobalt的库文件和所述内存管理库的库文件,所述内存管理库用于内存管理,所述实时相关库libcobalt用于实现COBALT内核的系统调用;
第一传入单元,用于传入符号包装规则文件路径,以便本地链接器获取符号包装规则文件中的符号包装规则以对所述CODESYS运行时软件中引用的POSIX接口进行包装;
第二传入单元,用于向本地链接器传入主函数的包装参数,以用于实现所述CODESYS运行时软件包装后的主函数;
链接单元,用于通过本地链接器将所述二进制目标文件、所述静态库文件、所述实时相关库libcobalt的库文件和所述内存管理库的库文件进行链接,得到可在Xenomai框架下执行的目标文件。
第三方面,本发明提供了一种CODESYS运行时软件的移植装置,包括依次通信相连的存储器、处理器和收发器,其中,所述存储器用于存储计算机程序,所述收发器用于收发消息,所述处理器用于读取所述计算机程序,执行如上述第一方面所述的CODESYS运行时软件的移植方法。
第四方面,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,执行第一方面所述的CODESYS运行时软件的移植方法。
第五方面,本发明提供了一种包含指令的计算机程序产品,当所述指令在计算机上运行时,使所述计算机执行如第一方面所述的CODESYS运行时软件的移植方法。
附图说明
图1为本申请实施例提供的CODESYS运行时软件的移植方法的流程图;
图2为本申请实施例提供的CODESYS运行时软件的移植装置的结构示意图;
图3为本申请实施例提供的另一CODESYS运行时软件的移植装置的结构示意图。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将结合附图和实施例或现有技术的描述对本发明作简单地介绍,显而易见地,下面关于附图结构的描述仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在此需要说明的是,对于这些实施例方式的说明用于帮助理解本发明,但并不构成对本发明的限定。
为了使CODESYS运行时软件可应用在Xenomai框架下的系统,本申请实施例提供了一种CODESYS运行时软件的移植方法、装置及存储介质,该CODESYS运行时软件的移植方法、装置及存储介质可将CODESYS运行时软件移植到Xenomai框架下的系统,拓展CODESYS运行时软件的应用场景,便于CODESYS运行时软件的广泛推广和使用。申请实施例提供的CODESYS运行时软件的移植方法可以应用于具有Xenomai框架下的系统的硬件终端。
下面将对本申请实施例提供的CODESYS运行时软件的移植方法进行详细说明。
如图1所示,本实施例第一方面提供了一种CODESYS运行时软件的移植方法,用于将CODESYS运行时软件移植到Xenomai框架下的系统,该CODESYS运行时软件的移植方法可以包括如下步骤。
步骤S101.调用本地编译器,获取预先编的Makefile脚本中的特定宏定义。
本申请实施例中,预先编写用于将CODESYS运行时软件移植到Xenomai框架下的系统的Makefile脚本,Makefile脚本中包括特定宏定义,所述特定宏定义定义了CODESYS运行时软件的COBALT内核代码和符号包装在Xenomai框架下的系统生效。
在对CODESYS运行时软件进行移植过程中,可通过make工具加载该预先编写好的Makefile脚本,并搜索本地编译器,然后调用本地编译器,通过本地编译器获取Makefile脚本中的特定宏定义。其中,make工具为linux系统中的系统管理工具,主要用来管理C/C++项目,通过Makefile脚本书写的规则来对项目中的源代码文件进行编译,生成可执行的程序。
步骤S102.基于Makefile脚本内的编译参数,获取libcobalt库头文件和Xenomai头文件。
其中,编译参数包括libcobalt库头文件路径和Xenomai头文件路径。
具体的,可通过make工具将Makefile脚本内的编译参数(即libcobalt库头文件路径和Xenomai头文件路径)传入本地编译器,由本地编译器根据libcobalt库头文件路径和Xenomai头文件路径找到libcobalt库头文件和Xenomai头文件。
步骤S103.查找出Makefile脚本所在路径下指定格式的源代码文件,并基于libcobalt库头文件和Xenomai头文件将指定格式的源代码文件转换为二进制目标文件。
其中指定格式包括.c格式和.cpp格式。本申请实施例中,可通过make工具自动检查Makefile脚本所在路径下.c格式和.cpp格式的(CODESYS运行时软件的)源代码文件。然后通过libcobalt库头文件和Xenomai头文件将.c格式和.cpp格式的源代码文件转为二进制目标文件,以便用于后续的链接。
步骤S104.获取CODESYS运行时软件的静态库文件。
本申请实施例中,可通过make工具自动搜索本地链接器(链接器是一个程序,其用于将一个或多个由编译器或汇编器生成的目标文件外加库链接为一个可执行文件)。
在获取CODESYS运行时软件的静态库文件时,可以通过make工具将静态库文件的文件路径传入所述本地链接器,然后由本地链接器依据静态库文件的文件路径查找到静态库文件。其中,静态库文件为CODESYS运行时软件中用来执行业务的内核文件,用来实现CODESYS运行时软件的业务功能。
本申请实施例中,在将所述指定格式的源代码文件转换为二进制目标文件之后,还可通过make工具将二进制目标文件的路径传入所述本地链接器,以便本地链接器获取二进制目标文件以用于后续的链接。
步骤S105.获取CODESYS运行时软件的实时相关库libcobalt及内存管理库的存储路径,以便本地链接器获取实时相关库libcobalt的库文件和内存管理库的库文件。
所述内存管理库用于内存管理,如实现可控动态内存的创建和回收,从而避免内存碎片。所述实时相关库libcobalt用于实现COBALT内核的系统调用。
本申请实施例中,可通过make工具自动为本地链接器传入实时相关库libcobalt及内存管理库的存储路径。本地链接器根据实时相关库libcobalt及内存管理库的存储路径获取实时相关库libcobalt的库文件和内存管理库的库文件。
步骤S106.传入符号包装规则文件路径,以便本地链接器获取符号包装规则文件中的符号包装规则以对CODESYS运行时软件中引用的POSIX接口进行包装。
符号包装规则文件可以包括但不限于cobalt.wrappers文件和modechk.wrappers文件。符号包装规则文件的路径可写在Makefile脚本中,符号包装规则文件用于定义符号的包装规则,用来将CODESYS运行时软件中引用的POSIX接口的接口名包装成新的接口名,以便能在Xenomai框架下的系统运行。
步骤S107.向本地链接器传入主函数的包装参数,以用于实现CODESYS运行时软件包装后的主函数。
具体的,所述步骤S107包括如下的步骤S1071-S1073。
步骤S1071.向获本地链接器传入初始化模块参数。
其中,所述初始化模块参数中包括用于实现所述CODESYS运行时软件包装后的主函数(main函数)的指定文件的文件路径。
步骤S1072.基于所述指定文件的文件路径获取所述指定文件。
步骤S1073.通过Makefile脚本将所述指定文件中的用于包装主函数的主函数包装参数传入所述本地链接器。
步骤S108.通过本地链接器将二进制目标文件、静态库文件、实时相关库libcobalt的库文件和内存管理库的库文件进行链接,得到可在Xenomai框架下执行的目标文件。
本地链接器可用于将一个或多个由编译器或汇编器生成的目标文件外加库链接为一个可执行文件,通过本地链接器将多个文件链接成可执行文件的过程为现有技术,本申请实施例中不再详细说明。
本申请实施例提供的CODESYS运行时软件的移植方法,通过获取预先编的Makefile脚本中的特定宏定义,特定宏定义定义了CODESYS运行时软件的COBALT内核代码和符号包装在Xenomai框架下的系统生效;基于Makefile脚本内的编译参数,获取libcobalt库头文件和Xenomai头文件;查找出Makefile脚本所在路径下指定格式的源代码文件,并基于libcobalt库头文件和Xenomai头文件将指定格式的源代码文件转换为二进制目标文件;获取CODESYS运行时软件的静态库文件;获取CODESYS运行时软件的实时相关库libcobalt及内存管理库的存储路径,以便本地链接器获取实时相关库libcobalt的库文件和内存管理库的库文件;传入符号包装规则文件路径,以便本地链接器获取符号包装规则文件中的符号包装规则以对CODESYS运行时软件中引用的POSIX接口进行包装;向本地链接器传入主函数的包装参数,以用于实现CODESYS运行时软件包装后的主函数;通过本地链接器将二进制目标文件、所述静态库文件、实时相关库libcobalt的库文件和内存管理库的库文件进行链接,得到可在Xenomai框架下执行的目标文件。在此过程中,能够通过传入符号包装规则文件路径使得本地链接器可获取符号包装规则以对CODESYS运行时软件中引用的POSIX接口进行包装,通过向本地链接器传入主函数的包装参数,可用于实现CODESYS运行时软件包装后的主函数,并通过本地链接器将转换成的可在Xenomai框架下的系统执行的二进制目标文件、用于执行CODESYS运行时软件的业务功能的静态库文件、用于内存管理的内存管理库以及用于实现COBALT内核的系统调用实时相关库libcobalt链接起来,使得链接所到的目标文件可在Xenomai框架下的系统执行,从而将CODESYS运行时软件移植到Xenomai框架下的系统,拓展CODESYS运行时软件的应用场景,便于CODESYS运行时软件的广泛推广和使用。
第二方面,请参阅图2,本申请实施例提供了一种CODESYS运行时软件的移植装置,用于将CODESYS运行时软件移植到Xenomai框架下的系统,该CODESYS运行时软件的移植装置包括:
第一获取单元,用于调用本地编译器,获取预先编的Makefile脚本中的特定宏定义,所述特定宏定义定义了CODESYS运行时软件的COBALT内核代码和符号包装在Xenomai框架下的系统生效;
第二获取单元,用于基于Makefile脚本内的编译参数,获取libcobalt库头文件和Xenomai头文件,所述编译参数包括libcobalt库头文件路径和Xenomai头文件路径;
查找转换单元,用于查找出Makefile脚本所在路径下指定格式的源代码文件,并基于所述libcobalt库头文件和所述Xenomai头文件将所述指定格式的源代码文件转换为二进制目标文件,所述指定格式包括.c格式和.cpp格式;
第三获取单元,用于获取所述CODESYS运行时软件的静态库文件;
第四获取单元,用于获取所述CODESYS运行时软件的实时相关库libcobalt及内存管理库的存储路径,以便本地链接器获取所述实时相关库libcobalt的库文件和所述内存管理库的库文件,所述内存管理库用于内存管理,所述实时相关库libcobalt用于实现COBALT内核的系统调用;
第一传入单元,用于传入符号包装规则文件路径,以便本地链接器获取符号包装规则文件中的符号包装规则以对所述CODESYS运行时软件中引用的POSIX接口进行包装;
第二传入单元,用于向本地链接器传入主函数的包装参数,以用于实现所述CODESYS运行时软件包装后的主函数;
链接单元,用于通过本地链接器将所述二进制目标文件、所述静态库文件、所述实时相关库libcobalt的库文件和所述内存管理库的库文件进行链接,得到可在Xenomai框架下执行的目标文件。
本实施例第二方面提供的装置的工作过程、工作细节和技术效果,可以参见实施例第一方面,于此不再赘述。
如图3所示,本申请实施例第三方面提供了一种CODESYS运行时软件的移植装置,包括依次通信相连的存储器、处理器和收发器,其中,所述存储器用于存储计算机程序,所述收发器用于收发消息,所述处理器用于读取所述计算机程序,执行如实施例第一方面所述的CODESYS运行时软件的移植方法。
具体举例的,所述存储器可以但不限于包括随机存取存储器(RAM)、只读存储器(ROM)、闪存(Flash Memory)、先进先出存储器(FIFO)和/或先进后出存储器(FILO)等等;所述处理器可以不限于采用型号为STM32系列的微处理器、ARM(Advanced RISC Machines)、X86等架构处理器或集成NPU(neural-network processing units)的处理器;所述收发器可以但不限于为WiFi(无线保真)无线收发器、蓝牙无线收发器、通用分组无线服务技术(General Packet Radio Service,GPRS)无线收发器、紫蜂协议(基于IEEE802.15.4标准的低功耗局域网协议,ZigBee)无线收发器、3G收发器、4G收发器和/或5G收发器等。
本实施例第三方面提供的装置的工作过程、工作细节和技术效果,可以参见实施例第一方面,于此不再赘述。
本实施例第四方面提供了一种存储包含有实施例第一方面所述的CODESYS运行时软件的移植方法的指令的计算机可读存储介质,即所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,执行如第一方面所述的CODESYS运行时软件的移植方法。其中,所述计算机可读存储介质是指存储数据的载体,可以但不限于包括软盘、光盘、硬盘、闪存、优盘和/或记忆棒(Memory Stick)等,所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。
本实施例第四方面提供的计算机可读存储介质的工作过程、工作细节和技术效果,可以参见实施例第一方面,于此不再赘述。
本实施例第五方面提供了一种包含指令的计算机程序产品,当所述指令在计算机上运行时,使所述计算机执行如实施例第一方面所述的CODESYS运行时软件的移植方法,其中,所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。
以上所描述的多个实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台仓库代码的合并装置执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种CODESYS运行时软件的移植方法,用于将CODESYS运行时软件移植到Xenomai框架下的系统,其特征在于,包括:
调用本地编译器,获取预先编的Makefile脚本中的特定宏定义,所述特定宏定义定义了CODESYS运行时软件的COBALT内核代码和符号包装在Xenomai框架下的系统生效;
基于Makefile脚本内的编译参数,获取libcobalt库头文件和Xenomai头文件,所述编译参数包括libcobalt库头文件路径和Xenomai头文件路径;
查找出Makefile脚本所在路径下指定格式的源代码文件,并基于所述libcobalt库头文件和所述Xenomai头文件将所述指定格式的源代码文件转换为二进制目标文件,所述指定格式包括.c格式和.cpp格式;
获取所述CODESYS运行时软件的静态库文件;
获取所述CODESYS运行时软件的实时相关库libcobalt及内存管理库的存储路径,以便本地链接器获取所述实时相关库libcobalt的库文件和所述内存管理库的库文件,所述内存管理库用于内存管理,所述实时相关库libcobalt用于实现COBALT内核的系统调用;
传入符号包装规则文件路径,以便本地链接器获取符号包装规则文件中的符号包装规则以对所述CODESYS运行时软件中引用的POSIX接口进行包装;
向本地链接器传入主函数的包装参数,以用于实现所述CODESYS运行时软件包装后的主函数;
通过本地链接器将所述二进制目标文件、所述静态库文件、所述实时相关库libcobalt的库文件和所述内存管理库的库文件进行链接,得到可在Xenomai框架下执行的目标文件。
2.根据权利要求1所述的方法,其特征在于,在调用本地编译器之前,所述方法还包括:
加载预先编写好的所述Makefile脚本并搜索所述本地编译器。
3.根据权利要求1所述的方法,其特征在于,所述基于Makefile脚本内的编译参数,获取libcobalt库头文件和Xenomai头文件,包括:
将所述Makefile脚本内的编译参数传入所述本地编译器;
基于所述编译参数中的libcobalt库头文件路径和Xenomai头文件路径,通过所述本地编译器查找出所述libcobalt库头文件和所述Xenomai头文件。
4.根据权利要求1所述的方法,其特征在于,在将所述指定格式的源代码文件转换为二进制目标文件之后,所述方法还包括:
将所述二进制目标文件的路径传入所述本地链接器。
5.根据权利要求1所述的方法,其特征在于,所述获取所述CODESYS运行时软件的静态库文件,包括:
将所述静态库文件的文件路径传入所述本地链接器;
通过所述本地链接器依据所述文件路径查找到所述静态库文件。
6.根据权利要求1所述的方法,其特征在于,所述向本地链接器传入主函数的包装参数,包括:
向本地链接器传入初始化模块参数,所述初始化模块参数中包括用于实现所述CODESYS运行时软件包装后的主函数的指定文件的文件路径;
基于所述指定文件的文件路径获取所述指定文件;
通过Makefile脚本将所述指定文件中的用于包装主函数的主函数包装参数传入所述本地链接器。
7.根据权利要求1所述的方法,其特征在于,所述符号包装规则文件包括cobalt.wrappers文件和modechk.wrappers文件。
8.一种CODESYS运行时软件的移植装置,用于将CODESYS运行时软件移植到Xenomai框架下的系统,其特征在于,包括:
第一获取单元,用于调用本地编译器,获取预先编的Makefile脚本中的特定宏定义,所述特定宏定义定义了CODESYS运行时软件的COBALT内核代码和符号包装在Xenomai框架下的系统生效;
第二获取单元,用于基于Makefile脚本内的编译参数,获取libcobalt库头文件和Xenomai头文件,所述编译参数包括libcobalt库头文件路径和Xenomai头文件路径;
查找转换单元,用于查找出Makefile脚本所在路径下指定格式的源代码文件,并基于所述libcobalt库头文件和所述Xenomai头文件将所述指定格式的源代码文件转换为二进制目标文件,所述指定格式包括.c格式和.cpp格式;
第三获取单元,用于获取所述CODESYS运行时软件的静态库文件;
第四获取单元,用于获取所述CODESYS运行时软件的实时相关库libcobalt及内存管理库的存储路径,以便本地链接器获取所述实时相关库libcobalt的库文件和所述内存管理库的库文件,所述内存管理库用于内存管理,所述实时相关库libcobalt用于实现COBALT内核的系统调用;
第一传入单元,用于传入符号包装规则文件路径,以便本地链接器获取符号包装规则文件中的符号包装规则以对所述CODESYS运行时软件中引用的POSIX接口进行包装;
第二传入单元,用于向本地链接器传入主函数的包装参数,以用于实现所述CODESYS运行时软件包装后的主函数;
链接单元,用于通过本地链接器将所述二进制目标文件、所述静态库文件、所述实时相关库libcobalt的库文件和所述内存管理库的库文件进行链接,得到可在Xenomai框架下执行的目标文件。
9.一种CODESYS运行时软件的移植装置,其特征在于,包括依次通信相连的存储器、处理器和收发器,其中,所述存储器用于存储计算机程序,所述收发器用于收发消息,所述处理器用于读取所述计算机程序,执行如权利要求1~7任意一项所述的CODESYS运行时软件的移植方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,执行如权利要求1~7任意一项所述的CODESYS运行时软件的移植方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211371171.6A CN115878178A (zh) | 2022-11-03 | 2022-11-03 | Codesys运行时软件的移植方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211371171.6A CN115878178A (zh) | 2022-11-03 | 2022-11-03 | Codesys运行时软件的移植方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115878178A true CN115878178A (zh) | 2023-03-31 |
Family
ID=85759391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211371171.6A Pending CN115878178A (zh) | 2022-11-03 | 2022-11-03 | Codesys运行时软件的移植方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115878178A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116243971A (zh) * | 2023-05-10 | 2023-06-09 | 北京麟卓信息科技有限公司 | 一种基于静态依赖自举的内核无关的模块构建方法 |
CN116775038A (zh) * | 2023-06-26 | 2023-09-19 | 国电南京自动化股份有限公司 | 支持iec和c++任务同时或独立运行的运行时系统 |
CN117251205A (zh) * | 2023-11-16 | 2023-12-19 | 沐曦集成电路(杭州)有限公司 | 一种头文件的处理方法、装置、设备及介质 |
CN116775038B (zh) * | 2023-06-26 | 2024-06-04 | 国电南京自动化股份有限公司 | 支持iec和c++任务同时或独立运行的运行时系统 |
-
2022
- 2022-11-03 CN CN202211371171.6A patent/CN115878178A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116243971A (zh) * | 2023-05-10 | 2023-06-09 | 北京麟卓信息科技有限公司 | 一种基于静态依赖自举的内核无关的模块构建方法 |
CN116775038A (zh) * | 2023-06-26 | 2023-09-19 | 国电南京自动化股份有限公司 | 支持iec和c++任务同时或独立运行的运行时系统 |
CN116775038B (zh) * | 2023-06-26 | 2024-06-04 | 国电南京自动化股份有限公司 | 支持iec和c++任务同时或独立运行的运行时系统 |
CN117251205A (zh) * | 2023-11-16 | 2023-12-19 | 沐曦集成电路(杭州)有限公司 | 一种头文件的处理方法、装置、设备及介质 |
CN117251205B (zh) * | 2023-11-16 | 2024-02-06 | 沐曦集成电路(杭州)有限公司 | 一种头文件的处理方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115878178A (zh) | Codesys运行时软件的移植方法、装置及存储介质 | |
CN106569869A (zh) | 插件化打包方法及装置 | |
CN111359219B (zh) | 虚幻引擎的文件处理方法、装置、设备及存储介质 | |
CN102722370A (zh) | Android模块化开发方法 | |
CN101937356B (zh) | 一种编译WebKit浏览器的方法及装置 | |
CN103838572A (zh) | 一种安卓开发包的打包系统和方法 | |
CN108647032B (zh) | 应用加载方法及装置、计算机装置和计算机可读存储介质 | |
CN111324359A (zh) | 插件部署方法及装置 | |
CN107463422A (zh) | 代码部署方法及装置、电子设备 | |
CN111651219A (zh) | 一种多模块项目配置文件管理的方法及设备 | |
CN111158690A (zh) | 桌面应用框架、构建方法、桌面应用运行方法及存储介质 | |
US20130185626A1 (en) | METHOD, TERMINAL AND COMPUTER-READABLE RECORDING MEDIUM FOR COMPILING JAVASCRIPT INCLUDED IN WEB APPLICATION USING Ahead-Of-Time (AOT) | |
CN109558143A (zh) | 一种集群中部署应用的方法及装置 | |
CN110399384B (zh) | Udf适配方法、数据处理方法、设备及存储介质 | |
CN114327495A (zh) | 基于ast的异常捕获代码注入方法、装置及其应用 | |
CN112181440A (zh) | 在服务器部署ios安装包的方法、装置及存储介质 | |
CN112835587A (zh) | 一种编译集成方法及装置 | |
CN107315596A (zh) | 一种代码自动打包部署方法和装置 | |
CN115658140A (zh) | 一种sdk的打包方法、装置、终端以及存储介质 | |
CN111399896B (zh) | 补丁获取方法、装置、设备及存储介质 | |
CN114201174A (zh) | 混合移动应用的构建方法、装置、电子设备及存储介质 | |
CN110007937B (zh) | 一种系统更新的方法和系统 | |
CN114189745A (zh) | 一种机顶盒软件切换管理方法、系统及计算机装置 | |
CN113434154A (zh) | 安卓应用程序打包方法、装置、存储介质及电子装置 | |
CN110704124A (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 |