[发明专利]一种嵌入式环境下程序扩展的方法及系统有效
| 申请号: | 201910896537.3 | 申请日: | 2019-09-20 | 
| 公开(公告)号: | CN110659088B | 公开(公告)日: | 2022-11-25 | 
| 发明(设计)人: | 朱林;王薇;杨大胜;王海南;喻文星;刘勇 | 申请(专利权)人: | 浙江杰芯科技有限公司;浙江国利信安科技有限公司 | 
| 主分类号: | G06F9/448 | 分类号: | G06F9/448;G06F8/41 | 
| 代理公司: | 上海汉声知识产权代理有限公司 31236 | 代理人: | 胡晶 | 
| 地址: | 310053 浙江省*** | 国省代码: | 浙江;33 | 
| 权利要求书: | 查看更多 | 说明书: | 查看更多 | 
| 摘要: | |||
| 搜索关键词: | 一种 嵌入式 环境 程序 扩展 方法 系统 | ||
本发明提供了一种嵌入式环境下程序扩展的方法及系统,所述方法包括以下步骤:S1:在上位机编写扩展程序时,选择该扩展程序需要使用到相关库函数;S2:上位机从下位机查询获得相关库函数在该下位机中的绝对入口地址;S3:扩展程序引用相关库函数的绝对入口地址,上位机对扩展程序进行编译,生成BIN格式可执行文件;S4:上位机将BIN格式可执行文件以通讯的方式下发到下位机,下位机在收到扩展程序可执行文件后,完成扩展程序的固化存储,并将扩展程序拷贝到其预定的物理内存区间;S5:下位机对扩展程序的BIN格式可执行文件进行连接加载,运行扩展程序,当遇到所调用的相关库函数时,根据相关库函数的绝对入口地址直接调用执行。
技术领域
本发明涉及计算机技术领域,特别涉及一种嵌入式环境下程序扩展的方法及系统。
背景技术
组态编程软件用于工业自动化控制领域的数据采集、监视控制与过程控制,用户可通过组态编程软件编写控制逻辑组态程序(以下称为组态程序)和对下位机控制器运行时环境的功能扩展程序(以下称为扩展程序),下载到控制器,由控制器来实现所需的控制功能。在使用组态编程软件对控制器进行功能程序扩展时,扩展程序可能会涉及到对控制器中已有库函数的调用,但由于组态编程软件与控制器属于各自独立的软件系统,组态编程软件通常不包含控制器中的库函数代码或者存储库函数在控制器可执行映像中的实际地址,无法直接对控制器中的库函数进行正常的使用,针对此问题,可参考的方法包括静态链接和动态链接两种。
静态链接方法,预先将控制器中可能被扩展程序使用的库函数编译成多个独立的目标文件,并关联到组态编程软件中,扩展程序调用所需的库函数,编译时将库函数所在的目标文件链接到最终生成的BIN格式可执行文件中,如果有多个扩展程序都调用了相同的库函数,则需要将库函数所在的目标文件链接到每一个扩展程序的BIN格式可执行文件中,最终下载到控制器。此方法生成的BIN格式可执行文件由于包含了库函数的实际代码,相应的增加了文件的大小。小型或者微型控制器的内存资源十分有限,通过这种静态链接方法生成的可执行文件会浪费其本就紧缺的内存资源。另外,控制器中原本存储着的库函数的实际代码也未被充分利用,当多个扩展程序的BIN格式可执行文件下载到控制器后,控制器内相当于存储了多份功能相同的函数代码。
动态链接方法,需要将待链接的程序编译成可重定位ELF格式文件,保存在控制器持久存储介质中,控制器运行待链接的程序时,内核程序需要读取并加载ELF文件,执行符号重定位。ELF文件内的程序被映射到控制器可执行映像地址空间内,可被控制器运行时程序调用。动态链接方法增加控制器内核程序的复杂度,增大了系统开销。尽管采用了地址空间映射方式,控制器内存中仍然存留了一份冗余的库函数代码。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种嵌入式环境下程序扩展的方法及系统,其技术方案如下:
一种嵌入式环境下程序扩展的方法,包括以下步骤:
S1:在上位机编写扩展程序时,从已知的下位机库函数列表中选择该扩展程序需要使用到相关库函数;所述相关库函数是指:从已知的下位机库函数列表中选择的该扩展程序需要使用到的一个或多个库函数;
S2:上位机对下位机发起通讯,从下位机查询获得相关库函数在该下位机中的绝对入口地址;
S3:扩展程序以函数指针方式引用相关库函数的绝对入口地址,上位机对扩展程序进行编译,生成扩展程序的B1N格式可执行文件;
S4:上位机将扩展程序的BIN格式可执行文件以通讯的方式下发到下位机,下位机在收到扩展程序可执行文件后,完成扩展程序的固化存储,并将扩展程序拷贝到其预定的物理内存区间;
S5:下位机对扩展程序的BIN格式可执行文件进行连接加载,运行扩展程序,当遇到所调用的相关库函数时,根据扩展程序内已编译的相关库函数的绝对入口地址直接调用执行。
可选地,所述步骤S1还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江杰芯科技有限公司;浙江国利信安科技有限公司,未经浙江杰芯科技有限公司;浙江国利信安科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910896537.3/2.html,转载请声明来源钻瓜专利网。





