OTA升级详解(一)

不积跬步,无以至千里;

不积小流,无以成江海。

出自荀子《劝学篇》

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部落】,获取更多精华文章,海量编程资料,让我们一起进步,一起成长。

 

原文地址:https://www.cnblogs.com/nuoyan/p/11777424.html

时间: 2024-10-07 22:28:09

OTA升级详解(一)的相关文章

神刀直升资格获取 新老玩家助力升级详解

距离天刀公测仅一周的时间,而精英服也在今日进行了更新,大家最关心的无非是神刀的直升资格了,一起看看吧. 问:玩家关心的7月1日神刀直升资格如何获取? 老服(除下一条所列的服务器外)的玩家会在官网即将上线的活动页面上通过累积登录或回流获取限时领取神刀直升道具资格.该道具可以领取到神刀角色,使用后直接升到85级并附赠1.2亿修为和海量成长助力道具. 新服(2016年5月后开放的服务器)因突破等级封印时间不足的缘故,将无法通过活动获取神刀直升资格,但仍然享受新成长体系的急速升级和快速追击效果. 问:针

【直播预告】云栖直播:阿里热修复产品HotFix2.0升级详解

全面--你知道吗?1891年,卡尔森纳做出的第一把瑞士军刀,只有螺丝刀和开罐器.经过一代又一代能工巧匠的打磨,这把刀陆续增加了锯子.剪刀.镊子.放大镜.改锥,甚至内藏激光.LED手电筒.USB记忆碟等功能. 稳定--你知道吗?公元前1500多年前,埃及人就已经用绳子和竖棍做成了简易天平,成为现代天平的雏型.天平是平衡的象征,托盘内不断增加的砝码,更是自信与质量的保障. 精准--你知道吗?1608年,荷兰眼镜商汉斯·利伯希用两块镜片发明了人类历史上第一架望远镜,随着技术的发展,大千世界在人类的探索

RPM命令详解(安装、升级、卸载)

RPM命令详解(安装.升级.卸载) rpm 常用命令1.安装一个包# rpm -ivh 2.升级一个包# rpm -Uvh 3.卸载一个包# rpm -e 4.安装参数--force 即使覆盖属于其它包的文件也强迫安装--nodeps 如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装. 5.查询一个包是否被安装# rpm -q < rpm package name> 6.得到被安装的包的信息# rpm -qi < rpm package name> 7.列出该包中有哪些文

详解Linux运维工程师打怪升级篇

详解 Linux 运维工程师打怪升级篇 积累经验篇 做运维也快4年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师 是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感知前方潮流变化.如:今年大数据,人工智能比较火...(相对表示就是 python 比较火) 前面也讲了运维基础篇,发现对很多人收益挺大,接下来也写下关于这4年多的运维实践经验,从事了2年多游戏运维,1年多安全运维,1年大数据运维,相关行业信息不能

flash builder4.7 for Mac升级AIRSDK详解

使用flash builder 打包ANE时或者打包ipa时候常常会遇到AIRSDK版本低的问题,然而flash builder4.7默认使用的AIRSDK是3.4而flash builder4.7 中 Flex SDK中默认的AIRSDK是3.1,大家可能有疑问怎么有二个AIRSDK.我的理解是Flex SDK中的AIRSDK是低版本,低版本AIRSDK建立的ANE可以在高版本AIRSDK上跑,所以用Flex SDK中的AIRSDK打包ANE,之后用flash builder4.7默认使用的高

Zabbix告警升级机制图文详解

Zabbix告警升级机制图文详解 配置目的 随着监控项目的增多,有一些警告性质的报警可能不许要让领导收到,如果监控项长时间处于一个反复报警的状态时,可能是没有人去解决 也可能是他们无法去解决的时候,再去向上级发送告警 那么zabbix就可以通过它的告警机制去实现 它可以通过自定义时间段,发送消息.命令 从而形成一个梯度的报警机制.通过下图解释梯度报警的设置方法. 简单的配置第个,剩下的配置类似,重点不在于如何配置这个,重点在于如何配置"告警升级"和发送时间的理解 配置图解 步骤持续时间

Android OTA升级包制作脚本详解(二,解压缩)

第一步:解压缩(ota_from_target_files) print "unzipping target target-files..." OPTIONS.input_tmp, input_zip = common.UnzipTemp(args[0]) 上面的代码是开始进行解压缩的入口 def UnzipTemp(filename, pattern=None): """Unzip the given archive into a temporary d

Android API Levels 详解

Android API Levels 当你开发你的Android应用程序时,了解该平台API变更管理的基本方法和概念是很有帮助的.同样的,知道API级别标识以及该标识如何保障你的应用与实际硬件设备相兼容对于开发及后续的发布.维护都是有益的. 本节内容告诉你API级别的知识,以及它如何影响你开发和使用的应用. 关于如何使用“以API级别进行过滤”来使用API参考手册,从本文末尾的文档过滤(Filtering the documentation)中可以得到更多信息. API级别是什么?(What i

详解“FTP文件传输服务”安装配置实例

"FTP文件传输服务"安装配置实例 家住海边喜欢浪:zhang789.blog.51cto.com 目录 简介 ftp工作原理 常见的FTP服务 Vsftpd服务器的安装 Vsftpd.conf配置文件详解 配置FTP服务器实例 实例:配置匿名用户 实例:配置本地用户登录 实例:配置虚拟用户登录(MySQL认证) 实例:控制用户登录 实例:设置欢迎信息 分析vsftpd日志管理 FTP服务器配置与管理 简介 FTP 是File Transfer Protocol(文件传输协议)的英文简