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

高通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.mzph.cn/news/162797.shtml

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

相关文章

中国智能汽车这一年,主打一个“卷”

文丨刘俊宏 “这才刚过去半年多,汽车行业又更新了一轮。”一位车评人在广州车展感叹道。 作为每年最后一个A级车展,广州车展向来被视为中国车市的“风向标”。相比上海车展“拥抱汽车行业新时代”、成都车展“驭见未来”的主题,广州车展“新…

数据结构(超详细讲解!!)第二十四节 二叉树(上)

1.定义 二叉树(Binary Tree)是另一种树型结构。 二叉树的特点: 1)每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点); 2)二叉树的子树有左右之分,其次序…

python爬虫教程:selenium常用API用法和浏览器控制

文章目录 selenium apiwebdriver常用APIwebelement常用API 控制浏览器 selenium api selenium新版本(4.8.2)很多函数,包括元素定位、很多API方法均发生变化,本文记录以selenium4.8.2为准。 webdriver常用API 方法描述get(String url)访问目标url地址&…

分布式锁之传统锁回顾(一)

1. 传统锁回顾 1.1. 从减库存聊起 多线程并发安全问题最典型的代表就是超卖现象 库存在并发量较大情况下很容易发生超卖现象,一旦发生超卖现象,就会出现多成交了订单而发不了货的情况。 场景: 商品S库存余量为5时,用户A和B同…

PC8223(CC/CV控制)高耐压输入5V/3.4A同步降压电路内建补偿带恒流恒压输出

概述 PC8233(替代CX8853)是一款同步降压调节器,输出电流高达3.4A,操作范围从8V到32V的宽电源电压。内部补偿要求最低数量现成的标准外部组件。PC8233在CC(恒定输出电流)模式或CV(恒定输出电压)模式&#x…

代码随想录算法训练营Day 60 || 84.柱状图中最大的矩形

84.柱状图中最大的矩形 力扣题目链接(opens new window) 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 1 < heights.length <10^50 < hei…

CVE-2022-0543(Redis 沙盒逃逸漏洞)

简介 CVE-2022-0543是一个与Redis相关的安全漏洞。在Redis中&#xff0c;用户连接后可以通过eval命令执行Lua脚本&#xff0c;但在沙箱环境中脚本无法执行命令或读取文件。然而&#xff0c;攻击者可以利用Lua沙箱中遗留的变量package的loadlib函数来加载动态链接库liblua5.1.s…

VirtualBox下win主机如何访问linux虚拟机文件夹

目录 ​编辑 方法1&#xff1a;通过VirtualBox自带的共享文件夹&#xff08;Win->linux&#xff09; 方法2&#xff1a;通过Samba方法本地网络访问(Linux->win) 我使用的VirtualBox版本为7.0.4,主机是Window系统&#xff0c;虚拟机是Linux系统 方法1&#xff1a;通过Vir…

【SpringBoot篇】Spring_Task定时任务框架

文章目录 &#x1f339;概述&#x1f33a;应用场景&#x1f384;cron表达式&#x1f6f8;入门案例&#x1f38d;实际应用 &#x1f339;概述 Spring Task 是 Spring 框架提供的一种任务调度和异步处理的解决方案。可以按照约定的时间自动执行某个代码逻辑它可以帮助开发者在 S…

【深度学习】学习率及多种选择策略

学习率是最影响性能的超参数之一&#xff0c;如果我们只能调整一个超参数&#xff0c;那么最好的选择就是它。相比于其它超参数学习率以一种更加复杂的方式控制着模型的有效容量&#xff0c;当学习率最优时&#xff0c;模型的有效容量最大。本文从手动选择学习率到使用预热机制…

RocketMQ-NameServer详解

前言 ​ RocketMQ架构上主要分为四部分, Broker、Producer、Consumer、NameServer&#xff0c;其他三个都会与NameServer进行通信。 Producer: ​ **消息发布的角色&#xff0c;可集群部署。**通过NameServer集群获得Topic的路由信息&#xff0c;包括Topic下面有哪些Queue&a…

数据结构与算法编程题15

设计一个算法&#xff0c;通过遍历一趟&#xff0c;将链表中所有结点的链接方向逆转&#xff0c;仍利用原表的存储空间。 #include <iostream> using namespace std;typedef int Elemtype; #define ERROR 0; #define OK 1;typedef struct LNode {Elemtype data; …

【从入门到起飞】JavaSE—多线程(3)(生命周期,线程安全问题,同步方法)

&#x1f38a;专栏【JavaSE】 &#x1f354;喜欢的诗句&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f354;生命周期&#x1f384;线程的安全问题&#…

YOLOv7独家改进: Inner-IoU基于辅助边框的IoU损失,高效结合 GIoU, DIoU, CIoU,SIoU 等 | 2023.11

💡💡💡本文独家改进:Inner-IoU引入尺度因子 ratio 控制辅助边框的尺度大小用于计算损失,并与现有的基于 IoU ( GIoU, DIoU, CIoU,SIoU )损失进行有效结合 推荐指数:5颗星 新颖指数:5颗星 收录: YOLOv7高阶自研专栏介绍: http://t.csdnimg.cn/tYI0c …

大模型AI Agent 前沿调研

前言 大模型技术百花齐放&#xff0c;越来越多&#xff0c;同时大模型的落地也在紧锣密鼓的进行着&#xff0c;其中Agent智能体这个概念可谓是火的一滩糊涂。 今天就分享一些Agent相关的前沿研究&#xff08;仅限基于大模型的AI Agent研究&#xff09;&#xff0c;包括一些论…

完美解决AttributeError: module ‘numpy‘ has no attribute ‘typeDict‘

文章目录 前言一、完美解决办法安装低版本1.21或者1.19.3都可以总结 前言 这个问题从表面看就是和numpy库相关&#xff0c;所以是小问题&#xff0c;经过来回调试安装numpy&#xff0c;发现是因为目前的版本太高&#xff0c;因此我们直接安装低版本numpy。也不用专门卸载目前的…

Qt全球峰会2023中国站 参会概要

Qt全球峰会2023中国站 参会概要 前言峰会议程签到 & Demo 演示开场致辞Qt Group 产品总监演讲&#xff08;产品开发的趋势-开放的软件、工具和框架&#xff09;产品战略QtQuick or QtWidgets&#xff08;c or qml&#xff09;Qt如何定义AI个人看法 Qt 在券商数字化转型和信…

【MySQL】内连接和外连接

内连接和外连接 前言正式开始内连接外连接左外连接右外连接 前言 前一篇讲多表查询的时候讲过笛卡尔积&#xff0c;其实笛卡尔积就算一种连接&#xff0c;不过前一篇讲的时候并没有细说连接相关的内容&#xff0c;本篇就来详细说说表的连接有哪些。 本篇博客中主要用到的还是…

中部A股第一城,长沙如何赢商?

文|智能相对论 作者|范柔丝 长沙的马路&#xff0c;都很有故事。 一条解放西路&#xff0c;是全国人民都争相打卡的娱乐地标&#xff1b;一条太平街&#xff0c;既承载了历史的厚重又演绎着现代的鲜活...... 但如果来到河西的桐梓坡路&#xff0c;风景会变得截然不同。 沿…

安装MySQL搭建论坛

课前默写&#xff1a; 1、nginx配置文件的区域有哪些 ①全局区域 ②events区域 ③http区域 2、区域模块的作用 全局区域模块主要是用户和工作进程 events区域模块配置最大连接数时需先配置:vim /etc/limits.conf 因为系统默认最大是1024 http区域模块&#xff1a;代理地…