安卓系统的启动方法、移动终端及具有存储功能的装置与流程

文档序号:11216099阅读:629来源:国知局
安卓系统的启动方法、移动终端及具有存储功能的装置与流程

本申请涉及计算机技术领域,特别是涉及一种安卓系统的启动方法、移动终端及具有存储功能的装置。



背景技术:

安卓系统是一种基于linux的开源移动操作系统,主要应用于手机、平板电脑、电视机、手表等智能终端上。随着安卓系统的迅速发展和其市场份额的不断增大,其客户群也在迅猛增长,但随之而来的是系统在使用中问题的不断暴露。其中最大的问题就是安卓系统的开机启动失败的问题。

本申请的发明人在长期的研发中发现,在目前现有技术中,安卓系统的开放性造就了用户在使用上的最大灵活性,包括自主刷机,自主安装未授权的第三方软件等。但这些操作极易将安卓系统的引导镜像文件刷坏,直接导致产品无法开机启动。



技术实现要素:

本申请主要解决的技术问题是提供一种安卓系统的启动方法、移动终端及具有存储功能的装置,以提高安卓系统启动的成功率。

为解决上述技术问题,本申请采用的一个技术方案是:提供一种安卓系统的启动方法。所述方法包括:在所述安卓系统启动的引导加载阶段,加载编译引导镜像文件,所述编译引导镜像文件包括原始引导镜像文件和纠错文件,所述纠错文件是采用纠错算法对所述原始引导镜像文件进行计算而得到的;若加载失败,则获取所述纠错文件,进而采用所述纠错算法对所述原始引导镜像文件进行纠错处理;若纠错处理成功,则重新加载纠错处理后的引导镜像文件,进而启动所述安卓系统。

其中,所述纠错算法为前向纠错算法。

其中,所述纠错算法通过里德-所罗门码实现。

其中,所述纠错文件是采用纠错算法和交错技术对所述原始引导镜像文件进行计算而得到的。

其中,所述若加载失败,则获取所述纠错文件,进而采用所述纠错算法对所述原始引导镜像文件进行纠错处理,包括:若加载失败,则从所述编译引导镜像文件的头部数据中解析所述原始引导镜像文件的大小,进而获得所述纠错文件的偏移地址,所述纠错文件包括纠错文件头部数据和纠错文件纠错数据;通过所述纠错文件的偏移地址,读取所述纠错文件头部数据;若对所述纠错文件头部数据校验成功,则在所述纠错文件头部数据的后面获取所述纠错文件纠错数据,其中,所述纠错文件头部数据占用一页的存储空间;基于所述纠错文件纠错数据,采用所述纠错算法对所述原始引导镜像文件进行纠错处理。

其中,若对所述纠错文件头部数据校验失败,则确定所述纠错文件被破坏,无法对所述原始引导镜像文件进行纠错处理,启动失败。

其中,若纠错处理失败,则确定无法修复所述原始引导镜像文件,启动失败。

其中,所述若纠错处理成功,则重新加载纠错处理后的引导镜像文件,进而启动所述安卓系统,包括:若纠错处理成功,则将所述纠错处理后的引导镜像文件覆盖所述原始引导镜像文件,并重新加载纠错处理后的引导镜像文件;若重新加载成功,则启动所述安卓系统,并将纠错处理后的编译引导镜像文件写入引导镜像分区中。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种移动设备。所述移动设备包括:处理器、存储器以及通信电路,所述处理器分别耦接所述存储器和所述通信电路,所述处理器、所述存储器、所述通信电路用于在工作时能够实现上述方法中的步骤。

为解决上述技术问题,本申请采用的又一个技术方案是:提供一种具有存储功能的装置。所述装置上存储有程序数据,所述程序数据用于被执行时实现上述方法中的步骤。

本申请实施例的有益效果是:区别于现有技术,本申请实施例利用纠错算法对原始引导镜像文件进行纠错编码,当加载编译引导镜像文件失败时,采用该纠错算法对该原始引导镜像文件进行纠错处理,并在纠错成功后重新加载纠错处理后的引导镜像文件,以启动该安卓系统,对原始引导镜像文件进行纠错处理,能够改善因原始引导镜像文件损坏,而导致加载编译引导镜像文件失败的问题,进而能够提高安卓系统启动的成功率。

附图说明

图1是本申请安卓系统的启动方法一实施例的流程示意图;

图2是图1实施例的编译引导镜像文件的结构示意图;

图3是图1实施例中步骤102的方法流程示意图;

图4是本申请移动设备一实施例的结构示意图;

图5是本申请具有存储功能的装置一实施例的结构示意图。

具体实施方式

安卓系统是一种基于linux的开源移动操作系统。安卓系统启动流程主要分为启动linux系统阶段及启动安卓系统阶段,其中,启动linux系统即为引导加载阶段,主要为加载引导镜像文件及内核,启动安卓系统的阶段主要是加载初始进程,该初始进程是由该内核启动的用户级进程,是安卓系统的第一个进程,该初始进程启动后,整个安卓系统就启动了。引导镜像文件是安卓系统自定义的文件,其头部有特殊的信息,用于保证该引导镜像文件能被正确加载,它是安卓系统启动非常关键的一个文件。如果该文件的内容出现损坏,会导致安卓系统启动失败。

请一并参阅图1、图2,图1是本申请安卓系统的启动方法一实施例的流程示意图;图2是图1实施例的编译引导镜像文件的结构示意图。本实施例安卓系统的启动方法具体包括以下步骤:

步骤101:在安卓系统启动的引导加载阶段,加载编译引导镜像文件201,其中,编译引导镜像文件201包括原始引导镜像文件202和纠错文件203,纠错文件203是采用纠错算法对原始引导镜像文件202进行计算而得到的。

本实施例的原始引导镜像文件202由头部数据204、内核205及虚拟内存盘206组成。本实施例的纠错文件203设置于原始引导镜像文件202的后面。当然在其它实施例中,纠错文件203还可以设置于原始引导镜像文件202的其它位置,如头部数据204前面等。

可选地,本实施例的纠错算法为前向纠错算法,该算法是在原始引导镜像文件202的信息码元序列上附加一些监督码元,这些多余的监督码元与信息码元之间以某种规则相互关联。在后续安卓系统端启动过程中,按照该规则检验信息码元与监督码元之间的关系,一旦原始引导镜像文件202发生差错,其信息码元与监督码元之间的关系将受到破坏,从而可以发现错误,且纠正该错误。这种纠错算法的实时性较好。当然,在其它实施例中,可以采用自动请求重发、混合纠错、比特交织等相关算法对原始引导镜像文件202进行计算,以得到编译引导镜像文件201。

可选地,本实施例的前向纠错算法采用里德-所罗门(reed-solomon,rs)码实现。rs码是前向纠错的信道编码,既可以纠正随机错误,还可以纠正突发错误,具有很强的纠错能力。rs码具体实现过程为:在发送端对多个点上对多项式求冗余,然后将其传输或者存储,当接收端正确的收到足够的点后,它就可以恢复原来的多项式,即使接收到的多项式上有很多点被噪声干扰失真。

本实施例采用rs码的具体模型为rs(255,n),其中,n表示n个原始信息码元,形成码长为255的数据,t=(255-n)/2,t表示可纠正的最大未知错误,n越小,t越大,可纠正的错误就越多,一般地,取n=253或n=251。其中,n、t均为自然数。

当然,在其它实施例中,可以采用卷积码或其它分组码来代替rs码,如格雷码、多维奇偶校验码及汉明码等。

可选地,为提高连续数据的错误纠正率,本实施例的纠错文件203采用上述纠错算法和交错技术对原始引导镜像文件202进行计算,得到编译引导镜像文件201。具体实现过程为:把原始信息码元分为n个源块,不足的码元以0补齐;取每个源块的第i个码元,以组成第i个信息码元,然后利用上述纠错算法计算纠错码。因此,每个纠错码涵盖了横跨n个源块的n个码元,每个纠错码可以从n个码元中纠正t个错误数据,对原始信息码元来说,最多能纠正连续的t/n*t个错误码元,其中t是原始码元大小,n、t、i均为自然数。

步骤102:若编译引导镜像文件201加载失败,则获取纠错文件203,进而采用上述纠错算法对原始引导镜像文件202进行纠错处理。

本实施例步骤102的采用上述纠错算法对原始引导镜像文件202进行纠错处理与上述步骤101的采用上述纠错算法对原始引导镜像文件202进行计算的过程是对称的,前者是对原始引导镜像文件202进行纠错编码的过程,后者是对原始引导镜像文件202进行纠错解码的过程。

可选地,请一并参阅图2、图3,图3是图1实施例中步骤102的方法流程示意图。本实施例的纠错文件203包括纠错文件头部数据207及纠错文件纠错数据208。本实施例具体包括以下步骤:

步骤301:若加载失败,则从编译引导镜像文件201的头部数据204中解析原始引导镜像文件202的大小,进而获得纠错文件203的偏移地址。本实施例中,原始引导镜像文件202的文件大小就是纠错文件203的相对于原始引导镜像文件202的偏移地址,因为纠错文件203位于原始引导镜像文件202的后面。

本实施例的原始引导镜像文件202的头部数据204、内核205及虚拟内存盘205分别占用一页或多页的存储空间,一页通常是操作系统为程序分配的,或内存传输,或外存传输的最小单元。本实施例不限定一页的大小,可以是1024字节、2048字节等。

其中,原始引导镜像文件202的头部数据204的数据结构如下:

structboot_img_hdr

{

unsignedcharmagic[boot_magic_size];

unsignedkernel_size;//sizeinbytes,内核205大小

unsignedkernel_addr;//physicalloadaddr,内核205地址

unsignedramdisk_size;//sizeinbytes,虚拟内存盘206大小

unsignedramdisk_addr;//physicalloadaddr,虚拟内存盘206地址

unsignedsecond_size;//sizeinbytes

unsignedsecond_addr;//physicalloadaddr

unsignedtags_addr;//physicaladdrforkerneltags

unsignedpage_size;//flashpagesizeweassume,一页大小

unsignedunused;//futureexpansion:shouldbe0

unsignedos_version;

unsignedcharname[boot_name_size];//asciizproductname

unsignedcharcmdline[boot_args_size];

unsignedid[8];//timestamp/checksum/sha1/etc

};

可知,原始引导镜像文件202的头部数据204中定义了内核205的大小及虚拟内存盘206的大小,且头部数据204的大小也由其数据结构,因此,从头部数据204重可解析得到原始引导镜像文件202的大小。

步骤302:通过纠错文件203的偏移地址,读取纠错文件头部数据207。通过上述分析可知,纠错文件头部数据207的地址为原始引导镜像文件202的存储地址加上原始引导镜像文件202的大小。

步骤303:若对纠错文件头部数据207校验成功,则在纠错文件头部数据207的后面获取纠错文件纠错数据208。本实施例的纠错文件头部数据207占用一页的存储空间,因此纠错文件纠错数据208的存储地址位为纠错文件头部数据207加上一页存储空间所占用的地址。

其中,纠错文件头部数据207的数据结构如下:

structfec_header{

uint32_tmagic;//magic,mustbe0xfecfecfe

uint32_tversion;//fecversion,mustbe0

uint32_tsize;//theheadersize

uint32_troots;//themaxsizecancorrected,roots=t

uint32_tfec_size;//thesizeoffec,notincludetheheader

uint64_tinp_size;//thedatasizeoferrorcorrectingcode

uint8_thash[sha256_digest_length];//fechash

}fec_header;

本实施例对纠错文件头部数据207的校验主要是对其数据结构中的各变量进行校验,只有当所有的变量均校验成功后,对纠错文件头部数据207校验才成功。其中,各参数校验具体包括:校验变量magic是否为0xfecfecfe,该值是在编译原始引导镜像文件202时设置的约定值;校验变量version是否为0,该值是在编译原始引导镜像文件202时设置的约定值;校验变量size是否为fec_header结构体的大小;检验变量roots是否能被2整除,并且取值范围在0至255之间;校验变量fec_size是否为纠错文件203的大小与纠错文件头部数据207大小的差值;校验变量inp_size是否为原始引导镜像文件202的内核205及虚拟内存盘206的大小之和;校验变量hash是否与新的hash值一致。

若对纠错文件头部数据207校验失败,则确定纠错文件203被破坏,无法对原始引导镜像文件202进行纠错处理,安卓系统启动失败。

步骤304:基于纠错文件203纠错数据,采用上述纠错算法对原始引导镜像文件202进行纠错处理。该纠错算法在上述实施例中进行了详细的叙述,这里不重复。

步骤103:若纠错处理成功,则重新加载纠错处理后的引导镜像文件,进而启动安卓系统。具体地,若纠错处理成功,则将纠错处理后的引导镜像文件覆盖原始引导镜像文件202,并重新加载纠错处理后的引导镜像文件;若重新加载成功,则启动安卓系统,并将纠错处理后的编译引导镜像文件写入引导镜像分区中。因每次启动linux系统时,都会先将编译引导镜像文件201以读文件的方式保存到随机存取存储器中,因此,对原始引导镜像文件202的纠错处理是在随机存取存储器中进行,当每次关闭安卓系统后,随机存取存储器都会清零,因此本实施例将纠错处理后的编译引导镜像文件写入引导镜像分区中,可以保证下次开启linux系统时,保存到随机存取存储器中的原始引导镜像文件202是经过错纠错处理的,可以避免重复纠错。

若纠错处理失败,则确定无法修复原始引导镜像文件202,安卓系统启动失败。

区别于现有技术,本实施例利用纠错算法对原始引导镜像文件进行纠错编码,当加载编译引导镜像文件失败时,采用该纠错算法对该原始引导镜像文件进行纠错处理,并在纠错成功后重新加载纠错处理后的引导镜像文件,以启动该安卓系统,通过对原始引导镜像文件进行纠错处理,能够改善因原始引导镜像文件损坏,而导致加载编译引导镜像文件失败的问题,进而能够提高安卓系统启动的成功率。

参阅图4,图4是本申请移动设备一实施例的结构示意图。本实施例移动终端401的操作系统为安卓系统,且采用上述方法实施例对移动终端401的安卓系统进行启动。关于安卓系统的启动方法在上述方法实施例中进行了详细的叙述,这里不赘述。本实施例移动终端401包括:处理器402、存储器403以及通信电路404,处理器402分别耦接存储器403和通信电路404,处理器402、存储器403、通信电路404在工作时能够实现上述方法实施例的安卓系统启动方法,以启动移动终端401。

本实施例移动终端401可以是但不局限于手机、平板电脑、电视机、手表等。

区别于现有技术,本实施例通过对原始引导镜像文件进行纠错处理,能够改善因原始引导镜像文件损坏,而导致加载编译引导镜像文件失败的问题,进而能够提高安卓系统启动的成功率。

参阅图5,图5是本申请具有存储功能的装置一实施例的结构示意图。本实施例具有存储功能的装置501存储有程序数据502,程序数据502被执行时实现上述方法实施例的方法,以启动安卓系统。关于安卓系统的启动方法在上述方法实施例中进行了详细的叙述,这里不赘述。

本实施例可以是但不局限于u盘、sd卡、pd光驱、移动硬盘、大容量软驱、闪存、多媒体记忆卡等。

区别于现有技术,本实施例能够提高安卓系统启动的成功率。

以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1