[发明专利]一种用于资源受限平台的应用重定位方法在审
申请号: | 202010834639.5 | 申请日: | 2020-08-18 |
公开(公告)号: | CN111984411A | 公开(公告)日: | 2020-11-24 |
发明(设计)人: | 郭占鑫;张俊;陈庭伟 | 申请(专利权)人: | 上海睿赛德电子科技有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 成都顶峰专利事务所(普通合伙) 51224 | 代理人: | 匡睿 |
地址: | 200000 上海市浦东新区中国*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 用于 资源 受限 平台 应用 定位 方法 | ||
本发明提供一种用于资源受限平台的应用重定位方法,用于解决当前应用加载ELF文件,占用资源多,系统加载应用操作复杂的问题。主要包括:TEXT单元;REL表单元;GOT表单元;DATA单元;重定位单元;采用本发明提供的一种用于资源受限平台的应用重定位方法,可以使得系统加载应用变得简单,应用不需要存储供系统重定位使用的冗余数据,进而减少了应用的体积,达到减少系统资源占用的目的,使得同等资源条件的嵌入式系统可以同时运行更多的应用。
技术领域
本公开涉及嵌入式领域和实时操作系统领域,具体而言是指涉及一种用于资源受限平台的应用重定位方法。
背景技术
传统的应用重定位方法,都是基于解析ELF文件,并将其安装一定的格式,由系统加载到内存中运行的。要实现这种方式的重定位,需要保证ELF中一定要保留足够的信息,能够让系统从中找到需要的信息,如:程序入口、数据段起始地址等。这样也就意味着ELF文件势必会比可执行镜像文件BIN大很多,造成资源的浪费。
但是,如果我们可以通过某种方法,将应用地址的重定位移到应用内部,让应用在启动的时候,根据本身所处位置,动态的完成自身数据地址的重定位。通过这样的机制,应用将被允许编译成一个可执行的镜像文件BIN,因为,通过这种机制,系统在加载应用时就不需要解析应用了,只要分配好资源之后跳转到应用就可以了。这就降低了系统加载应用的难度,而且,通过这种方式应用文件也不需要保留本该包含在ELF文件中的字段,减少了应用的体积,达到减少系统资源占用的目的。
发明内容
本发明所要解决的技术问题在于提供一种用于资源受限平台的应用重定位方法,以解决现有嵌入式系统中使用ELF文件实现应用重定位占用系统资源高的问题。
本发明提供的一种用于资源受限平台的应用重定位方法,包括:
GOT表单元,其是用于存放全局数据地址偏移的数据表;
REL表单元,其用于存放需要重定位的数据所在的偏移;
DATA单元,其用于存放所有包含初值的数据。
TEXT单元,其用于存放所有可执行的代码。
重定位单元,其用于执行真正的数据地址重定位的工作。
进一步地,所述的GOT表单元属于RW段数据,在应用刚启动的时候,会被拷贝到RAM中。
进一步地,所述的RAM空间是系统加载应用前预分配好的,RAM空间的起始地址是加载应用时通过通用寄存器传递给应用的。
进一步地,所述的REL表单元属于RO段数据,其中存储了需要被重定位的数据对应的偏移。在应用刚启动的时候,REL表单元本身并不会被拷贝到RAM中,但其指向的需要重定位的数据会被搬运到RAM中。
进一步地,所述的DATA单元属于RW段数据,其中存储了所有包含初值的数据,包括REL表单元指向的需要重定位的数据。
进一步地,所述的TEXT单元属于RO段数据,存储应用所有的可执行代码,在程序安装的时候会被拷贝到Flash上,并且,本单元处于整个应用的空间排布的首部。
进一步地,所述的重定位单元是执行真正的重定位的代码,其包含在TEXT单元内,在应用执行完拷贝RW段数据的代码后,就会执行本重定位单元的代码。
进一步地,应用的实际运行地址是在完成应用加载进入应用运行空间之后,执行重定位单元之前通过伪指令ADR获得的。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海睿赛德电子科技有限公司,未经上海睿赛德电子科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010834639.5/2.html,转载请声明来源钻瓜专利网。