[发明专利]一种程序动态加载方法、装置及存储介质有效
申请号: | 202010221160.4 | 申请日: | 2020-03-26 |
公开(公告)号: | CN111124550B | 公开(公告)日: | 2020-07-03 |
发明(设计)人: | 韩辉 | 申请(专利权)人: | 北京翼辉信息技术有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445;G06F8/41 |
代理公司: | 北京智乾知识产权代理事务所(普通合伙) 11552 | 代理人: | 邓大为 |
地址: | 100095 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 程序 动态 加载 方法 装置 存储 介质 | ||
本发明提供了一种程序动态加载方法、装置及存储介质,该方法包括:编译步骤,采用编译参数将源代码编译为地址无关的程序文件;重定位预处理步骤,在编译完成后对所述程序文件根据重定位项类型进行计算出重定位地址和需要填写到重定位地址的逻辑地址,预处理完成后的程序文件可下载到FLASH任意位置;加载步骤,基于计算出的所述重定位地址和需要填写到重定位地址的逻辑地址加载程序运行需要的数据,直接在FLASH中运行所述程序文件。本方法避免了APP文件由FLASH拷贝到RAM的过程,提高应用启动速度,缩减了程序体积,且不限定应用启动地址、不限制应用存放地址,实现了APP在FLASH上直接运行,适于在MCU等小型设备上运行,且支持调试动态装载的APP。
技术领域
本发明涉及计算机程序编译技术领域,特别是一种程序动态加载方法、装置及存储介质。
背景技术
现有操作系统动态装载应用程序的技术方案有主要有两种:
第一种,采用整体加载的方式:首先编译链接出运行地址固定的应用程序;然后在动态装载应用程序时,将应用程序可执行文件整体拷贝到指定地址的内存区;最后再从内存里执行程序代码。
第二种,采用动态连接文件方式:首先使用gcc -shared -fPIC编译地址无关代码;然后在动态装到0x00000000地址;在运行时,采用PC + 偏移量获取模块内部数据,以及PC + 偏移量得到GOT表地址,再GOT表中获取模块间数据和代码地址。
现有技术中的缺陷主要有:
第一种方式中,由于装载过程需要将APP可执行文件复制一份到RAM,装载速度较慢。第二种方式中,代码段和数据段必须做为一个整体加载到内存并进行重定位,由于需要将APP可执行文件复制到RAM中执行,在RAM紧缺的MCU上,无法装载较复杂的APP,当APP可执行文件较大时,受制于内存限制,无法实现动态装载,原有ELF文件中存在多种重定位方法,加载器需要根据不同的方法,进行对应的查找和运算,进而在修改内存中对应地址的数据,重定位效率较低,此外,由于编译生成的ELF文件中存在大量的运行时无关信息,部分为加载相关数据,部分为调试相关数据,导致ELF体积较大,占用了大量FLASH空间。
发明内容
本发明针对上述现有技术中的缺陷,提出了如下技术方案。
一种程序动态加载方法,该方法包括:
编译步骤,采用编译参数将源代码编译为地址无关的程序文件;
重定位预处理步骤,对所述程序文件根据重定位项类型进行计算得出重定位地址和需要填写到重定位地址的逻辑地址;
加载步骤,将重定位预处理的程序文件下载到FLASH后,基于所述计算出的重定位地址和需要填写到重定位地址的逻辑地址加载程序运行需要的数据,直接在FLASH中运行所述程序文件。
重定位预处理步骤更进一步地,所述采用编译参数将源代码编译为地址无关的程序文件的操作为:将编译器的编译参数设置为:-fPIC 和-mno-pic-data-is-text-relative -msingle-pic-base -mpic-register=9,-fPIC用于生成位置无关的编译代码,-mno-pic-data-is-text-relative -msingle-pic-base -mpic-register=9用于生成代码段与数据段分离的代码,并指定R9寄存器为代码段寄存器,其中所述程序文件包括相分离的代码段和数据段,且在编译后将调用elf2app工具将将数据段的变量访问指令修改成R9+偏移方式,所述elf2app识别不同的变量访问指令以及跳转指令,根据变量访问指令以及跳转指令的结构计算出目标地址,并根据所述目标地址生成通过R9寄存器访问的相应指令以替换现有的相应指令。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京翼辉信息技术有限公司,未经北京翼辉信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010221160.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种基于5G物联网的医院楼宇防疫系统
- 下一篇:数字签名方法、设备和存储介质