一种嵌入式装置的启动方法和装置与流程

文档序号:17771319发布日期:2019-05-28 19:27阅读:147来源:国知局
本发明涉及嵌入式领域,尤其涉及一种嵌入式装置的启动方法和装置。
背景技术
::嵌入式设备包括主机和目标机,主机和目标机是基于不同体系架构的开发,主机负责开发和编译,也即开发和编译装置,目标机运行嵌入式开发之前,首先需要安装交叉工具链,网络协议栈以及驱动程序开发,而后运行从宿主机下载的编译后的程序,也即嵌入式装置。在嵌入式装置中,其系统的启动速度是一个重要的衡量指标,特别是对于消费类的嵌入式装置,例如行车记录仪、相机和智能打印服务器等,系统的启动时间直接影响用户体验。目前,业界的系统冷启动的方式为:通过系统引导程序将存储空间中的系统启动镜像文件加载到内存中,然后再启动系统。例如一种方案为:在系统中配置一个不掉电区域,在系统关机时,将开机启动的程序加载到不掉电的区域,当系统再次启动时,首先执行不掉电区域的程序,可达到快速启动的目的,但是在一些嵌入式设备中,有的产品中并未配置不掉电区域,即关机意味着掉电,因此,该方案并不适用于所有的嵌入式装置;另一种方案为:在主机开发和编译的过程中,对开发的程序中的启动程序段的代码函数及变量进行冠头,然后在编译链接时,使启动相关的代码函数及变量在编译生成的文件的前半部分独立的段中,这样在目标机系统加载镜像文件到内存中时,就会先加载运行前半部分启动相关的段,再加载运行其余的段,但是,该方案中,开发者需要知道所有与系统启动相关的代码函数及变量的源码,且有些启动相关的代码函数可能是以库文件的方式提供的,并不是以源码的方式提供的,这样就无法使用该方案进行快速启动。因此,如何提供一种通用的快速启动嵌入式装置的方法是一个亟待解决的问题。技术实现要素:本发明实施例提供一种嵌入式装置的启动方法和装置,能够提高嵌入式装置的开机启动速度。第一方面,提供一种嵌入式装置的启动方法,包括:通过系统引导程序加载系统镜像文件中的快速启动加载器,所述快速启动加载器用于将所述系统镜像文件从加载域拷贝至执行域;运行所述快速启动加载器;在运行所述快速启动加载器后,根据不同业务的业务需求依次加载所述系统镜像文件中除所述快速启动加载器以外的剩余镜像文件对应的一个或多个业务,并运行所述加载后的一个或多个业务。由此,在嵌入式装置启动过程中,先加载系统镜像文件中的快速启动加载器,即先加载最小的内核,在内核启动后,再通过快速启动加载器根据不同业务的业务需求分段加载剩余镜像文件对应的一个或多个业务,这样可实现缩短启动业务的启动时间,提高嵌入式装置的开机启动速度。在一种可能的设计中,所述根据不同业务的业务需求依次加载所述系统镜像文件中除所述快速启动加载器以外的剩余镜像文件对应的一个或多个业务,并运行所述加载后的一个或多个业务包括:控制所述快速启动加载器加载所述系统镜像文件中的快速启动程序段,所述快速启动程序段包括嵌入式装置的关键业务;运行所述关键业务;控制所述快速启动加载器加载所述系统镜像文件中的非快速启动程序段,所述非快速启动程序段包括所述嵌入式装置中除所述关键业务以外的其余业务;运行所述其余业务。由此,在分段加载业务的镜像文件时,可达到系统的关键业务先加载并运行的目的,而后再加载并运行镜像文件对应的其余的业务,从而实现关键业务优先启动以提高开机启动速度。在一种可能的设计中,所述控制所述快速启动加载器加载所述系统镜像文件中的快速启动程序段包括:控制所述快速启动加载器获取所述系统镜像文件中所述快速启动程序段的起始地址和结束地址;控制所述快速启动加载器根据所述快速启动程序段的起始地址和结束地址获取所述快速启动程序段的长度;控制所述快速启动加载器根据所述快速启动程序段的起始地址和所述快速启动程序段的长度加载所述快速启动程序段。由此,在将关键业务加载到加载域时,根据起始地址和结束地址得到程序段的长度,根据长度和起始地址加载程序段可实现代码行级的加载精度,从而可以精确控制加载的时机。其中,根据长度加载可避免实时检测是否加载至结束地址,只需根据起始地址和长度加载整段程序段,提升了业务加载速度,从而提升了嵌入式装置的启动速度。在一种可能的设计中,所述控制所述快速启动加载器加载所述系统镜像文件中的非快速启动程序段包括:控制所述快速启动加载器获取所述系统镜像文件中所述非快速启动程序段的起始地址和结束地址;控制所述快速启动加载器根据所述非快速启动程序段的起始地址和结束地址获取所述非快速启动程序段的长度;控制所述快速启动加载器根据所述非快速启动程序段的起始地址和所述非快速启动程序段的长度加载所述非快速启动程序段。由此,在将非关键业务加载到加载域时,也可实现代码行级的加载精度,从而可以精确控制加载的时机。第二方面,提供一种嵌入式装置的开发和编译方法,包括:根据嵌入式装置系统的链接脚本划分所述系统的程序,划分后的程序包括快速启动加载器和根据不同业务的业务需求划分的不同业务对应的程序段,所述快速启动加载器用于将系统镜像文件从加载域拷贝至执行域;根据所述链接脚本对所述快速启动加载器和所述不同业务对应的程序段分别进行编译和链接,以生成所述系统镜像文件。由此,通过对系统的程序的划分处理,并对划分后的不同的程序段进行编译和链接处理,可使得在将镜像文件下载至嵌入式装置上后,嵌入式装置分段加载并运行该镜像文件,提高嵌入式装置的开机启动速度。在一种可能的设计中,所述不同业务对应的程序段包括:快速启动程序段和非快速启动程序段,所述快速启动程序段对应所述嵌入式装置的关键业务,所述非快速启动程序段对应嵌入式装置中除所述关键业务以外的其余业务。由此,可使得嵌入式装置在加载运行镜像文件时,可先加载镜像文件中的关键业务,后加载并运行镜像文件中的非关键业务,从而在提升系统的启动速度时,提升用户体验。在一种可能的设计中,当所述不同业务对应的程序段为所述快速启动程序段时,所述主机根据所述链接脚本对所述不同业务对应的程序段进行编译和链接包括:使用第一交叉编译命令解压各个关键业务对应的库文件,生成所述各个关键业务对应的中间文件,任一所述中间文件包括所述任一中间文件对应的关键业务的只读数据(rodata)段、数据(data)段和代码(text)段;使用第二交叉编译命令将所述各个关键业务对应的中间文件链接至所述快速启动程序段对应的可执行链接文件ELF中,所述快速启动程序段对应的可执行链接文件(ExecutableandLinkableFormat,ELF)中,所述各个关键业务的只读数据段在同一程序段中,所述各个关键业务的数据段在同一程序段中,所述各个关键业务的代码段在同一程序段中。由此,通过先对关键业务的库文件进行编译和链接处理,可在不需要获知系统的源码的情况下直接对关键业务的库文件进行编译和链接,即对提供第三方开发的库进行链接编排,不依赖于第三方库的源码,使得编译和链接更加灵活,也可提升系统的启动速度。在一种可能的设计中,在使用第一交叉编译命令对所述各个关键业务对应的库文件解压之前,所述方法还包括:根据所述链接脚本将所述各个关键业务对应的源码编译生成所述库文件,所述库文件包括静态库文件或动态库文件。由此,可在主机提供源码的情况下,将关键业务的源码编译生成库文件,再对库文件进行编译和链接,使得编译和链接更加灵活。在一种可能的设计中,当所述不同业务对应的程序段为所述非快速启动程序段时,所述对所述快速启动加载器和所述不同业务对应的程序段进行编译和链接包括:使用第二交叉编译命令将所述快速启动加载器对应的库文件链接至所述快速启动加载器对应的ELF中,并将所述非快速启动程序段对应的库文件链接至所述非快速启动程序段对应的ELF中,所述快速启动加载器的只读数据段、数据段和代码段分别在所述ELF的同一程序段中,所述非快速启动程序段对应的只读数据段、数据段和代码段分别在所述ELF的同一程序段中。由此,通过对非关键业务的库文件进行编译和链接处理,可在不需要获知系统的源码的情况下直接对非关键业务的库文件进行编译和链接,即对提供第三方开发的库进行链接编排,不依赖于第三方库的源码,使得编译和链接更加灵活,也可提升系统的启动速度。在一种可能的设计中,在使用所述第二交叉编译命令之前,所述方法还包括:根据所述链接脚本将所述快速启动加载器对应的源码编译生成所述快速启动加载器对应的库文件,并将所述非快速启动程序段对应的源码编译生成所述非快速启动程序段对应的库文件。由此,可提供源码的情况下,将非关键业务的源码编译生成库文件,再对库文件进行编译和链接,使得编译和链接更加灵活。第三方面,提供一种嵌入式装置,包括:系统引导程序,用于加载系统镜像文件的快速启动加载器,所述快速启动加载器用于将所述系统镜像文件从加载域拷贝至执行域;运行单元,用于运行所述快速启动加载器;所述快速启动加载器,用于根据不同业务的业务需求依次加载所述系统镜像文件中除所述快速启动加载器程序段以外的剩余镜像文件对应的一个或多个业务,所述运行单元还用于运行加载后的一个或多个业务。由此,在嵌入式装置启动过程中,先加载系统镜像文件中的快速启动加载器,即先加载最小的内核,在内核启动后,再通过快速启动加载器根据业务需求分段加载剩余镜像文件对应的不同业务,这样可实现缩短启动业务的启动时间,提高嵌入式装置的开机启动速度。在一种可能的设计中,所述快速启动加载器用于,加载所述系统镜像文件中的快速启动程序段,所述快速启动程序段包括所述嵌入式装置的关键业务;所述运行单元,用于运行所述关键业务;所述快速启动加载器用于,加载所述系统镜像文件中的非快速启动程序段,所述非快速启动程序段包括所述嵌入式装置中除所述关键业务以外的其余业务;所述运行单元,用于运行所述其余业务。由此,在分段加载业务的镜像文件时,可达到系统的关键业务先加载并运行的目的,而后再加载并运行镜像文件对应的其余的业务,从而实现关键业务优先启动以提高开机启动速度。在一种可能的设计中,所述快速启动加载器用于:获取所述系统镜像文件中所述快速启动程序段的起始地址和结束地址;根据所述快速启动程序段的起始地址和结束地址获取所述快速启动程序段的长度;根据所述快速启动程序段的起始地址和所述快速启动程序段的长度加载所述快速启动程序段。由此,嵌入式装置在将关键业务加载到加载域时,可实现代码行级的加载精度,从而可以精确控制加载的时机。在一种可能的设计中,所述快速启动加载器用于:所述快速启动加载器用于:获取所述系统镜像文件中所述非快速启动程序段的起始地址和结束地址;根据所述非快速启动程序段的起始地址和结束地址获取所述非快速启动程序段的长度;根据所述非快速启动程序段的起始地址和所述非快速启动程序段的长度加载所述非快速启动程序段。由此,嵌入式装置在将非关键业务加载到加载域时,也可实现代码行级的加载精度,从而可以精确控制加载的时机。第四方面,提供一种开发和编译装置,包括:划分单元,用于根据嵌入式装置系统的链接脚本划分所述系统的程序,划分后的程序包括快速启动加载器和根据业务需求划分的不同业务对应的程序段,所述快速启动加载器用于将系统镜像文件从加载域拷贝至执行域;编译链接单元,用于根据所述链接脚本对所述快速启动加载器和所述不同业务对应的程序段分别进行编译和链接,以生成所述系统镜像文件。由此,通过主机对系统的程序的划分处理,并对划分后的不同的程序段进行编译和链接处理,可使得在将镜像文件下载至嵌入式装置上后,嵌入式装置分段加载并运行该镜像文件,提高嵌入式装置的开机启动速度。在一种可能的设计中,所述不同业务对应的程序段包括:快速启动程序段和非快速启动程序段,所述快速启动程序段对应所述嵌入式装置的关键业务,所述非快速启动程序段对应除所述关键业务以外的其余业务。由此,可使得嵌入式装置在加载运行镜像文件时,可先加载镜像文件中的关键业务,后加载并运行镜像文件中的非关键业务,从而在提升系统的启动速度时,提升用户体验。在一种可能的设计中,当所述不同业务对应的程序段为所述快速启动程序段时,所述编译链接单元用于:使用第一交叉编译命令解压各个关键业务对应的库文件,生成所述各个关键业务对应的中间文件,任一所述中间文件包括所述任一中间文件对应的关键业务的只读数据段、数据段和代码段;使用第二交叉编译命令将所述各个关键业务对应的中间文件链接至所述快速启动程序段对应的可执行链接文件ELF中,所述快速启动程序段对应的可执行链接文件ELF中,所述各个关键业务的只读数据段在同一程序段中,所述各个关键业务的数据段在同一程序段中,所述各个关键业务的代码段在同一程序段中。由此,通过先对关键业务的库文件进行编译和链接处理,可在不需要获知系统的源码的情况下直接对关键业务的库文件进行编译和链接,即对提供第三方开发的库进行链接编排,不依赖于第三方库的源码,使得编译和链接更加灵活,也可提升系统的启动速度。在一种可能的设计中,所述编译链接单元用于:根据所述链接脚本将所述各个关键业务对应的源码编译生成库文件,所述库文件包括静态库文件或动态库文件。由此,可在主机提供源码的情况下,将关键业务的源码编译生成库文件,再对库文件进行编译和链接,使得编译和链接更加灵活。在一种可能的设计中,当所述不同业务对应的程序段为所述非快速启动程序段时,所述编译链接单元用于:使用第二交叉编译命令将所述快速启动加载器对应的库文件链接至所述快速启动加载器对应的ELF中,并将所述非快速启动程序段对应的库文件链接至所述非快速启动程序段对应的ELF中,所述快速启动加载器的只读数据段、数据段和代码段分别在所述ELF的同一程序段中,所述非快速启动程序段对应的只读数据段、数据段和代码段分别在所述ELF的同一程序段中。由此,通过对非关键业务的库文件进行编译和链接处理,可在不需要获知系统的源码的情况下直接对非关键业务的库文件进行编译和链接,即对提供第三方开发的库进行链接编排,不依赖于第三方库的源码,使得编译和链接更加灵活,也可提升系统的启动速度。在一种可能的设计中,所述编译链接单元用于:根据所述链接脚本将所述快速启动加载器对应的源码编译生成所述快速启动加载器对应的库文件,并将所述非快速启动程序段对应的源码编译生成所述非快速启动程序段对应的库文件。由此,可在主机提供源码的情况下,将非关键业务的源码编译生成库文件,再对库文件进行编译和链接,使得编译和链接更加灵活。因此,本发明实施例提供一种嵌入式装置的启动方法和装置,通过对嵌入式装置系统的程序进行分段,包括快速启动加载器和不同的业务对应的程序段,这样在对分段后的程序段进行编译和链接生成系统启动的镜像文件后,可使得嵌入式装置在下载该镜像文件后,先加载镜像文件中的快速启动加载器,再通过快速启动加载器根据业务需求分段加载并运行剩余镜像文件对应的一个或多个业务,也就是说,在嵌入式装置启动过程中,先加载系统镜像文件中的快速启动加载器,即先加载最小的内核,在内核启动后,再通过快速启动加载器根据不同业务的业务需求分段加载剩余镜像文件对应的一个或多个业务,再运行加载后的一个或多个业务,这样可实现缩短启动业务的启动时间,提高嵌入式装置的开机启动速度。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种嵌入式设备的示意图;图2为本发明实施例提供的一种嵌入式装置的启动方法的流程示意图;图3为本发明实施例提供的一种对库文件的编译链接示意图;图4为本发明实施例提供的一种嵌入式装置的启动方法的流程示意图;图5为本发明实施例提供的一种对ELF进行加载的示意图;图6为本发明实施例提供的一种嵌入式装置的结构示意图;图7为本发明实施例提供的一种开发和编译装置的结构示意图;图8为本发明实施例提供的一种嵌入式装置的结构示意图;图9为本发明实施例提供的一种开发和编译装置的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例可用于嵌入式设备,如图1所示,该嵌入式设备包括嵌入式装置、开发和编译装置,其中开发和编译装置为主机,嵌入式装置为目标机,本发明用于实现嵌入式装置的快速启动。该目标机可以为行车记录仪、智能打印服务器、相机等,对应的,主机就负责开发和编译行车记录仪、智能打印服务器、相机等目标机的系统程序。其中,主机可先通过对目标机系统的链接脚本进行修改,以使得主机根据用于目标机系统的链接脚本划分目标机系统的程序,划分后的程序包括快速启动加载器程序段和根据业务需求划分的不同业务对应的程序段,快速启动加载器用于将目标机系统的镜像文件从加载域拷贝至执行域,再根据链接脚本对快速启动加载器程序段和不同业务对应的程序段进行编译和链接,以生成系统启动的镜像文件。因而,在将镜像文件下载至目标机上后,目标机通过系统引导程序可先加载镜像文件中的快速启动加载器程序段,快速启动加载器用于将目标机系统的镜像文件从加载域拷贝至执行域,而后运行快速启动加载器,在运行快速启动加载器后,根据不同业务的业务需求分段加载并运行剩余的镜像文件对应的一个或多个业务。也就是说,在目标机启动过程中,先加载系统镜像文件中的快速启动加载器程序段,即先加载最小的内核,在内核启动后,再通过快速启动加载器根据业务需求分段加载剩余的镜像文件对应的一个或多个业务,再运行加载后的一个或多个业务,这样可实现缩短启动业务的启动时间,提高嵌入式装置的开机启动速度。本发明实施例提供一种嵌入式装置的启动方法,如图2所示,包括:201、开发和编译装置根据用于嵌入式装置系统的链接脚本划分系统的程序,划分后的程序包括快速启动加载器和根据不同业务的业务需求划分的程序段,快速启动加载器用于将系统镜像文件从加载域拷贝至执行域。其中,加载域可以为系统硬件存放镜像文件的区域,通常为掉电不易失区域,执行域可以为系统运行镜像文件的区域,通常为内存区域,掉电丢失。一种可实现的方式中,开发和编译装置,即主机可以根据嵌入式装置系统的链接脚本划分系统的程序,划分后的程序包括快速启动加载器、快速启动程序段和非快速启动程序段,其中,快速启动加载器即为快速启动加载器程序段。具体地,可先对主机中用于目标机系统的链接脚本进行修改,使得修改后的链接脚本可指示主机将系统启动的程序划分为快速启动加载器、快速启动程序段和非快速启动程序段。链接脚本可用于指定某些程序段位于指定的位置、对齐方式和存放形式等。其中,快速启动加载器可用于将目标机的系统镜像文件从加载域拷贝至执行域。加载域为目标机的系统硬件存储镜像文件的区域,执行域为目标机的系统运行镜像文件的区域。可以理解的是,本申请相当于将目标机的系统镜像文件中从加载域拷贝至执行域的程序代码封装为一个接口,可单独运行。快速启动程序段包括目标机的关键业务,非快速启动程序段包括除关键业务以外的其余业务。例如,目标机为行车记录仪时,其关键业务可以为录像业务、无线连接的业务,其余业务可以包括蓝牙业务、拍照业务等。202、开发和编译装置根据链接脚本对快速启动加载器程序段和不同业务对应的程序段分别进行编译和链接,以生成系统镜像文件。具体可先对快速启动加载器进行编译和链接,然后再对不同业务对应的程序段进行编译和链接,例如将目标机的关键业务和非关键业务对应的程序段分别进行编译和链接。在一种可能的设计中,对于快速启动加载器和非快速启动程序段的程序来说,如果该程序为第三方提供的库文件,那么不需要获知库文件对应的源码,可直接对库文件进行链接。具体地,主机使用第二交叉编译命令将快速启动加载器对应的库文件链接至快速启动加载器对应的ELF中,并将非快速启动程序段对应的库文件链接至非快速启动程序段对应的ELF中,快速启动加载器对应的只读数据(rodata)段、数据(data)段和代码(text)段分别在ELF的同一程序段中,非快速启动程序段对应的rodata段、data段和text段分别在ELF的同一程序段中。其中,库文件可以为静态库文件,记为.a文件,也可以为动态库文件,记为.so文件。示例性的,在对快速启动加载器对应的库文件进行链接,或者对非快速启动程序段对应的库文件进行链接时,将快速启动加载器对应的各个.a文件或对非快速启动程序段对应的各个.a文件中的rodata段、data段和text段分别位于同一程序段中,即将库文件的各个.a文件中的rodata段链接,将各个.a文件中的data段链接,将各个.a文件中的text段链接,生成的镜像文件即ELF中快速启动加载器程序段中rodata段、data段和text段分别位于同一程序段中。如果快速启动加载器和非快速启动程序段的程序不是第三方提供的库文件,而是源码,在主机使用第二交叉编译命令之前,可先根据链接脚本将快速启动加载器对应的源码编译生成快速启动加载器对应的库文件,并将非快速启动程序段对应的源码编译生成非快速启动程序段对应的库文件。对于快速启动程序段来说,如果该程序为第三方提供的库文件,由于快速启动程序段对应关键业务,即指定的需优先启动的业务,那么可使用第一交叉编译命令解压各个关键业务对应的库文件,生成各个关键业务对应的中间文件,任一中间文件包括任一中间文件对应的关键业务的只读数据段、数据段和代码段;再使用第二交叉编译命令将各个关键业务对应的中间文件链接至快速启动程序段对应的可执行链接文件ELF中,快速启动程序段对应的可执行链接文件ELF中,各个关键业务的只读数据段在同一程序段中,各个关键业务的数据段在同一程序段中,各个关键业务的代码段在同一程序段中。示例性的,第一交叉编译命令可以为xxx-ar,用于解压库文件,即.a文件生成中间文件(记为.o文件),xxx根据交叉编译器的不同而不同,第二交叉编译命令可以为xxx-ld,用于将多个中间文件链接生成ELF,xxx根据交叉编译器的不同而不同。如图3所示,XX.a和XY.a代表两个不同的关键业务的库文件,XX.a文件中的1.0、2.0等和XY.a文件中的a.0、b.0等代表不同的.a文件,每个.a文件中包括rodata段、data段和text段,可先使用xxx-ar命令将各个.a文件解压,XX.a文件解压后对应XX.o文件,XY.a文件解压后对应XY.o文件,其中,XX.o文件中的rodata段由XX.a文件中的各个rodata段链接而成,XX.o文件中的data段由XX.a文件中的各个data段链接而成,XX.o文件中的text段由XX.a文件中的各个text段链接而成;同理,XY.o文件中的rodata段由XY.a文件中的各个rodata段链接而成,XY.o文件中的data段由XY.a文件中的各个data段链接而成,XY.o文件中的text段由XY.a文件中的各个text段链接而成。而后,使用xxx-ld将XX.o文件和XY.o文件链接为ELF中的快速启动程序段,快速启动程序段也包括rodata段、data段和text段,快速启动程序段的rodata段由XX.o文件中的data段和XY.o文件中的rodata段链接而成,快速启动程序段的data段由XX.o文件中的data段和XY.o文件中的data段链接而成,快速启动程序段的text段由XX.o文件中的text段和XY.o文件中的text段链接而成。如果快速启动程序段不是第三方提供的库文件,而是源码,那么在使用第一交叉编译命令解压各个关键业务对应的库文件之前,主机根据链接脚本将各个关键业务对应的源码编译生成库文件,库文件包括静态库文件或动态库文件。例如对于行车记录仪来说,其关键业务包括摄像业务和无线连接业务,先将摄像业务对应的源码(记为.c文件)和无线连接业务对应的源码编译生成.a文件(静态库文件)或.so文件(动态库文件),而后再将.a文件或.so文件使用xxx-ar解压为各个.o文件,继而再将各个.o文件使用xxx-ld链接为快速启动程序段的ELF。这样,通过修改链接脚本,可以将各个库文件根据不同的特性链接到不同的指定段,存放在不同的指定位置。在主机编译链接完成后,可从主机将ELF下载至目标机的Flash芯片中,当目标机启动运行时,ELF即镜像文件就会从Flash芯片中加载至嵌入式装置即目标机的内存中,目标机启动,具体的加载过程可以为:203、嵌入式装置通过系统引导程序加载系统镜像文件中的快速启动加载器。具体地,可通过对系统引导程序进行修改,使得系统引导程序在加载ELF时先加载系统镜像文件中的快速启动加载器。其中,快速启动加载器的起始地址和结束地址可预先在引导程序中设置,当系统引导程序在加载快速启动加载器时,先根据快速启动加载器的起始地址和结束地址获取快速启动加载器的长度,而后,根据快速启动加载器的起始地址和长度加载快速启动加载器。204、嵌入式装置运行快速启动加载器。快速启动加载器用于将目标机系统镜像文件从加载域拷贝至执行域,相当于将从加载拷贝至执行域封装成一个接口,也是系统程序的最小内核。当系统启动时,仅先加载最小内核,以便内核启动运行后,再加载其余的分段。205、嵌入式装置在运行快速启动加载器后,根据不同业务的业务需求分段加载系统镜像文件中除快速启动加载器以外的剩余镜像文件对应的一个或多个业务,并运行加载后的一个或多个业务。这样在先加载快速启动加载器即内核后,可通过快速启动加载器分段加载剩余镜像文件对应的不同业务,而不是将系统镜像文件中全部加载后再运行,可提升目标机的启动速度。本发明实施例提供一种嵌入式装置的启动方法,通过开发和编译装置预先对嵌入式装置系统的程序进行分段,包括快速启动加载器和不同的业务对应的程序段,这样在对分段后的程序段进行编译和链接生成系统启动的镜像文件后,可使得嵌入式装置在下载该镜像文件后,先加载镜像文件中的快速启动加载器,再通过快速启动加载器根据业务需求分段加载并运行剩余镜像文件对应的一个或多个业务,也就是说,在嵌入式装置启动过程中,先加载系统镜像文件中的快速启动加载器,即先加载最小的内核,在内核启动后,再通过快速启动加载器根据不同业务的业务需求分段加载剩余镜像文件对应的一个或多个业务,再运行加载后的一个或多个业务,这样可实现缩短启动业务的启动时间,提高嵌入式装置的开机启动速度。本发明的一种可实现方式中,参见图4,步骤205具体可以包括401-404:401、嵌入式装置控制快速启动加载器加载系统镜像文件的快速启动程序段包括目标机的关键业务。当快速启动加载器运行后,控制快速启动加载器先加载系统镜像文件的快速启动程序段,该快速启动程序段对应目标机的关键业务,这样不需要目标机加载整个系统镜像文件再启动,而是分段加载,且先加载系统镜像文件中对应的关键业务。具体地,快速启动程序段中标记有起始地址和结束地址,快速启动加载器获取快速启动程序段的起始地址和结束地址,根据快速启动程序段的起始地址和结束地址获取快速启动程序段的长度,再根据快速启动程序段的起始地址和快速启动程序段长度,再加载快速启动程序段。由此,在快速启动程序段加载的时机上可以做到代码行级别的精确加载时机。402、嵌入式装置运行关键业务。例如行车记录仪快速启动程序段对应的关键业务包括摄像业务和无线连接业务,那么在行车记录器启动时,在加载了快速启动加载器后,快速启动加载器就先启动了摄像业务和无线连接业务,并使得关键业务的数据同步,这时,行车记录仪的启动时间就会大大缩短,达到系统关键业务首先加载并启动运行的目的。403、嵌入式装置控制快速启动加载器加载系统镜像文件中的非快速启动程序段,非快速启动程序段包括目标机中除关键业务以外的其余业务。快速启动加载器获取非快速启动程序段的起始地址和结束地址,根据非快速启动程序段的起始地址和结束地址获取非快速启动程序段的长度,继而根据非快速启动程序段的起始地址和非快速启动程序段的长度加载非快速启动程序段,如图5所示。例如行车记录仪的非关键业务包括蓝牙业务,那么在其关键业务加载并运行后,再加载蓝牙业务,即系统根据业务需要分段加载目标机的业务。404、嵌入式装置运行其余业务。因此,本发明实施例提供的嵌入式装置的启动方法中,通过开发和编译装置对嵌入式装置系统的程序进行分段,包括快速启动加载器和不同的业务对应的程序段,这样在对分段后的程序段进行编译和链接生成系统启动的镜像文件后,可使得嵌入式装置在下载该镜像文件后,先加载镜像文件中的快速启动加载器,再通过快速启动加载器根据业务需求分段加载并运行剩余镜像文件对应的不同业务,也就是说,在嵌入式装置启动过程中,先加载系统镜像文件中的快速启动加载器,即先加载最小的内核,在内核启动后,再通过快速启动加载器根据业务需求分段加载并运行剩余镜像文件对应的不同业务,这样可实现缩短启动业务的启动时间,提高嵌入式装置的开机启动速度。本发明实施例提供一种嵌入式装置60,如图6所示,包括:系统引导程序601,用于加载系统镜像文件中的快速启动加载器,所述快速启动加载器用于将所述系统镜像文件从加载域拷贝至执行域;运行单元602,用于运行快速启动加载器;快速启动加载器603,用于根据不同业务的业务需求分段加载所述系统镜像文件中除所述快速启动加载器以外的剩余镜像文件对应的一个或多个业务。所述运行单元602还用于运行加载后的一个或多个业务。可选的,快速启动加载器603用于,加载所述系统镜像文件中的快速启动604程序段,所述快速启动604程序段包括所述嵌入式装置的关键业务;运行单元602,用于运行关键业务;快速启动加载器603用于,加载所述系统镜像文件中的非快速启动605程序段,所述非快速启动605程序段包括所述嵌入式装置中除所述关键业务以外的其余业务;运行单元602,用于运行其余业务。可选的,快速启动加载器603用于:获取系统镜像文件中所述快速启动604程序段的起始地址和结束地址;根据所述快速启动604程序段的起始地址和结束地址获取所述快速启动604程序段的长度;根据所述快速启动604程序段的起始地址和所述快速启动604程序段的长度加载所述快速启动程序段。可选的,快速启动加载器603用于:获取所述系统镜像文件中所述非快速启动605程序段的起始地址和结束地址;根据所述非快速启动605程序段的起始地址和结束地址获取所述非快速启动605程序段的长度;根据所述非快速启动605程序段的起始地址和所述非快速启动605程序段的长度加载所述非快速启动605程序段。因此,本发明实施例提供的嵌入式装置,在下载该镜像文件后,先加载系统镜像文件中的快速启动加载器,再通过快速启动加载器根据业务需求分段加载并运行剩余镜像文件中对应的不同业务,由此,在嵌入式装置启动过程中,先加载系统镜像文件中的快速启动加载器,即先加载最小的内核,在内核启动后,再通过快速启动加载器根据业务需求分段加载并运行剩余镜像文件中对应的不同业务,这样可实现缩短启动业务的启动时间,提高嵌入式装置的开机启动速度。本发明实施例提供一种开发和编译装置70,如图7所示,包括:划分单元701,用于根据嵌入式装置系统的链接脚本划分系统的程序,划分后的程序包括快速启动加载器程序段和根据不同业务的业务需求划分的不同业务对应的程序段,快速启动加载器用于将系统镜像文件从加载域拷贝至执行域;编译链接单元702,用于根据链接脚本对快速启动加载器程序段和不同业务对应的程序段分别进行编译和链接,以生成系统镜像文件。可选的,不同业务对应的程序段包括:快速启动程序段和非快速启动程序段,所述快速启动程序段对应所述嵌入式装置的关键业务,所述非快速启动程序段对应嵌入式装置中除所述关键业务以外的其余业务。可选的,当不同业务对应的程序段为快速启动程序段时,编译链接单元702用于:使用第一交叉编译命令解压各个关键业务对应的库文件,生成所述各个关键业务对应的中间文件,任一所述中间文件包括所述任一中间文件对应的关键业务的只读数据段、数据段和代码段;使用第二交叉编译命令将所述各个关键业务对应的中间文件链接至所述快速启动程序段对应的可执行链接文件ELF中,所述快速启动程序段对应的可执行链接文件ELF中,所述各个关键业务的只读数据段在同一程序段中,所述各个关键业务的数据段在同一程序段中,所述各个关键业务的代码段在同一程序段中。可选的,编译链接单元702用于:根据链接脚本将各个关键业务对应的源码编译生成库文件,库文件包括静态库文件或动态库文件。可选的,当不同业务对应的程序段为非快速启动程序段时,编译链接单元702用于:使用第二交叉编译命令将所述快速启动加载器程序段对应的库文件链接至所述快速启动加载器程序段对应的可执行链接文件ELF中,并将所述非快速启动程序段对应的库文件链接至所述非快速启动程序段对应的ELF中,所述快速启动加载器程序段的只读数据段、数据段和代码段分别在所述ELF的同一程序段中,所述非快速启动程序段对应的只读数据段、数据段和代码段分别在所述ELF的同一程序段中。可选的,编译链接单元702用于:根据链接脚本将快速启动加载器程序段对应的源码编译生成快速启动加载器程序段对应的库文件,并将非快速启动程序段对应的源码编译生成非快速启动程序段对应的库文件。因此,本发明实施例提供的开发和编译装置,通过对镜像文件的划分处理,并对划分后的不同的程序段进行编译和链接处理,可使得在将镜像文件下载至嵌入式装置上后,嵌入式装置分段加载并运行该镜像文件,提高嵌入式装置的开机启动速度。本发明实施例还提供一种嵌入式装置80,如图8所示,包括闪客(Flash)芯片801、存储器802、存储器802中包括系统引导程序、快速启动加载器、快速启动和非快速启动,其实现方式可参见上述图3和图6所示的实施例,此处不再赘述。本发明实施例还提供一种开发和编译装置90,如图9所示,包括存储器901、编译链接器902。其中,存储器901包括源码或库文件,以及ELF等,编译连接器902用于将源码或库文件进行编译和链接,形成ELF,其实现方式如图3和图7所示的实施例,此处不再赘述。因此,本发明实施例提供的开发和编译装置和嵌入式装置,通过开发和编译装置对嵌入式装置系统的程序进行分段,包括快速启动加载器和不同的业务对应的程序段,这样在对分段后的程序段进行编译和链接生成系统启动的镜像文件后,可使得嵌入式装置在下载该镜像文件后,先加载镜像文件中的快速启动加载器程序段,再通过快速启动加载器根据业务需求分段加载并运行剩余镜像文件对应的不同业务,也就是说,在嵌入式装置启动过程中,先加载系统镜像文件中的快速启动加载器程序段,即先加载最小的内核,在内核启动后,再通过快速启动加载器根据业务需求分段加载并运行剩余镜像文件对应的不同业务,这样可实现缩短启动业务的启动时间,提高嵌入式装置的开机启动速度。在本申请所提供的几个实施例中,应该理解到,所揭露的终端和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的程序段或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的程序段步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,简称ROM)、随机存取存储器(RandomAccessMemory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中程序段技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1