,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
[0062]附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0063]作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:在可编程只读存储器中选取用于存储应用的可执行文件中的预设数据段的存储空间,其中,预设数据段为应用被加载时,被加载在所述可编程只读存储器中执行的数据段;将所述预设数据段拷贝至内存,以及基于所述存储空间的起始地址对所述预设数据段进行重定位;将经重定位的所述预设数据段拷贝至所述存储空间,以对应用进行加载。
[0064]以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
【主权项】
1.一种应用加载方法,其特征在于,所述方法包括: 在可编程只读存储器中选取用于存储应用的可执行文件中的预设数据段的存储空间,其中,预设数据段为应用被加载时,被加载在所述可编程只读存储器中执行的数据段; 将所述预设数据段拷贝至内存,以及基于所述存储空间的起始地址对所述预设数据段进行重定位; 将经重定位的所述预设数据段拷贝至所述存储空间,以对应用进行加载。2.根据权利要求1所述的方法,其特征在于,所述可编程只读存储器为闪存存储器。3.根据权利要求1-2之一所述的方法,其特征在于,所述可执行文件为ELF文件,所述预设数据段包括:机器指令数据段、只读数据数据段;以及 基于所述存储空间的起始地址对所述预设数据段进行重定位包括: 在所述ELF文件的机器指令地址偏移数据段中查找机器指令数据段中的机器指令的操作数对应的地址偏移量; 根据所述起始地址和所述地址偏移量,计算所述操作数对应的加载地址,以对机器指令数据段进行重定位; 在所述ELF文件的只读数据地址偏移数据段中查找只读数据数据段中的只读数据对应的地址偏移量; 根据所述起始地址和所述地址偏移量,计算所述只读数据对应的加载地址,以对只读数据数据段进行重定位。4.根据权利要求3所述的方法,其特征在于,所述方法还包括: 将所述ELF文件中的未初始化全局变量数据段和已初始化全局变量数据段拷贝至内存; 将未初始化全局变量数据段对应的存储空间中的存储值设置为0 ; 从所述ELF文件的已初始化全局变量地址偏移数据段中查找出已初始化全局变量数据段中的已初始化全局变量对应的地址偏移量; 根据已初始化全局变量数据段在内存中的起始地址以及所述地址偏移量,计算已初始化全局变量的加载地址,以对已初始化全局变量数据段进行重定位。5.根据权利要求4所述的方法,其特征在于,在将经重定位的所述预设数据段拷贝至所述存储空间之后,所述方法还包括: 在可编程只读存储器中存储所述存储空间的起始地址,以使得再次对应用进行加载时,利用所述起始地址查找出已存储在可编程只读存储器中的经重定位的预设数据段并对预设数据段进行加载。6.一种应用加载装置,其特征在于,所述装置包括: 选取单元,配置用于在可编程只读存储器中选取用于存储应用的可执行文件中的预设数据段的存储空间,其中,预设数据段为应用被加载时,被加载在所述可编程只读存储器中执行的数据段; 重定位单元,配置用于将所述预设数据段拷贝至内存,以及基于所述存储空间的起始地址对所述预设数据段进行重定位; 加载单元,配置用于将经重定位的所述预设数据段拷贝至所述存储空间,以对应用进行加载。7.根据权利要求6所述的装置,其特征在于,所述可编程只读存储器为闪存存储器。8.根据权利要求6-7之一所述的装置,其特征在于,所述重定位单元包括: 第一查找子单元,配置用于当所述可执行文件为ELF文件,所述预设数据段包括:机器指令数据段、只读数据数据段时,在所述ELF文件的机器指令地址偏移数据段中查找机器指令数据段中的机器指令的操作数对应的地址偏移量; 第一计算子单元,配置用于根据所述起始地址和所述地址偏移量,计算所述操作数对应的加载地址,以对机器指令数据段进行重定位; 第二查找子单元,配置用于在所述ELF文件的只读数据地址偏移数据段中查找只读数据数据段中的只读数据对应的地址偏移量; 第二计算子单元,配置用于根据所述起始地址和所述地址偏移量,计算所述只读数据对应的加载地址,以对只读数据数据段进行重定位。9.根据权利要求8所述的装置,其特征在于,所述装置还包括: 拷贝单元,配置用于将所述ELF文件中的未初始化全局变量数据段和已初始化全局变量数据段拷贝至内存; 设置单元,配置用于将未初始化全局变量数据段对应的存储空间中的存储值设置为0 ; 偏移量查找单元,配置用于从所述ELF文件的已初始化全局变量地址偏移数据段中查找出已初始化全局变量数据段中的已初始化全局变量对应的地址偏移量; 加载地址计算单元,配置用于根据已初始化全局变量数据段在内存中的起始地址以及所述地址偏移量,计算已初始化全局变量的加载地址,以对已初始化全局变量数据段进行重定位。10.根据权利要求9所述的装置,其特征在于,所述装置还包括: 存储单元,配置用于在将经重定位的所述预设数据段拷贝至所述存储空间之后,在可编程只读存储器中存储所述存储空间的起始地址,以使得再次对应用进行加载时,利用所述起始地址查找出已存储在可编程只读存储器中的经重定位的预设数据段并对预设数据段进行加载。
【专利摘要】本申请公开了应用加载方法和装置。该方法的一【具体实施方式】包括:在可编程只读存储器中选取用于存储应用的可执行文件中的预设数据段的存储空间;将预设数据段拷贝至内存,以及基于存储空间的起始地址对预设数据段进行重定位;将经重定位的预设数据段拷贝至存储空间。实现了在内存中对可执行文件的代码部分进行重定位,然后将重定位后的代码部分写回到可编程只读存储器中,从而仅需一次针对存储块的擦除操作即可完成代码部分的重定位,减少了应用的加载过程中的系统开销以及降低对可编程只读存储器的损耗。
【IPC分类】G06F9/445, G06F12/02
【公开号】CN105426223
【申请号】CN201510994261
【发明人】潘海军, 周华, 段炼, 王庆兴, 张国华, 苏皓
【申请人】百度在线网络技术(北京)有限公司
【公开日】2016年3月23日
【申请日】2015年12月25日