CODESYS运行时软件的移植方法、装置及存储介质制造方法及图纸

技术编号:37114134 阅读:10 留言:0更新日期:2023-04-01 05:10
本发明专利技术公开了CODESYS运行时软件的移植方法、装置及存储介质,涉及软件移植技术领域。该方法包括获取Makefile脚本中的特定宏定义;基于Makefile脚本内的编译参数,获取libcobalt库头文件和Xenomai头文件;查找出Makefile脚本所在路径下指定格式的源代码文件,基于libcobalt库头文件和Xenomai头文件将指定格式的源代码文件转换为二进制目标文件;获取静态库文件;获取实时相关库libcobalt的库文件及内存管理库的库文件;向本地链接器传入主函数的包装参数;通过本地链接器将二进制目标文件、静态库文件、实时相关库libcobalt的库文件和内存管理库的库文件进行链接,得到可在Xenomai框架下执行的目标文件。本发明专利技术公开的方法、装置及存储介质可将CODESYS运行时软件移植到Xenomai框架下的系统。移植到Xenomai框架下的系统。移植到Xenomai框架下的系统。

【技术实现步骤摘要】
CODESYS运行时软件的移植方法、装置及存储介质


[0001]本专利技术属于软件移植
,具体涉及一种CODESYS运行时软件的移植方法、装置及存储介质。

技术介绍

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

技术实现思路

[0005]本专利技术的目的是提供一种CODESYS运行时软件的移植方法、装置及存储介质,用以解决现有技术中存在的上述问题。
[0006]为了实现上述目的,本专利技术采用以下技术方案:
[0007]第一方面,本专利技术提供了一种CODESYS运行时软件的移植方法,用于将CODESYS运行时软件移植到Xenomai框架下的系统,该方法包括:
[0008]调用本地编译器,获取预先编的Makefile脚本中的特定宏定义,所述特定宏定义定义了CODESYS运行时软件的COBALT内核代码和符号包装在Xenomai框架下的系统生效;
[0009]基于Makefile脚本内的编译参数,获取libcobalt库头文件和Xenomai头文件,所述编译参数包括libcobalt库头文件路径和Xenomai头文件路径;
[0010]查找出Makefile脚本所在路径下指定格式的源代码文件,并基于所述libcobalt库头文件和所述Xenomai头文件将所述指定格式的源代码文件转换为二进制目标文件,所述指定格式包括.c格式和.cpp格式;
[0011]获取所述CODESYS运行时软件的静态库文件;
[0012]获取所述CODESYS运行时软件的实时相关库libcobalt及内存管理库的存储路径,以便本地链接器获取所述实时相关库libcobalt的库文件和所述内存管理库的库文件,所述内存管理库用于内存管理,所述实时相关库libcobalt用于实现COBALT内核的系统调用;
[0013]传入符号包装规则文件路径,以便本地链接器获取符号包装规则文件中的符号包装规则以对所述CODESYS运行时软件中引用的POSIX接口进行包装;
[0014]向本地链接器传入主函数的包装参数,以用于实现所述CODESYS运行时软件包装后的主函数;
[0015]通过本地链接器将所述二进制目标文件、所述静态库文件、所述实时相关库libcobalt的库文件和所述内存管理库的库文件进行链接,得到可在Xenomai框架下执行的目标文件。
[0016]基于上述公开的内容,本专利技术通过获取预先编的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运行时软件的广泛推广和使用。
[0017]在一个可能的设计中,在调用本地编译器之前,所述方法还包括:
[0018]加载预先编写好的所述Makefile脚本并搜索所述本地编译器。
[0019]在一个可能的设计中,所述基于Makefile脚本内的编译参数,获取libcobalt库头文件和Xenomai头文件,包括:
[0020]将所述Makefile脚本内的编译参数传入所述本地编译器;
[0021]基于所述编译参数中的libcobalt库头文件路径和Xenomai头文件路径,通过所述本地编译器查找出所述libcobalt库头文件和所述Xenomai头文件。
[0022]在一个可能的设计中,在将所述指定格式的源代码文件转换为二进制目标文件之后,所述方法还包括:
[0023]将所述二进制目标文件的路径传入所述本地链接器。
[0024]在一个可能的设计中,所述获取所述CODESYS运行时软件的静态库文件,包括:
[0025]将所述静态库文件的文件路径传入所述本地链接器;
[0026]通过所述本地链接器依据所述文件路径查找到所述静态库文件。
[0027]在一个可能的设计中,所述向本地链接器传入主函数的包装参数,包括:
[0028]向本地链接器传入初始化模块参数,所述初始化模块参数中包括用于实现所述CODESYS运行时软件包装后的主函数的指定文件的文件路径;
[0029]基于所述指定文件的文件路径获取所述指定文件;
[0030]通过Makefile脚本将所述指定文件中的用于包装主函数的主函数包装参数传入所述本地链接器。
[0031]在一个可能的设计中,所述符号包装规则文件包本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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所述的方法,其特征在于,所述向本地链接器传入主函数的包装参数,包括:向本地链接器传入初始化模块参数...

【专利技术属性】
技术研发人员:宋健玮李胤颉马君韩银和
申请(专利权)人:中科时代深圳计算机系统有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1