首页> 中国专利> 一种快速有效的安卓Sparse格式镜像下载方法

一种快速有效的安卓Sparse格式镜像下载方法

摘要

本发明公开了一种快速有效的安卓Sparse格式镜像下载方法,包括以下步骤:将Sparse格式镜像存储在主机硬盘上;将镜像分割为若干块;每块再分割为若干包;块1的第一个包被加载到主机内存并通过USB传输到设备端,设备端读取数据并写入RAM,接着块1的其它包依次执行类似操作;判断块1是否为Sparse格式,是则存入FIFO队列;执行开始写操作,开始将块1写入EMMC,同时设备端发送ACK值给主机;主机收到,按类似步骤将其它块存入FIFO队列;设备端的主进程监测镜像写入EMMC的进度,依次完成若干个块的写入;待所有镜像块写入完毕,发送“OK”ACK值给主机;主机收到,结束下载。本发明改善了传统安卓镜像下载方法的不足,实现在较低的硬件配置需求下达到较快的安卓镜像下载速度。

著录项

  • 公开/公告号CN106155626A

    专利类型发明专利

  • 公开/公告日2016-11-23

    原文格式PDF

  • 申请/专利权人 江苏大学;

    申请/专利号CN201610523938.0

  • 申请日2016-07-04

  • 分类号G06F5/06(20060101);

  • 代理机构

  • 代理人

  • 地址 212013 江苏省镇江市京口区学府路301号

  • 入库时间 2023-06-19 00:56:20

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-08-27

    授权

    授权

  • 2016-12-21

    实质审查的生效 IPC(主分类):G06F5/06 申请日:20160704

    实质审查的生效

  • 2016-11-23

    公开

    公开

说明书

技术领域

本发明涉及计算机的数据通讯领域,更具体地说是涉及一种快速有效的安卓Sparse格式镜像下载方法。

背景技术

数据传输是主机和设备端两方的软件相互配合完成的,安卓设备镜像一般分为Bootloader/BIOS,Boot,System,Modem,User等。其中,System的大小一般超过1GB,System镜像的下载对主机和手机等设备的硬件性能要求较高,同时考虑到用户的使用需求,对数据传输的速度要求也较高,即实现快速下载。

传统的安卓镜像下载方法主要有两种,具体描述如下:

方法一:如图1所示,如果System镜像是压缩zip包,具体下载步骤为:

S1:将所有的镜像存储在主机硬盘上;

S2:通过下载工具,将镜像加载到主机内存,并通过USB传输到设备端;

S3:设备端接收来自主机的镜像,并将镜像存储在cache分区(android默认)或者直接写入RAM中;

S4:将镜像写入设备存储介质EMMC;

S5:写入完成并做校验后,发送“OK”ACK值反馈给主机;

S6:结束下载。

方法一的安卓镜像下载方法的缺点有:

(1)S2中,如果System压缩包太大,例如大于1GB,则主机需具备不低于1.5GB的内存配置;

(2)S2中,如果是多线程同时下载,那么主机需要的内存配置更是远大于1GB;

(3)S3中,镜像通过USB传输到设备端,需要先写入cache分区,然后解压缩并依次写入EMMC,这里花费了额外的时间去写EMMC cache分区;

(4)S3中,镜像通过USB传输到设备端,如果直接写入RAM中,则RAM需要大于System镜像的大小,而很多设备都无法满足;

(5)S4中,写入EMMC的过程需要每个bit都写,从而浪费了大量的时间;

(6)从主机端到设备端,一旦传输过程中断,就需要从头开始。

方法二:如图2所示,如果System镜像是Sparse格式,假设其大小为1GB,具体下载步骤为:

S1:将所有的镜像存储在主机硬盘上;

S2:通过fastboot命令,将镜像按照一定大小分为若干块,设分别命名为块1、块2、块3、块4;

S3:将块1加载到主机内存,并通过USB传输到设备端;

S4:设备端读取主机发送的镜像,并写入RAM中;

S5:镜像从RAM写入设备存储介质EMMC;

S6:写入完成并做校验后,发送“OK”ACK值反馈给主机;

S7:主机收到“OK”ACK值后,重复步骤S3至S5,将块2写入设备存储介质EMMC,接着块3、块4执行类似操作;

S8:结束下载。

方法二的安卓镜像下载方法的缺点有:

(1)镜像块1、2、3、4被依次写入设备存储介质EMMC,只有当前面的镜像块传输并写入完成后才能传输及写入后面的镜像块,因此未能合理利用多线程写入机制,浪费了大量的时间;

(2)如果分割的镜像块过大,仍然对主机和设备的硬件性能有严格限制。

因此,找到一种对硬件配置需求低,同时下载速度较快的安卓镜像下载方法显得十分必要,能大大节省下载时间,提升下载效率。

发明内容

本发明克服现有安卓镜像下载方法的不足,提出一种快速有效的安卓Sparse格式镜像下载方法,解决了传统安卓镜像下载方法对主机和设备硬件性能的限制,同时大大节省了下载时间,提升了下载效率。

与传统的安卓镜像下载方法相比,本发明将数据以包的形式组织,以批量传输的方式发送,同时引入FIFO队列,将前一块的数据先存入FIFO队列,即可进行下一块数据的传输,从而使写入EMMC步骤和从主机到设备的数据传输步骤可以并行进行,大大节省了下载时间。

实现本发明的技术方案如下:

一种快速有效的安卓Sparse格式镜像下载方法,包括如下步骤:

S301:将Sparse格式的镜像存储在主机硬盘上;

S302:通过fastboot命令,将system镜像分割为若干块,分别命名为块1、块2、块3、块4……;

S303:将每个块再次分割为若干个包,设块1分割的包命名为包11、包12……,其他块类似处理;

S304:将包11加载到主机内存并通过USB传输到设备端;

S305:设备端读取包11数据并写入RAM;

S306:将包12加载到主机内存并通过USB传输到设备端;

S307:设备端读取包12数据并写入RAM;块1的其他包同样处理;

S308:判断块1是否为Sparse格式,如果是的话,存入FIFO队列;否则,不存入;

S309:开始执行写操作,将块1写入EMMC;

S310:设备端发送ACK值给主机;

S311:主机收到ACK值,重复步骤S303至S308,将块2分包分别传输到设备端、存入FIFO队列;接着块3、块4……进行同样的操作,存入到FIFO队列;

S312:设备端的主进程监测镜像写入EMMC的进度,并分别完成块1、块2、块3、块4……的写入;

S313:设备端的主进程监测到所有的镜像块都写入到EMMC后,发送“OK”ACK值反馈给主机;

S314:主机收到“OK”ACK值后,结束下载。

进一步,所述步骤S302中,若System镜像的大小为1.0GBytes,可按照300M的大小分割System镜像,分割的块1、块2、块3、块4的大小分别为288M、312M、294M、130M。

进一步,所述步骤S303中,可按照160M将块1分割得到包11、包12的大小为160M、128M;块2分割得到的包21、包22的大小为160M、152M;块3分割得到包31、包32的大小分别为150M和144M;块4分割得到包41、包42的大小分别为70M和60M。

进一步,还包括所有分割的包在内存中存放的地址可通过软件明确定义,下载完成后,对应的指令指针指向镜像存放的起始地址。

进一步,还包括所有分割的包从主机内存传输到设备端时,数据包传输的格式包括校验位和数据位。

本发明的有益效果:

与传统的安卓镜像下载方法相比,本发明将数据以包的形式组织,以批量传输的方式发送,改善了传统安卓镜像下载方法对主机和设备硬件性能的限制;同时,本发明引入了FIFO队列,将前一块的数据先存入FIFO队列,即可进行下一块数据的传输,从而使写入EMMC步骤和从主机到设备的数据传输步骤可以并行进行,大大节省了下载时间,提高了下载效率。因此它改善了传统安卓镜像下载方法的不足,实现在较低的硬件配置需求下达到较快的安卓镜像下载速度。

附图说明

图1是背景技术中方法一所述的System镜像是压缩zip包的传统的安卓镜像下载流程;

图2是背景技术中方法二所述的System镜像是Sparse格式的传统的安卓镜像下载流程;

图3是本发明所述的安卓镜像下载流程。

具体实施方式

下面结合附图对本发明提出的一种快速有效的安卓Sparse格式镜像下载方法作进一步详述。

如图3所示,本发明所述的一种快速有效的安卓Sparse格式镜像下载方法,具体步骤如下:

S301:将镜像存储在主机硬盘上,System镜像为Sparse格式,假设大小为1.0GB;

S302:通过fastboot命令,将system镜像分割为若干块;针对1.0GB大小的System镜像,按照300M的大小分割system镜像,得到四个块,块1、块2、块3、块4,且分割的块1、块2、块3、块4的大小分别为288M、312M、294M、130M;

S303:将每个块分别再次分割为若干包;针对S302中块的大小,将块1再次分割为2个包,分别命名为包11、包12;按照160M将块1分割得到包11、包12的大小为160M、128M;块2分割得到的包21、包22的大小为160M、152M;块3分割得到包31、包32的大小分别为150M和144M;块4分割得到包41、包42的大小分别为70M和60M。

S304:包11被加载到主机内存并通过USB传输到设备端;

S305:设备端读取包11数据并写入RAM;

S306:包12被加载到主机内存并通过USB传输到设备端;

S307:设备端读取包12数据并写入RAM;

S308:判断块1是否为Sparse格式,如果是的话,存入FIFO队列;否则,不写入;

S309:开始将块1写入EMMC,注意此处只是执行开始写操作,并不是写完;

S310:设备端发送ACK值给主机;

S311:主机收到ACK值,重复步骤S303至S308,将块2分包分别传输到设备端,存入FIFO队列,接着块3、块4执行类似的操作,写入FIFO队列;

S312:设备端的主进程监测镜像写入EMMC的进度,并分别完成块1、块2、块3和块4的写入;

S313:设备端的主进程监测到所有的镜像块都被写入到EMMC后,完成校验,并发送“OK”ACK值反馈给主机;

S314:主机收到“OK”ACK值后,结束下载。

进一步,所有分割的包在内存中存放的地址可通过软件明确定义,下载完成后,对应的指令指针指向镜像存放的起始地址;

进一步,所有分割的包从主机内存传输到设备端时,数据包传输的格式包括校验位和数据位。

上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献