CODESYS运行时软件的移植方法、装置及存储介质与流程

文档序号:33709611发布日期:2023-03-31 23:08阅读:1033来源:国知局
CODESYS运行时软件的移植方法、装置及存储介质与流程
codesys运行时软件的移植方法、装置及存储介质
技术领域
1.本发明属于软件移植技术领域,具体涉及一种codesys运行时软件的移植方法、装置及存储介质。


背景技术:

2.codesys(controlled development system)是德国3s公司推出的一款付费的软plc开发软件,它包括用来编程的软件界面(development system,ide)和运行时软件(runtime system),二者安装的位置通常不同,ide一般安装在用户的开发计算机上,codesys运行时软件是个典型的实时应用程序,部署于起控制作用的硬件设备上。
3.目前,codesys运行时软件,其运行的环境仅限于标准的linux系统,而对于一些xenomai框架下的系统,codesys运行时软件则无法在其上运行,导致codesys运行时软件的使用场景受限,不利于codesys运行时软件的广泛推广和应用。
4.因此,如何提供一种有效的方案,以便codesys运行时软件能够应用在xenomai框架下的系统,已成为现有技术中一亟待解决的问题。


技术实现要素:

5.本发明的目的是提供一种codesys运行时软件的移植方法、装置及存储介质,用以解决现有技术中存在的上述问题。
6.为了实现上述目的,本发明采用以下技术方案:
7.第一方面,本发明提供了一种codesys运行时软件的移植方法,用于将codesys运行时软件移植到xenomai框架下的系统,该方法包括:
8.调用本地编译器,获取预先编的makefile脚本中的特定宏定义,所述特定宏定义定义了codesys运行时软件的cobalt内核代码和符号包装在xenomai框架下的系统生效;
9.基于makefile脚本内的编译参数,获取libcobalt库头文件和xenomai头文件,所述编译参数包括libcobalt库头文件路径和xenomai头文件路径;
10.查找出makefile脚本所在路径下指定格式的源代码文件,并基于所述libcobalt库头文件和所述xenomai头文件将所述指定格式的源代码文件转换为二进制目标文件,所述指定格式包括.c格式和.cpp格式;
11.获取所述codesys运行时软件的静态库文件;
12.获取所述codesys运行时软件的实时相关库libcobalt及内存管理库的存储路径,以便本地链接器获取所述实时相关库libcobalt的库文件和所述内存管理库的库文件,所述内存管理库用于内存管理,所述实时相关库libcobalt用于实现cobalt内核的系统调用;
13.传入符号包装规则文件路径,以便本地链接器获取符号包装规则文件中的符号包装规则以对所述codesys运行时软件中引用的posix接口进行包装;
14.向本地链接器传入主函数的包装参数,以用于实现所述codesys运行时软件包装后的主函数;
15.通过本地链接器将所述二进制目标文件、所述静态库文件、所述实时相关库libcobalt的库文件和所述内存管理库的库文件进行链接,得到可在xenomai框架下执行的目标文件。
16.基于上述公开的内容,本发明通过获取预先编的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运行时软件的广泛推广和使用。
17.在一个可能的设计中,在调用本地编译器之前,所述方法还包括:
18.加载预先编写好的所述makefile脚本并搜索所述本地编译器。
19.在一个可能的设计中,所述基于makefile脚本内的编译参数,获取libcobalt库头文件和xenomai头文件,包括:
20.将所述makefile脚本内的编译参数传入所述本地编译器;
21.基于所述编译参数中的libcobalt库头文件路径和xenomai头文件路径,通过所述本地编译器查找出所述libcobalt库头文件和所述xenomai头文件。
22.在一个可能的设计中,在将所述指定格式的源代码文件转换为二进制目标文件之后,所述方法还包括:
23.将所述二进制目标文件的路径传入所述本地链接器。
24.在一个可能的设计中,所述获取所述codesys运行时软件的静态库文件,包括:
25.将所述静态库文件的文件路径传入所述本地链接器;
26.通过所述本地链接器依据所述文件路径查找到所述静态库文件。
27.在一个可能的设计中,所述向本地链接器传入主函数的包装参数,包括:
28.向本地链接器传入初始化模块参数,所述初始化模块参数中包括用于实现所述codesys运行时软件包装后的主函数的指定文件的文件路径;
29.基于所述指定文件的文件路径获取所述指定文件;
30.通过makefile脚本将所述指定文件中的用于包装主函数的主函数包装参数传入所述本地链接器。
31.在一个可能的设计中,所述符号包装规则文件包括cobalt.wrappers文件和modechk.wrappers文件。
32.第二方面,本发明提供了一种codesys运行时软件的移植装置,用于将codesys运行时软件移植到xenomai框架下的系统,codesys运行时软件的移植装置包括:
33.第一获取单元,用于调用本地编译器,获取预先编的makefile脚本中的特定宏定义,所述特定宏定义定义了codesys运行时软件的cobalt内核代码和符号包装在xenomai框架下的系统生效;
34.第二获取单元,用于基于makefile脚本内的编译参数,获取libcobalt库头文件和xenomai头文件,所述编译参数包括libcobalt库头文件路径和xenomai头文件路径;
35.查找转换单元,用于查找出makefile脚本所在路径下指定格式的源代码文件,并基于所述libcobalt库头文件和所述xenomai头文件将所述指定格式的源代码文件转换为二进制目标文件,所述指定格式包括.c格式和.cpp格式;
36.第三获取单元,用于获取所述codesys运行时软件的静态库文件;
37.第四获取单元,用于获取所述codesys运行时软件的实时相关库libcobalt及内存管理库的存储路径,以便本地链接器获取所述实时相关库libcobalt的库文件和所述内存管理库的库文件,所述内存管理库用于内存管理,所述实时相关库libcobalt用于实现cobalt内核的系统调用;
38.第一传入单元,用于传入符号包装规则文件路径,以便本地链接器获取符号包装规则文件中的符号包装规则以对所述codesys运行时软件中引用的posix接口进行包装;
39.第二传入单元,用于向本地链接器传入主函数的包装参数,以用于实现所述codesys运行时软件包装后的主函数;
40.链接单元,用于通过本地链接器将所述二进制目标文件、所述静态库文件、所述实时相关库libcobalt的库文件和所述内存管理库的库文件进行链接,得到可在xenomai框架下执行的目标文件。
41.第三方面,本发明提供了一种codesys运行时软件的移植装置,包括依次通信相连的存储器、处理器和收发器,其中,所述存储器用于存储计算机程序,所述收发器用于收发消息,所述处理器用于读取所述计算机程序,执行如上述第一方面所述的codesys运行时软件的移植方法。
42.第四方面,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,执行第一方面所述的codesys运行时软件的移植方法。
43.第五方面,本发明提供了一种包含指令的计算机程序产品,当所述指令在计算机上运行时,使所述计算机执行如第一方面所述的codesys运行时软件的移植方法。
附图说明
44.图1为本技术实施例提供的codesys运行时软件的移植方法的流程图;
45.图2为本技术实施例提供的codesys运行时软件的移植装置的结构示意图;
46.图3为本技术实施例提供的另一codesys运行时软件的移植装置的结构示意图。
具体实施方式
47.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将结合附图和实施例或现有技术的描述对本发明作简单地介绍,显而易见地,下面关于附图结构的描述仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在此需要说明的是,对于这些实施例方式的说明用于帮助理解本发明,但并不构成对本发明的限定。
48.为了使codesys运行时软件可应用在xenomai框架下的系统,本技术实施例提供了一种codesys运行时软件的移植方法、装置及存储介质,该codesys运行时软件的移植方法、装置及存储介质可将codesys运行时软件移植到xenomai框架下的系统,拓展codesys运行时软件的应用场景,便于codesys运行时软件的广泛推广和使用。申请实施例提供的codesys运行时软件的移植方法可以应用于具有xenomai框架下的系统的硬件终端。
49.下面将对本技术实施例提供的codesys运行时软件的移植方法进行详细说明。
50.如图1所示,本实施例第一方面提供了一种codesys运行时软件的移植方法,用于将codesys运行时软件移植到xenomai框架下的系统,该codesys运行时软件的移植方法可以包括如下步骤。
51.步骤s101.调用本地编译器,获取预先编的makefile脚本中的特定宏定义。
52.本技术实施例中,预先编写用于将codesys运行时软件移植到xenomai框架下的系统的makefile脚本,makefile脚本中包括特定宏定义,所述特定宏定义定义了codesys运行时软件的cobalt内核代码和符号包装在xenomai框架下的系统生效。
53.在对codesys运行时软件进行移植过程中,可通过make工具加载该预先编写好的makefile脚本,并搜索本地编译器,然后调用本地编译器,通过本地编译器获取makefile脚本中的特定宏定义。其中,make工具为linux系统中的系统管理工具,主要用来管理c/c++项目,通过makefile脚本书写的规则来对项目中的源代码文件进行编译,生成可执行的程序。
54.步骤s102.基于makefile脚本内的编译参数,获取libcobalt库头文件和xenomai头文件。
55.其中,编译参数包括libcobalt库头文件路径和xenomai头文件路径。
56.具体的,可通过make工具将makefile脚本内的编译参数(即libcobalt库头文件路径和xenomai头文件路径)传入本地编译器,由本地编译器根据libcobalt库头文件路径和xenomai头文件路径找到libcobalt库头文件和xenomai头文件。
57.步骤s103.查找出makefile脚本所在路径下指定格式的源代码文件,并基于libcobalt库头文件和xenomai头文件将指定格式的源代码文件转换为二进制目标文件。
58.其中指定格式包括.c格式和.cpp格式。本技术实施例中,可通过make工具自动检查makefile脚本所在路径下.c格式和.cpp格式的(codesys运行时软件的)源代码文件。然后通过libcobalt库头文件和xenomai头文件将.c格式和.cpp格式的源代码文件转为二进制目标文件,以便用于后续的链接。
59.步骤s104.获取codesys运行时软件的静态库文件。
60.本技术实施例中,可通过make工具自动搜索本地链接器(链接器是一个程序,其用
于将一个或多个由编译器或汇编器生成的目标文件外加库链接为一个可执行文件)。
61.在获取codesys运行时软件的静态库文件时,可以通过make工具将静态库文件的文件路径传入所述本地链接器,然后由本地链接器依据静态库文件的文件路径查找到静态库文件。其中,静态库文件为codesys运行时软件中用来执行业务的内核文件,用来实现codesys运行时软件的业务功能。
62.本技术实施例中,在将所述指定格式的源代码文件转换为二进制目标文件之后,还可通过make工具将二进制目标文件的路径传入所述本地链接器,以便本地链接器获取二进制目标文件以用于后续的链接。
63.步骤s105.获取codesys运行时软件的实时相关库libcobalt及内存管理库的存储路径,以便本地链接器获取实时相关库libcobalt的库文件和内存管理库的库文件。
64.所述内存管理库用于内存管理,如实现可控动态内存的创建和回收,从而避免内存碎片。所述实时相关库libcobalt用于实现cobalt内核的系统调用。
65.本技术实施例中,可通过make工具自动为本地链接器传入实时相关库libcobalt及内存管理库的存储路径。本地链接器根据实时相关库libcobalt及内存管理库的存储路径获取实时相关库libcobalt的库文件和内存管理库的库文件。
66.步骤s106.传入符号包装规则文件路径,以便本地链接器获取符号包装规则文件中的符号包装规则以对codesys运行时软件中引用的posix接口进行包装。
67.符号包装规则文件可以包括但不限于cobalt.wrappers文件和modechk.wrappers文件。符号包装规则文件的路径可写在makefile脚本中,符号包装规则文件用于定义符号的包装规则,用来将codesys运行时软件中引用的posix接口的接口名包装成新的接口名,以便能在xenomai框架下的系统运行。
68.步骤s107.向本地链接器传入主函数的包装参数,以用于实现codesys运行时软件包装后的主函数。
69.具体的,所述步骤s107包括如下的步骤s1071-s1073。
70.步骤s1071.向获本地链接器传入初始化模块参数。
71.其中,所述初始化模块参数中包括用于实现所述codesys运行时软件包装后的主函数(main函数)的指定文件的文件路径。
72.步骤s1072.基于所述指定文件的文件路径获取所述指定文件。
73.步骤s1073.通过makefile脚本将所述指定文件中的用于包装主函数的主函数包装参数传入所述本地链接器。
74.步骤s108.通过本地链接器将二进制目标文件、静态库文件、实时相关库libcobalt的库文件和内存管理库的库文件进行链接,得到可在xenomai框架下执行的目标文件。
75.本地链接器可用于将一个或多个由编译器或汇编器生成的目标文件外加库链接为一个可执行文件,通过本地链接器将多个文件链接成可执行文件的过程为现有技术,本技术实施例中不再详细说明。
76.本技术实施例提供的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运行时软件的广泛推广和使用。
77.第二方面,请参阅图2,本技术实施例提供了一种codesys运行时软件的移植装置,用于将codesys运行时软件移植到xenomai框架下的系统,该codesys运行时软件的移植装置包括:
78.第一获取单元,用于调用本地编译器,获取预先编的makefile脚本中的特定宏定义,所述特定宏定义定义了codesys运行时软件的cobalt内核代码和符号包装在xenomai框架下的系统生效;
79.第二获取单元,用于基于makefile脚本内的编译参数,获取libcobalt库头文件和xenomai头文件,所述编译参数包括libcobalt库头文件路径和xenomai头文件路径;
80.查找转换单元,用于查找出makefile脚本所在路径下指定格式的源代码文件,并基于所述libcobalt库头文件和所述xenomai头文件将所述指定格式的源代码文件转换为二进制目标文件,所述指定格式包括.c格式和.cpp格式;
81.第三获取单元,用于获取所述codesys运行时软件的静态库文件;
82.第四获取单元,用于获取所述codesys运行时软件的实时相关库libcobalt及内存管理库的存储路径,以便本地链接器获取所述实时相关库libcobalt的库文件和所述内存管理库的库文件,所述内存管理库用于内存管理,所述实时相关库libcobalt用于实现cobalt内核的系统调用;
83.第一传入单元,用于传入符号包装规则文件路径,以便本地链接器获取符号包装规则文件中的符号包装规则以对所述codesys运行时软件中引用的posix接口进行包装;
84.第二传入单元,用于向本地链接器传入主函数的包装参数,以用于实现所述codesys运行时软件包装后的主函数;
85.链接单元,用于通过本地链接器将所述二进制目标文件、所述静态库文件、所述实时相关库libcobalt的库文件和所述内存管理库的库文件进行链接,得到可在xenomai框架
下执行的目标文件。
86.本实施例第二方面提供的装置的工作过程、工作细节和技术效果,可以参见实施例第一方面,于此不再赘述。
87.如图3所示,本技术实施例第三方面提供了一种codesys运行时软件的移植装置,包括依次通信相连的存储器、处理器和收发器,其中,所述存储器用于存储计算机程序,所述收发器用于收发消息,所述处理器用于读取所述计算机程序,执行如实施例第一方面所述的codesys运行时软件的移植方法。
88.具体举例的,所述存储器可以但不限于包括随机存取存储器(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收发器等。
89.本实施例第三方面提供的装置的工作过程、工作细节和技术效果,可以参见实施例第一方面,于此不再赘述。
90.本实施例第四方面提供了一种存储包含有实施例第一方面所述的codesys运行时软件的移植方法的指令的计算机可读存储介质,即所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,执行如第一方面所述的codesys运行时软件的移植方法。其中,所述计算机可读存储介质是指存储数据的载体,可以但不限于包括软盘、光盘、硬盘、闪存、优盘和/或记忆棒(memory stick)等,所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。
91.本实施例第四方面提供的计算机可读存储介质的工作过程、工作细节和技术效果,可以参见实施例第一方面,于此不再赘述。
92.本实施例第五方面提供了一种包含指令的计算机程序产品,当所述指令在计算机上运行时,使所述计算机执行如实施例第一方面所述的codesys运行时软件的移植方法,其中,所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。
93.以上所描述的多个实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
94.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台仓库代码的合并装置执行各个实施例或者实施例的某些部分所述的方法。
95.最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含
在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1