不积跬步,无以至千里;
不积小流,无以成江海。
出自荀子《劝学篇》
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升级所要了解的基本知识,下一章我会详细讲解如何由两个不同的基本包使用脚本生成差分升级包,敬请关注哦。。。
关注微信公众号【嵌入式C部落】,让我们一起进步,一起成长。