hi,你好!欢迎访问本站!登录
本站由网站地图腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

OTA升级详解(一)

2019-11-18杂谈搜奇网58°c
A+ A-


不积跬步,无以致千里;

不积小流,无以成江海。

出自荀子《劝学篇》

 

 

 1、观点诠释

OTA是何物? 英文诠释为 Over The Air,既空中下载的意义,细致指长途无线体式格局,OTA 手艺能够邃晓为一种长途无线升级手艺;

FOTA:Firmware OverThe Air/固件空中升级,经由历程云端为具有连网功用的装备:比方手机、平板电脑、挪动互联网装备等供应固件升级效劳,手机中的固件升级即可称为 FOTA;

在3G、4G收集广泛的本日,许多时刻照样要斟酌流量限定,假如步入5G时期,虽然流量已不在是瓶颈,然则因为功用小然则重要的版本升级比拟团体固件升级来讲照样相称不错的挑选。

2、基础学问

做了有一段时间的OTA升级了,主如果基于Android的差分及全量升级,设计对当前控制的学问在做一个体系的梳理与总结,在举行正式的流程解说前我会先对OTA的一些原始包构造、目的包构造做细致申明,本节算是一个基础章节,为邃晓、消化背面的重要流程做铺垫。

包构造

制造升级包具有肯定的花样,生成它须要原始包,原始包也有牢固的花样,基础都是经由历程体系工程编译出来,构造以下:

 

 

 目次申明

 

 

 升级包构造

 

 

 目次申明

 

 生成升级包的东西

用于生成OTA差分包的须要运用到python剧本、C源码编译的可实行文件,这些都是开源的,以下

 

 

 文件功用

ota_from_target_files:为一个python剧本,做包进口从这里最先,生成包的重要事情也是在这里完成。

bsddiff:此可实行文件重要用户盘算非紧缩的文件的差别,比方我们盘算rootfs文件的差别,就运用的此剧本。

imgdiff:此可实行文件重要用户盘算紧缩文件的差别,支撑的花样有*.gz,*.zip,*.apk,*.jar,*.img。

fs_config:此可实行文件重要用户盘算原始文件的gid、uid、mode,然则此种体式格局有一个弊病就是,fs_config现实上是硬编码的,假如我们新增一个文件,有能够在举行增添后,不能将其权限举行增添。

common.py:重要定义了一些公用的函数,如:猎取分区范例、盘算文件差分、生成patch文件等。

edify_generator.py:主如果生成updater-script文件的内容,还包含将文件增添到升级包中。

 以上就是OTA升级所要相识的基础学问,下一章我会细致解说怎样由两个差别的基础包运用剧本生成差分升级包,敬请关注哦。。。

  

青,取之于蓝,而青于蓝;

冰,水为之,而寒于水。

出自荀子《劝学篇》

 本章申明

      上篇 OTA升级详解(一)重要讲到OTA的一些基础学问,本篇重要内容为详解OTA升级包的制造历程,梳理做包症结细节,因为做包剧本较长,文件较多。暂不根据剧本解释的体式格局举行展现,重要根据挪用函数递次图+症结步骤文字描述的体式格局来解说,反复内容会自动省略。解说中的脚步是基于  Android OTA Update 举行的,假如流程与读者一切的有差别,不要焦急,团体流程就是下面的模样,增添的只是一些细节优化罢了,根据现实脚步流程为准就好。

制造流程申明

       制造升级包 ota_from_target_files为进口,能够传入参数,如:是不是是差分包,原始包、目的版本包(包构造在一中有细致解说,以zip包的情势传入)。以下是main函数的基础历程

1、ota_from_target_files-main大抵流程,这里主如果做了一些准备事情,中心事情在末了一个函数中:

 

 

 

 2、ota_from_target_files - WriteIncrementalOTAPackage()

这里参数有4个,分别是:

input_zip     ->    基础包

source_zip   ->    目的包

output_zip   ->    升级包(行将生成)

OPTIONS.fota    ->   fota标记

WriteIncrementalOTAPackage--流程以下:

 

 

 

 重点申明:

1、updater-script 的生成:是由script(列表)而来,此列表的内容来自于种种生成历程当中不停的增添,每一条是一条实行命令。

2、ComputePatch盘算差分:这里对假如文件范例是一些紧缩文件,如:.img、.apk、.jar、.zip、.gz,会运用imgdiff可实行文件来盘算,假如是一般文件则会运用到bsdiff举行盘算。

3、文件的权限题目:system分区来讲,它是有文件体系的,要对文件体系下的每一个文件盘算的差分,在zip包中并没有保留新增或许变动文件的gid、uid、mode等属性,所以须要对新增文件、或许权限变动文件举行权限修正。保证体系一般运转或许app具有实行权限。两种文件权限的猎取体式格局一种是fs_config(是一种硬编码体式格局,比较枯燥),读取文件绝对路径,猎取这些信息,另一种体式格局是来自于原始包中,位于META/filesystem_config.txt,这就请求在生成原始包时,将文件的权限保留到此文件中,文件花样与运用fs_config生成的一致。末了运用set_perm_recursive/set_perm对目次与文件来举行权限恢复。

花样:   绝对路径  gid  uid  mode

样例:   system/etc/dbus.conf 1000 1000 440        

4、update-binary:来自于目的包中位置以下 OTA/bin/updater

5、sha值从何而来:原始文件与目的文件是经由历程has1值去婚配的 在LoadSystemFiles 函数中盘算而来

 

经由以上步骤就能够生成一个差分包,构造以下(样例):

 

 

 

 对应的updater-script以下(样例):

 

 

 

 以上就是运用剧本举行OTA差分包制造的悉数历程。

本人自身不是做专业python,有些处所解说的能够不是很合理,还愿望偕行高人指摘指导。关于bsdiff与imgdiff算法并没有细致研讨过。当前重点关注重要流程。

相识了以上内容,就能够对此东西举行个性化的修正了,如增添其他新文件到升级包中、增添流程症结字申明等等。然则知道了这些内容,许多人照样对OTA升级比较疑心,

那我们下一节就能够基于本章内容举行OTA升级历程的细致解说,下一章以后人人就会邃晓,升级包中的每一个文件的作用及存在的意义,以及recovery运用中心组件updater-script

与update-binary完成全部差分包的升级,敬请期待。。。

 

 

 

 关注微信民众号【嵌入式C部落】,猎取更多英华文章,海量编程材料,让我们一同提高,一同生长。 

 

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
OTA升级详解(一)

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/281964.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>