一种嵌入式系统的启动方法、装置、设备及存储介质与流程

文档序号:24872244发布日期:2021-04-30 12:44阅读:87来源:国知局
本申请涉及嵌入式系统领域,特别是涉及一种嵌入式系统的启动方法、装置、设备及存储介质。
背景技术
::现有技术中的引导程序只能加载运行可重定位的目标文件,比如elf文件。引导程序通过读取elf文件的头信息来获得该elf文件的启动地址和文件大小,然后将该elf文件拷贝到对应的启动地址处,通过跳转指令跳转到启动地址处,实现该elf文件的加载和运行。但是,elf文件相对较大,拷贝elf文件消耗的时间相对较多,占用的内存也较大。导致在启动时间或者内存大小受限的应用场景下,基于引导程序加载elf文件的方式可能不满足应用场景的要求。技术实现要素:有鉴于此,本申请提供了一种嵌入式系统的启动方法、装置、设备及存储介质,使引导程序可以加载并运行bin格式的镜像文件,从而能够减少镜像文件的加载时间,并使镜像文件占用更少的内存空间。本申请的第一方面提供一种嵌入式系统的启动方法,包括:将嵌入式系统编译为bin格式的镜像文件;在引导程序的源码中添加一启动地址项;执行所述引导程序时,将目标机中预先存储的启动地址填充至所述启动地址项中;根据所述启动地址,将所述镜像文件拷贝到目标机内存对应的地址处;跳转到所述目标机内存对应的地址处运行所述镜像文件。由上,由于bin格式文件相对于其他格式文件所占用的内存较小,因此,bin格式文件的加载运行相对于其他格式文件的加载运行消耗的时间要少很多。本方面提供的技术方案,将嵌入式系统编译为bin格式的文件来加载运行,并提供了一种bin格式文件的加载运行方式,可以大大缩短嵌入式系统的启动运行时间。作为第一方面的一种实现方式,还包括:在引导程序的源码中还添加所述镜像文件的文件大小项;执行所述引导程序时,将目标机中预先存储的镜像文件的文件大小填充至所述文件大小项;将所述镜像文件拷贝到目标机内存对应的地址处时,还根据所述镜像文件的文件大小拷贝。由上,在本方面的引导程序源码中还添加了镜像文件的文件大小项,可以直观反映待加载的镜像文件的大小,以预估该镜像文件所需的内存大小以及加载运行时间。作为第一方面的一种实现方式,所述镜像文件的文件大小由所述编译获得。作为第一方面的一种实现方式,所述目标机中预先存储启动地址的过程包括:当引导程序进入命令行模式时,将预先获得的启动地址填充至命令行,并将所述启动地址保存在目标机的指定存储区中。作为第一方面的一种实现方式,所述目标机中预先存储镜像文件的文件大小的过程包括:当引导程序进入命令行模式时,将预先获得的储镜像文件的文件大小填充至命令行,并将所述储镜像文件的文件大小保存在目标机的指定存储区中。作为第一方面的一种实现方式,所述指定存储区为受保护的指定存储区。作为第一方面的一种实现方式,所述将所述镜像文件拷贝到目标机内存对应的地址处包括:采用文件传输协议或简单文件传输协议将所述镜像文件拷贝到目标机内存对应的地址处。作为第一方面的一种实现方式,所述将所述镜像文件拷贝到目标机内存对应的地址处包括:采用直接存储器访问将所述镜像文件拷贝到目标机内存对应的地址处。由上,提供了将镜像文件拷贝到目标机内存对应的地址处的拷贝方法,可以提高拷贝效率。本申请的第二方面提供一种嵌入式系统的启动装置,包括:编译模块,用于将嵌入式系统编译为bin格式的镜像文件;添加模块,用于在引导程序的源码中添加一启动地址项;执行模块,用于执行所述引导程序时,将目标机中预先存储的启动地址填充至所述启动地址项中;拷贝模块,用于根据所述启动地址,将所述镜像文件拷贝到目标机内存对应的地址处;运行模块,用于跳转到所述目标机内存对应的地址处运行所述镜像文件。作为第二方面的一种实现方式,所述添加模块,还用于在引导程序的源码中还添加所述镜像文件的文件大小项;所述执行模块,还用于执行所述引导程序时,将目标机中预先存储的镜像文件的文件大小填充至所述文件大小项;所述拷贝模块,还用于将所述镜像文件拷贝到目标机内存对应的地址处时,还根据所述镜像文件的文件大小拷贝。本申请的第三方面提供一种计算设备,包括:总线;通信接口,其与所述总线连接;至少一个处理器,其与所述总线连接;以及至少一个存储器,其与总线连接并存储有程序指令,所述程序指令当被所述至少一个处理器执行时使得所述至少一个处理执行上述第一方面任一项所述的嵌入式系统的启动方法。本申请的第四方面提供一种计算机可读存储介质,其上存储有程序指令,其特征在于,所述程序指令当被计算机执行时使得所述计算机执行上述第一方面任一项所述的嵌入式系统的启动方法。本申请的第五方面提供一种计算机可读存储介质,其上存储有程序指令,其特征在于,所述程序指令当被计算机执行时使得所述计算机执行上述第一方面任一项所述的嵌入式系统的启动方法。综上,本申请提供的技术方案,将嵌入式系统编译为bin格式的文件来加载运行,并提供了一种bin格式文件的加载运行方式,可以大大缩短嵌入式系统的启动运行时间。附图说明图1为本申请实施例提供的一种嵌入式系统的启动方法的流程图;图2为本申请实施例提供的在命令行添加配置参数的流程图;图3为本申请实施例提供的将bin格式的镜像文件拷贝到目标机的示意图;图4为本申请实施例提供的bin格式的镜像文件的运行示意图;图5为本申请实施例提供的一种嵌入式系统的启动装置结构示意图;图6为本申请实施例提供的计算设备的结构示意图。具体实施方式说明书和权利要求书中的词语“第一、第二、第三等”或模块a、模块b、模块c等类似用语,仅用于区别类似的对象,不代表针对对象的特定排序,可以理解地,在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。在以下的描述中,所涉及的表示步骤的标号,如s110、s120……等,并不表示一定会按此步骤执行,在允许的情况下可以互换前后步骤的顺序,或同时执行。说明书和权利要求书中使用的术语“包括”不应解释为限制于其后列出的内容;它不排除其它的元件或步骤。因此,其应当诠释为指定所提到的所述特征、整体、步骤或部件的存在,但并不排除存在或添加一个或更多其它特征、整体、步骤或部件及其组群。因此,表述“包括装置a和b的设备”不应局限为仅由部件a和b组成的设备。本说明书中提到的“一个实施例”或“实施例”意味着与该实施例结合描述的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在本说明书各处出现的用语“在一个实施例中”或“在实施例中”并不一定都指同一实施例,但可以指同一实施例。此外,在一个或多个实施例中,能够以任何适当的方式组合各特定特征、结构或特性,如从本公开对本领域的普通技术人员显而易见的那样。除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的
技术领域
:的技术人员通常理解的含义相同。如有不一致,以本说明书中所说明的含义或者根据本说明书中记载的内容得出的含义为准。另外,本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。为了准确地对申请中的技术内容进行叙述,以及为了准确地理解本申请,在对具体实施方式进行说明之前先对本说明书中所使用的术语给出如下的解释说明或定义。1、bin文件(二进制文件):指的是后缀名为“.bin”的文件,表示binary格式。二进制文件为机器可直接使用的文件。2、镜像文件:指的是特定的一系列文件按照一定的格式制作成单一的文件,以方便用户下载和使用。镜像文件可以包含系统文件、引导文件、分区表信息等。3、引导文件:指的是一个具有隐藏和只读属性的系统文件,其主要功能是解析boot.ini文件。4、elf文件:是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件。elf文件由4部分组成,分别是位置固定的elf头(elfheader)、由elf头中信息的各项值的记录,可进一步包括程序头表(programheadertable)、节(section)和节头表(sectionheadertable)。5、flash:或称flashmemory,快闪存储器,可存储掉电后仍需保留的数据,例如配置参数。本申请中运行的嵌入式系统的设备配置有flash,该flash中可存储嵌入式系统的bin格式的镜像文件要加载到的启动地址、及要加载的镜像文件的文件大小。本申请提出了一种嵌入式系统的启动方法,该方法通过将嵌入式系统编译为bin格式的文件来加载运行,并提供了一种bin格式文件的加载运行方式,可以大大缩短嵌入式系统的启动运行时间。另外,可以使引导程序通过网络从本地或者直接在目标机的磁盘上加载并运行bin格式的镜像文件,从而能够减少镜像文件的加载时间,并使镜像文件占用更少的内存空间。下面结合附图对本申请的其中一个实施例提供的一种嵌入式系统的启动方法进行详细说明。具体的,如图1所示,该方法可以包括下述步骤s110-s150:s110:将嵌入式系统编译为bin格式的镜像文件;s120:在引导程序的源码中添加一启动地址项地址;其中,在本步骤中,将该启动地址项保存于目标机的指定存储区中,该指定存储区可以为flash。s130:执行所述引导程序时,将目标机中预先存储的启动地址填充至所述启动地址项中;s140:根据所述启动地址,将所述镜像文件拷贝到目标机内存对应的地址处;其中,在本步骤中,可以采用文件传输协议或简单文件传输协议将所述镜像文件拷贝到目标机内存对应的地址处,还可以采用直接存储器访问将所述镜像文件拷贝到目标机内存对应的地址处。s150:跳转到所述目标机内存对应的地址处运行所述镜像文件。在本申请的另外一个实施例中,步骤s120中,在引导程序的源码中还可以添加所述镜像文件的文件大小项,并将该文件大小项保存于目标机的指定存储区中。若步骤s120在引导程序的源码中添加了所述镜像文件的文件大小项,则步骤s130中,执行所述引导程序时,需要将目标机的指定存储区中预先存储的镜像文件的文件大小填充至所述文件大小项。另外,步骤s140中将所述镜像文件拷贝到目标机内存对应的地址处时,还根据所述镜像文件的文件大小该拷贝。其中,所述指定存储区可以为flash。为了进一步更好的理解本申请实施例提供的一种嵌入式系统的启动方法,下面结合图2-4,对本申请实施例提供的一种嵌入式系统的启动方法的一具体实施方式进行说明。为了加速嵌入式系统的启动过程,本实施例中首先将嵌入式系统编译为bin格式的镜像文件。但是由于bin格式的镜像文件没有头信息,所以通过嵌入式系统接口读取bin格式的镜像文件时,不能获得bin格式的镜像文件的文件大小和启动地址。因此,在执行引导程序之前,需在引导程序的源码中添加一启动地址项和该镜像文件的文件大小项,并将其保存在目标机一段受保护的flash中,另外,该flash中还预先存储有该镜像文件的启动地址和文件大小。其中,该flash中预先存储启动地址的过程包括:当引导程序进入命令行模式时,将预先获得的启动地址填充至命令行,并将所述启动地址保存在目标机的flash中。该flash中预先存储镜像文件的文件大小的过程包括:当引导程序进入命令行模式时,将预先获得的储镜像文件的文件大小填充至命令行,并将所述储镜像文件的文件大小保存在目标机的flash中。该flash为受保护的flash。在执行引导程序时,如图2所示,具体包括:s210:启动引导程序。s220:读取目标机的flash中预先存储的镜像文件的启动地址和镜像文件的文件大小。例如:启动地址为0xb00000;文件大小为20m。在本步骤中,文件大小可以预先利用编译器编译获得,启动地址为目标机的启动地址。s230:将目标机的flash中预先存储的启动地址和镜像文件的文件大小填充至所述flash中相应的启动地址项和文件大小项中。例如:file_sise->0x1400000;start_addr->0xb00000。在执行引导程序之后,需要执行将bin格式的镜像文件拷贝到目标机对应内存的地址的步骤,如图3所示,该步骤可以包括下述两种情况:第一种情况是通过网络加载将bin格式的镜像文件拷贝到目标机。具体为:利用文件传输协议(ftp)和/或简单文件传输协议(tftp)将bin格式的镜像文件从pc机拷贝到目标机的内存空间中的所述启动地址位置。第二种情况是通过目标机磁盘加载将bin格式的镜像文件拷贝到目标机。具体为:利用直接存储器访问(dma)目标机磁盘,将bin格式的镜像文件从目标机磁盘拷贝到目标机的内存空间中的所述启动地址位置。在将bin格式的镜像文件拷贝到目标机之后,需要执行镜像文件的执行步骤,如图4所示,该步骤为当bin格式的镜像文件拷贝完成后,跳转至目标机的启动地址处运行所述bin格式的镜像文件。由于用相同的代码编译出elf文件和bin文件时,elf文件要比bin文件大的多,所以拷贝elf文件要比拷贝bin文件消耗的时间更多,同样elf文件要比bin文件占用的内存要大得多,因此,基于上述实施例提供的技术方案,将嵌入式系统编译为bin格式的文件来加载运行,可以大大缩短嵌入式系统的启动运行时间。本申请还提出了一种嵌入式系统的启动装置,如图5所示,包括:编译模块310,用于将嵌入式系统编译为bin格式的镜像文件;添加模块320,用于在引导程序的源码中添加一启动地址项;执行模块330,用于执行所述引导程序时,将目标机中预先存储的启动地址填充至所述启动地址项中;拷贝模块340,用于根据所述启动地址,将所述镜像文件拷贝到目标机内存对应的地址处;运行模块350,用于跳转到所述目标机内存对应的地址处运行所述镜像文件。所述添加模块320,还用于在引导程序的源码中还添加所述镜像文件的文件大小项;所述执行模块330,还用于执行所述引导程序时,将目标机中预先存储的镜像文件的文件大小填充至所述文件大小项;所述拷贝模块340,还用于将所述镜像文件拷贝到目标机内存对应的地址处时,还根据所述镜像文件的文件大小拷贝。其中,所述镜像文件的文件大小由所述编译获得。在所述执行模块330中,所述目标机中预先存储启动地址的过程包括:当引导程序进入命令行模式时,将预先获得的启动地址填充至命令行,并将所述启动地址保存在目标机的flash中。在所述执行模块330中,所述目标机中预先存储镜像文件的文件大小的过程包括:当引导程序进入命令行模式时,将预先获得的储镜像文件的文件大小填充至命令行,并将所述储镜像文件的文件大小保存在目标机的flash中。在所述拷贝模块340中,所述将所述镜像文件拷贝到目标机内存对应的地址处包括:采用文件传输协议或简单文件传输协议将所述镜像文件拷贝到目标机内存对应的地址处。在所述拷贝模块340中,所述将所述镜像文件拷贝到目标机内存对应的地址处包括:采用直接存储器访问将所述镜像文件拷贝到目标机内存对应的地址处。本申请还提供的一种计算设备,下面结合图6详细介绍。该计算设备400包括,处理器410、存储器420、通信接口430、总线440。应理解,该图所示的计算设备410中的通信接口430可以用于与其他设备之间进行通信。其中,该处理器410可以与存储器420连接。该存储器420可以用于存储该程序代码和数据。因此,该存储器420可以是处理器410内部的存储单元,也可以是与处理器410独立的外部存储单元,还可以是包括处理器410内部的存储单元和与处理器410独立的外部存储单元的部件。可选的,计算设备400还可以包括总线440。其中,存储器420、通信接口430可以通过总线440与处理器410连接。总线440可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(efstendedindustrystandardarchitecture,eisa)总线等。所述总线440可以分为地址总线、数据总线、控制总线等。为便于表示,该图中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。应理解,在本发明实施例中,该处理器410可以采用中央处理单元(centralprocessingunit,cpu)。该处理器还可以是其它通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(fieldprogrammablegatearray,fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。或者该处理器410采用一个或多个集成电路,用于执行相关程序,以实现本发明实施例所提供的技术方案。该存储器420可以包括只读存储器和随机存取存储器,并向处理器410提供指令和数据。处理器410的一部分还可以包括非易失性随机存取存储器。例如,处理器410还可以存储设备类型的信息。在计算设备400运行时,所述处理器410执行所述存储器420中的计算机执行指令执行方法上述实施例的操作步骤。应理解,根据本发明实施例的计算设备400可以对应于执行根据本发明各实施例的方法中的相应主体,并且计算设备400中的各个模块的上述和其它操作和/或功能分别为了实现本实施例各方法的相应流程,为了简洁,在此不再赘述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本发明所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括,u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行方法实施例一的操作步骤或方法实施例二的操作步骤或方法实施例三的操作步骤。本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括,具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括、但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,均属于本发明保护范畴。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1