应用加载方法和装置的制造方法

文档序号:9667175阅读:330来源:国知局
应用加载方法和装置的制造方法
【技术领域】
[0001]本申请涉及计算机领域,具体涉及应用领域,尤其涉及应用加载方法和装置。
【背景技术】
[0002]在嵌入式系统中,在对应用进行加载时,通常采用的方式为:在闪存中存储可执行文件的二进制代码,并在闪存上直接运行指令。在应用加载过程中,需要对应用的汇编代码中的符号进行重定位,使得符号具有绝对地址,以对应用进行加载。
[0003]然而,当采用上述方式对应用进行加载时,每一次针对符号的重定位均会对应一次对该符号所在内存的整个存储块的擦除操作,进而极大地增加系统开销以及对增加闪存的损耗。

【发明内容】

[0004]本申请提供了应用加载方法和装置,用于解决上述【背景技术】部分存在的技术问题。
[0005]第一方面,本申请提供了应用加载方法,该方法包括:在可编程只读存储器中选取用于存储应用的可执行文件中的预设数据段的存储空间,其中,预设数据段为应用被加载时,被加载在可编程只读存储器中执行的数据段;将预设数据段拷贝至内存,以及基于存储空间的起始地址对预设数据段进行重定位;将经重定位的预设数据段拷贝至存储空间,以对应用进行加载。
[0006]第二方面,本申请提供了应用加载装置,该装置包括:选取单元,配置用于在可编程只读存储器中选取用于存储应用的可执行文件中的预设数据段的存储空间,其中,预设数据段为应用被加载时,被加载在可编程只读存储器中执行的数据段;重定位单元,配置用于将预设数据段拷贝至内存,以及基于存储空间的起始地址对预设数据段进行重定位;加载单元,配置用于将经重定位的预设数据段拷贝至存储空间,以对应用进行加载。
[0007]本申请提供的应用加载方法和装置,通过在可编程只读存储器中选取用于存储应用的可执行文件中的预设数据段的存储空间;将预设数据段拷贝至内存,以及基于存储空间的起始地址对预设数据段进行重定位;将经重定位的预设数据段拷贝至存储空间。实现了在内存中对可执行文件的代码部分进行重定位,然后将重定位后的代码部分写回到可编程只读存储器中,从而仅需一次针对存储块的擦除操作即可完成代码部分的重定位,减少了应用的加载过程中的系统开销以及降低对可编程只读存储器的损耗。
【附图说明】
[0008]通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
[0009]图1是本申请可以应用于其中的示例性系统架构图;
[0010]图2示出了根据本申请的应用加载方法的一个实施例的流程图;
[0011]图3示出了本实施例中的对应用进行加载的一个示例性原理图;
[0012]图4示出了本申请中的应用加载方法的一个示例性流程图;
[0013]图5示出了根据本申请的应用加载装置的一个实施例的结构示意图;
[0014]图6是适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。
【具体实施方式】
[0015]下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
[0016]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
[0017]图1示出了可以应用本申请的应用加载方法或应用加载装置的实施例的示例性系统架构100。
[0018]如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供传输链路的介质。网络104可以包括各种连接类型,例如有线、无线传输链路或者光纤电缆等等。
[0019]用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯应用,例如网络安全类应用、SP时通信工具等。
[0020]终端设备101、102、103可以是具有显示屏并且支持网络通信的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture ExpertsGroup Aud1 Layer III,动态影像专家压缩标准音频层面3)、MP4 (Moving PictureExperts Group Aud1 Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
[0021]服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上的应用提供数据支持的服务器。服务器105可以接收到终端设备101、102、103发送的查询请求,并对查询请求进行处理。并将处理结果(应用的可执行文件的重定位信息)反馈给终端设备。
[0022]应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
[0023]请参考图2,其示出了根据本申请的应用加载方法的一个实施例的流程200。本实施例所提供的应用加载方法可以由图1中的终端设备101、102、103执行。该方法包括以下步骤:
[0024]步骤201,在可编程只读存储器中选取用于存储应用的可执行文件中的预设数据段的存储空间。
[0025]在本实施例中,应用的可执行文件可以存储在可编程只读存储器中。可执行文件包含多个数据段,当应用加载时,即应用的可执行文件加载时,预设数据段为被加载在可编程只读存储器中执行的数据段。在本实施例中,可以在可编程只读存储器中选取用于存储预设数据段的存储空间,该存储空间用于存储经重定位后的预设数据段。
[0026]在本实施例的一些可选的实现方式中,可编程只读存储器为闪存存储器。在本实施例中,应用的可执行文件可以存储在闪存存储器中,可以预先在闪存存储器中选取用于存储重定位后的预设数据段的存储空间。
[0027]步骤202,将预设数据段拷贝至内存,以及基于存储空间的起始地址对预设数据段进行重定位。
[0028]在本实施例中,在应用加载时,可以首先将预设数据段拷贝至内存,然后,可以基于在可编程只读存储器中预先选取的存储空间的起始地址对该预设数据段进行重定位,即确定预设数据段中的符号的加载地址。
[0029]下面首先以汇编指令jmp exp和exp:push为例,说明重定位的原理:汇编指令exp:push表示符号exp对应的地址上存储有入桟指令即push指令。汇编指令jmp exp的作用为跳转到符号exp对应的地址,执行该地址上的入栈指令。假设,符号exp在编译时的编译地址为1000h,在对汇编指令进行编译之后,则jmp exp被转换为jmp 1000h。在应用加载时,由于汇编指令在编译时统一采用地址0作为起始地址进行编译,而在加载时则可能被加载在任意的位置运行,因此,需要对符号进行重定位即重新确定汇编指令中的符号对应的加载地址(也可称之为绝对地址),并且将汇编指令中的符号即exp符号对应的地址修改为确定出的加载地址,从而执行该指令。
[0030]在本实施例的一些可选的实现方式中,可执行文件为ELF文件,预设数据段包括:机器指令数据段、只读数据数据段;以及基于存储空间的起始地址对预设数据段进行重定位包括:在ELF文件的机器指令
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1