高通OTA升级非常规分区方法

news2024/11/18 4:01:41

高通OTA升级非常规分区方法

  • 1. 高通LE OTA背景
  • 2. 高通LE OTA升级方案
    • 2.1 SDX12 OTA方案
    • 2.2 OTA升级TZ/RPM/Aboot

OTA是一个通用述语,常见的解释为over the air。通过这一解释,OTA最开始的概念,是空中升级。后来,又衍生出了FOTA,FOAT的概念。

FOTA可以理解为Firmware Over The Air,即在线升级,是指通过模块的数据通道完成升级包的下载和安装。此外,FOAT,是模块项目实践运用中,发展出来的另一种升级方式,可描述为通过本地升级工具对模块进行软件更新的过程。FOAT与FOTA的不同是,升级包的导入方式上的不同。FOAT是通过串口传输导入,没有无线部分的介入。所以两者只是升级包导入的方式上的不同。在升级包导入到设备后,升级包的安装更新,都归为模块自身的基本升级功能,由Recovery系统来完成。

综上,在模块项目中OTA调试,可分为三大块,即:
在这里插入图片描述

1. 高通LE OTA背景

高通MDM、MSM平台提供了基本的升级功能,大概都以开源的Android升级设计实现作为基础,对其代码进行移植,适配到自身平台上。从差分包制作工具,升级过程,都有一套完整的方案,并且所涉及到的工具和代码均完全开放,因此该方案的可塑性也更大。其中包括统一的用于安装升级包的Recovery系统,编译OTA底包专属框架,和处理底包制作升级包的脚本和工具等。

由于该方案中各个文件的PATCH 基于文件系统而来,因此很难在bootloader 阶段实现(无法挂载文件系统),所以在分区设计上,除了预留存放差分包,备份文件的空间外,还需要添加专门的分区(kernel, bootloader,filesystem)以供FOTA 使用,而该分区必须独立于正常运行时的分区。这也就导致了该方案在硬件(FLASH,DDR)要求比较高。

在LE 的FOTA 方案中,升级程序作为一个应用程序运行,升级包则是一个标准的zip 文件(命名为ota 文件),升级过程则是解析升级包中指定的脚本文件,并根据解析到的内容引用对应的功能模块,从而完成整个升级过程。

2. 高通LE OTA升级方案

下面主要介绍基于高通LE OTA方案,SDX12做的一些改进,以及如何在SDX12上完成 tz、rpm、appsboot等非常规镜像或分区的OTA升级。

2.1 SDX12 OTA方案

X12 OTA升级使用的是高通平台通用的FOTA方案,基本可以总结以下几个步骤:

  1. 本地制作差分包,并上传到远端OTA服务器
  2. x12启动OTA client线程去在固定间隔时间访问OTA服务器
  3. 当OTA服务器上有可用OTA 包,则校验包是否完整、版本号是否符合预期
  4. 若(3)中校验OK,则下载OTA包到本地
  5. 下载完成后重启进入recovery模式
  6. recovery模式启动后会先检测是否存在OTA包,存在则解压包并使用包中的工具打patch
  7. 升级完成后设置成功标记并重启进入boot模式
  8. 升级完成

流程图如下:
在这里插入图片描述

高通LE平台是多个子系统构成,其中boot、system这两个子系统属于HLOS镜像,其他如tz、rpm、appsboot、modem等均为non-HLOS镜像。

虽然NAND设备 (例如SDX12) 支持non-hlos镜像的OTA升级,但电源中断安全升级机制仅适用于system、boot和modem镜像。启动关键映像 (如tz、rpm、appsboot等) 可以升级,但如果在升级的很短时间内发生电源中断 (通常为毫秒),设备将处于砖砌状态。

因此默认OTA方案通常仅建议升级boot、system和modem镜像,其中boot镜像是以全包的方式、system镜像以文件patch方式、modem以压缩拆分后的patch方式:
在这里插入图片描述
但由于boot镜像占用较大的空间,对于硬件(FLASH,DDR)要求比较高。很多时候无法满足,因此我们在高通LE OTA升级方案上做出如下优化:将boot镜像也以patch的方式进行升级,这样就可以减少对于硬件(FLASH,DDR)要求,满足低存储空间的场景。
在这里插入图片描述

2.2 OTA升级TZ/RPM/Aboot

但是还存在客户想OTA升级启动关键映像 (如tz、rpm、appsboot等),如客户有屏幕的场景,想更新开机动画,而开机动画在sbl阶段就已经开始,因此就需要去升级appsboot镜像。虽然启动关键映像 (如tz、rpm、appsboot等) 可以升级,但如果在升级的很短时间内发生电源中断 (通常为毫秒),设备将处于砖砌状态。但高通针对这种情况,也是提供了对应的升级方案,但不建议使用,下面我们将简单介绍如何去OTA升级这些非常规的分区。

根据高通文档80-16206-49 AA,我们可以看到如我们想升级non-hlos镜像,只需将这些镜像打包在OTA目标版本底包的RADIO目录下即可。

在这里插入图片描述
按照上述方法,我们手动将appsboot镜像打包到RADIO目录下:

在这里插入图片描述
然后使用OTA差分制作工具制作差分包,就可以在OTA差分包firmware目录下看到appsboot镜像,当升级时就会按照patch脚本去打patch升级appsboot镜像:

在这里插入图片描述
在差分包的patch脚本META-INF\com\google\android\updater-script中也确实可以看到appsboot镜像将以raw镜像的方式升级:

在这里插入图片描述

但上面这种方式需要手动打包tz、rpm、appsboot等镜像到OTA目标版本底包中,这样是非常不便利的,因此修改ota底包制作流程,将tz、rpm、appsboot等镜像按需打包进OTA底包中:

在这里插入图片描述

但如果我们在目标和当前版本OTA底包中都放上tz、rpm、appsboot等镜像,又会导致他们会以patch的方式升级,而tz、rpm、appsboot等镜像本身就只有不到1M的空间,因此完全无需patch方式,因此修改差分包制作工具,判断当文件为tz、rpm、appsboot等镜像时,无需制作patch,直接拷贝目标镜像即可。

在这里插入图片描述
通过上述这些修改,就可以完成OTA升级tz、rpm、appsboot等非常规分区。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1241985.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git使用基础总结(从小白到新手版)

(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍快上🚘,一起学习,让我们成为一个强大的攻城狮&#xff0…

BUUCTF [HBNIS2018]excel破解 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 得到的 flag 请包上 flag{} 提交。来源: https://github.com/hebtuerror404/CTF_competition_warehouse_2018 密文: 下载附件,得到一个attachment.xls文件。 解题思路&#xff…

ABB机 器 人 操 作 培 训

目 录 1 培训手册介绍 ---------------------------------------------2 2 系统安全与环境保护 ---------------------------------------------3 3 机器人综述 ---------------------------------------------5 4 机器人示教 --------------------------------------------12…

.Net6 Api Swagger配置

1、定义个Swagger版本&#xff08;组&#xff09;的枚举 namespace WebApp.Enums {/// <summary>/// api版本枚举/// </summary>public enum ApiVersion{/// <summary>/// v1版本/// </summary>v1 1,/// <summary>/// v2版本/// </summary&…

Axios 拦截器 请求拦截器 响应拦截器

请求拦截器 相当于一个关卡&#xff0c;如果满足条件就放行请求&#xff0c;不满足就拦截 响应拦截器 在处理结果之前&#xff0c;先对结果进行预处理&#xff0c;比如&#xff1a;对数据进行一下格式化的处理 全局请求拦截器 axios.interceptors.request.use(config > { /…

电脑开机显示器没反应?5个方法轻松解决!

“各位朋友们&#xff0c;我想问问&#xff0c;电脑开机显示器没反应是为啥呢&#xff1f;有什么方法可以解决这个问题吗&#xff1f;感谢感谢&#xff01;” 在使用电脑时&#xff0c;用户可能会遇到各种各样的情况。电脑开机显示器没反应也是一个比较常见的电脑问题。遇到这种…

Springboot+vue的新冠病毒密接者跟踪系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的新冠病毒密接者跟踪系统(有报告)。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的新冠病毒密接者跟踪系统&#xff0c;采用M&#xff08;model&#xff09;V&#xff08;v…

JSP EL表达式获取list/Map集合与java Bean对象

上文 JSP EL表达式基本使用 中 我们对EL表达式做了一个基本的了解 也做了基础的字符串数据使用 那么 我们可以来看一下我们的集合 首先 list 这个比较简单 我们直接这样写代码 <% page import"java.util.ArrayList" %> <% page import"java.util.Lis…

两种常见EMC整改流程!|深圳比创达电子EMC

如何定位EMC整改计划可以分为两点&#xff1a; 1、根据以往的整改经验来进行判断&#xff1b; 2、比较测试&#xff0c;测试结束后根据测试仪器提供的数据进行问题分析。 下面介绍两种常见的EMC整改流程。 1、RE超标整改流程 首先要测量超标(临界)点&#xff0c;作为参考值…

注册并实名认证华为开发者账号

首先 我们访问 https://www.harmonyos.com/ 访问鸿蒙官方网站 右上角 我们点击 登录 然后 我们选择注册 然后 注册方式 有邮箱和手机号的注册 这边 看大家需要 如果像我不怎么登邮箱这种 建议还是选择手机号注册 这里 居住地区 应该就是默认中国吧 然后 手机号 验证码 密码…

入选《数据结构与算法领域内容帮榜》第44名

入选《数据结构与算法领域内容帮榜》第44名

Spring-jdbcTemplate-配置数据库连接池

1、jdbc.properties jdbc.drivercom.mysql.cj.jdbc.Driver jdbc.urljdbc:mysql:///studb jdbc.userroot jdbc.pwd123456 2、beans.xml <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans&…

安卓毕业设计基于安卓android微信小程序的家校通系统

运行环境 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序运行软件&#xff1a;微信开发者 项目介绍 基于微信小程序的家校通系统的设计基…

Nginx 413 Request Entity Too Large

当出现上图时候 更改nginx config 文件 在http{}或者server{}或者location{}中增加client_max_body_size 100m; 然后重启nginx 服务就好了

【深度学习】六大聚类算法快速了解

在机器学习中&#xff0c;无监督学习一直是我们追求的方向&#xff0c;而其中的聚类算法更是发现隐藏数据结构与知识的有效手段。目前如谷歌新闻等很多应用都将聚类算法作为主要的实现手段&#xff0c;它们能利用大量的未标注数据构建强大的主题聚类。本文从最基础的 K 均值聚类…

JAVA小游戏“飞翔的小鸟”

第一步是创建项目 项目名自拟 第二步创建个包名 来规范class 再创建一个包 来存储照片 如下&#xff1a; 代码如下&#xff1a; package game; import java.awt.*; import javax.swing.*; import javax.imageio.ImageIO;public class Bird {Image image;int x,y;int width…

STM32 CAN通信自定义数据包多帧连发乱序问题

场景&#xff1a; can标准帧中每一帧只能传输8字节&#xff0c;而应用中传输一包的内容往往超过8字节&#xff0c;因此需要把一个包拆成多个帧发送&#xff0c;接收端才把收到的多帧重新组装成一个完整的包 问题描述 在一问一答的两块板间通信&#xff0c;多帧连发是能够按照…

优思学院|2024年质量管理的大趋势

2023年我们已经顺利度过了整年的大部分时间&#xff0c;2024年质量管理的趋势和问题在全球范围内都已经引起了关注&#xff0c;或者仍然是企业导航的首要任务。 1. 通货膨胀与质量管理 2023年&#xff0c;全球范围内通货膨胀和严峻的经济状况成为企业最关心的问题之一。尽管物…

electron27-react-mateos:基于electron+react18仿matePad桌面系统

基于Electron27React18ArcoDesign搭建桌面版OS管理系统。 electron-react-mateos 基于最新前端跨端技术栈electron27.xreact18arco-designzustand4sortablejs构建的一款仿制matePad界面多层级路由管理OS系统。 ElectronReactOS支持桌面多路由配置&#xff0c;新开窗口弹窗开启路…

单片机调试技巧--修改bin文件实现断点

fromelf --text -a -c --outputall.dis F103_Moduel\F103_Moduel.axffromelf --bin --outputtest.bin F103_Moduel\F103_Moduel.axf 在启动文件中&#xff0c;修改UsageFault_Handler UsageFault_Handler\PROC; get current contextTST lr, #0x04 ; if(!EXC_RETURN[2])ITE…