下面介绍VS-RK3399 的recovery模式升级方法,主要是针对深圳视壮科技有限公司的主板介绍。

1.1 Recovery 模式简介

Recovery 模式指的是一种可以对安卓机内部的数据或系统进行修改的模式,(类似于windows pe 或

DOS)。在这个模式下我们可以刷入新的安卓系统,或者对已有的系统进行备份或升级,也可以在此恢复出

厂设置。

1.2 Recovery 模式在框架层的位置

Android 启动后,会先运行bootloader。Bootloader 会根据某些判定条件决定是否进入recovery 模

式。Recovery 模式会装载recovery 分区,该分区包含recovery.img。Recovery.img 包含了标准内核(和

boot.img 中的内核相同)以及recovery 根文件系统。

Android recovery 三个部分两个接口,recovery 的工作需要整个软件平台的配合,从架构角度看,有

三个部分:

1. Main System: 用boot.img 启动的Linux 系统,Android 的正常工作模式。

2. Recovery:用recovery.img 启动的Linux 系统,主要是运行recovery 程序。

3. Bootloader:除了加载、启动系统,还会通过读取flash 的MISC 分区获得来自Main System 和

Recovery 的消息,并以此决定做何种操作。

两个通信接口:

1. /cache/recovery/:command、log、intent

2. BCB(Bootloader Control Block):misc 分区

Main System 如何进入Recovery 模式:当我们在Main System 使用update.zip 包进行升级时

系统会重启并进入recovery 模式。在系统重启前,我们可以看到Main System 定会向recovery 域写入

boot-recovery(粉红色线),用来告知bootloader 重启后进入Rcovery 模式。这一步是必须的,至于

Main System 是否会向recovery 域写入值我们在源码中不能肯定这一点。即便如此,重启进入Recovery

模式后,Bootloader 会从/cache/recovery/command 中读取值并放入到BCB 的recovery 域。而Main

System 在重启之前肯定会向/cache/recovery/command 中写入Recovery 将要进行的操作命令。

1.installPackage: RecoverySystem 的接口,完成升级包路径转换,并调用bootCommand。

2.bootCommand:RecoverySystem 的接口,将命令写入/cache/recovery/command,并调用

pm.reboot。

3.Pm.reboot:PowerManager 的接口,重启并进入Recovery 模式。

2 编译OTA 包

2.1 OTA 介绍

OTA (over the air)升级是Android 系统提供的标准软件升级方式。它功能强大,提供了完全升级

(完整包)、增量升级模式(差异包),可以通过本地升级,也可以通过网络升级。

2.2 生成完整包

完整包所包含内容:system、recovery、boot.img

发布一个固件正确的顺序:

1. make -j4

2. make otapackage -j4

3. ./mkimage.sh ota

发布固件必须使用./mkimage.sh ota,将boot 与kernel 打包,不需要单独烧kernel,如果量产固件

是分开的,将会影响后面差异包升级,除非你不需要用差异升级。

在out/target/product/rkxxxx/目录下会生成ota 完整包rkxxxx-ota-eng.root.zip,改成

update.zip 即可拷贝到T 卡或者内置的flash 进行升级。

2.3 生成差异包

OTA 差异包只有差异内容,包大小比较小,主要用于OTA 在线升级,也可T 卡本地升级。OTA 差异包

制作需要特殊的编译进行手动制作。

(1)首先发布v1 版本的固件,生成v1 版本的完整包

(2)保存

out/target/product/rkxxxx/obj/PACKAGING/target_files_intermediates/rk3188-target_files-en

g.root.zip 为rkxxxx-target_files-v1.zip,作为v1 版本的基础素材包。

(3)修改kernel 代码或者android 代码,发布v2 版本固件,生成v2 版本完整包

(4)保存

out/target/product/rkxxxx/obj/PACKAGING/target_files_intermediates/rk3188-target_files-en

g.root.zip 为rkxxxx-target_files-v2.zip,作为v2 版本的基础素材包。

(5)生成v1-v2 的差异升级包:

Android7.1 google CTS 测试要求开启verifying boot 功能。目前默认开启verifying boot 功能的平台有

RK3368H Android7.1 mid、RK3399 Android7.1 mid,作差异包时必现加上block 参数。

./build/tools/releasetools/ota_from_target_files -v -i rkxxxx-target_files-v1.zip

-p out/host/linux-x86 -k build/target/product/security/testkey rkxxxx-target_files-v2.zip

out/target/product/rk3188/rkxxxx-v1-v2.zip

说明: 生成差异包命令格式:

ota_from_target_files

-v -i 用于比较的前一个target file

--block 使用block 方式进行OTA 升级,打开verfying boot 的功能时必现加上这个参数

-p host 主机编译环境

-k 打包密钥

用于比较的后一个target file

最后生成的ota 差异包

from:

http://bbs.21ic.com/icview-2480328-1-1.html

ota升级 rk3399_RK3399 的ota升级方法相关推荐

  1. 汽车在线升级系统(OTA)开发浅析

    本文由姜楠,姜姗姗,韩小鹏联合创作 摘要 介绍了汽车在线升级系统(OTA)的应用场景及功能,阐明了升级系统中车端及云端模块开发策略及架构:同时明确了与整车其他 ECU 的交互需求:最后介绍了在线升级系 ...

  2. 差分升级 增量升级 单片机 STM32 IAP升级OTA升级,物联网车联网可用

    差分升级 增量升级 单片机 STM32 IAP升级OTA升级,物联网车联网可用 介绍博客 https://blog.csdn.net/zhou74281/article/details/1177776 ...

  3. android ota服务器搭建,Android OTA 差分包升级

    稍作修改,因为直接用会有些错误 另外附上超详细的recovery模式update.zip升级分析说明的地址: 根目录下两个命令: 1.make --会生成系统的img文件,system.img,boo ...

  4. 58 ESP32 OTA升级(双OTA分区无factory APP)

    1 引言 产品功能实现后,就要对产品的维护进行考虑.产品出来后,卖了N台出去,如果突然发现自己一行代码写错了,怎么办,肯定不能去现场吧N台设备,免费出差旅游也累啊,所以一般需要有远程升级设备的功能,此 ...

  5. RTOS设备如何快速实现OTA升级--快速接入OTA平台

    目录 一. 创建产品和零件 1.1 登陆平台 1.2 添加产品 1.3 配置产品 1.4 添加升级零件 二. 添加设备 2.1 单个添加 2.2 批量添加 三. 设备注册激活 3.1 发起请求 3.2 ...

  6. ESP32 OTA升级之HTTP OTA

    ESP32 OTA升级之 HTTP OTA 文章目录 ESP32 OTA升级之 HTTP OTA 1. 前言 2. 搭建http本地服务器 2. HTTP OTA 3. 补充学习 1. 前言 在所有电 ...

  7. linux ab双分区升级,AB 系统OTA升级

    A/B System 概述 Android从7.0开始,引入了新的OTA升级方式 A/B System Updates A/B系统是指设备上有A和B两套可以工作的系统(用户数据只有一份,为两套系统共用 ...

  8. android升级小米系统版本,miui7怎么升级?小米升级MIUI7系统两种方法介绍

    小米秋季新品发布会在北京国家会议中心如期举行,雷军在此次发布会上正式公布了全新的MIUI 7.在外观及界面UI方面,MIUI 7新增了四套全新的UI,首次出现了粉红色主调的女神版UI,系统图标.壁纸. ...

  9. .net framework4.6项目的dll升级后,未找到方法“System.String.GetPathsOfAllDirectoriesAbove”解决

    .net framework4.6项目的dll升级后,未找到方法"System.String.GetPathsOfAllDirectoriesAbove"解决 参考文章: (1). ...

  10. 火狐怎么在线升级 火狐浏览器在线升级方法分享

    想要尝试最新版本的火狐浏览器,不仅可以前往火狐官网下载最新版本的客户端,还可以将现有的版本进行升级.那么,火狐该怎么在线升级呢?下面小编就来分享一下火狐浏览器在线升级的方法,不清楚具体操作的朋友可以稍 ...

最新文章

  1. quick cocos2dx 3.x 配置win32工程
  2. [Vue.js]跨域访问四种解决方法
  3. MATLAB机器学习系列-3:BP神经网络算例实现
  4. linux shell zsh,Linux终极shell Z Shell 用强大的zsh oh-my-zsh把Bash换掉
  5. HDU多校4 - 6989 Didn‘t I Say to Make My Abilities Average in the Next Life?!(单调栈)
  6. SAP CRM One Order SERVICE_OS GUID调试指南
  7. php 文件类型 html,HTML的文档类型怎么选择
  8. 通过标准的 ASP.NET 控件来使用 jQuery UI
  9. 深搜--1-n的全排列
  10. VMware时钟不准的解决之道
  11. 堪称最详细的支付系统设计
  12. php pmp是什么,pmp 总时差 自由时差 说明 和计算
  13. 计算机病毒鼻祖拟推新型搜索技术挑战谷歌,美科学家将推新型搜索引擎挑战谷歌...
  14. easyPOI之动态导出word模板
  15. c++实验题:设计两个酒店管理员客房管理的类:一个是Person类,要求储存房号、客户姓名和身份证号的信息;另一个类是Client类,要求新增客户的订房、退房和消费金额等信息,并给出相关测试算法。
  16. php laravel mix,Laravel前端工程化之mix
  17. PostScirpt打印机驱动程序
  18. Docker 中 latest 标签引发的困惑
  19. 单价飙升至3299!是飞天茅台的两倍,茅台的葡萄酒果真有酱香味?
  20. socket error 10054错误出现的原因以及解决办法,全网最全没有之一

热门文章

  1. WPF类型引用无法找到名为“xxx”的类型解决方法
  2. 使用命令结束Linux系统
  3. 内存颗粒和闪存颗粒的区别_内存条怎么判断好坏? 内存颗粒的种类及其差别介绍...
  4. java 实现图片水印 文字水印
  5. i5 8250u java_i5 8250u属于什么级别?i5 8250u的性能参数详解
  6. 【目标检测】58、目标检测中的正负样本分配策略总结
  7. 台式计算机开机后黑屏,电脑开机显示黑屏有关的问题与解决方法
  8. c++编程迷宫小游戏
  9. 凛冬之翼---php写入数据库时汉字全部变为空白
  10. oracle存货转资产,存货转固定资产账务处理