社区编辑申请
注册/登录
OTA升级操作说明
系统 OpenHarmony
OTA(Over the Air)提供对设备远程升级的能力,可以让您的设备,轻松支持远程升级能力。目前仅支持全量包升级,暂不支持差分包升级。

​想了解更多内容,请访问:​

​51CTO和华为官方合作共建的鸿蒙技术社区​

​https://ost.51cto.com​

Guide

这是一篇讲解如何对OTA正确操作的文档,让初入门的开发者对OTA有初步的认识,并学会简单操作。

一、什么是 OTA

OTA(Over the Air)提供对设备远程升级的能力,可以让您的设备,轻松支持远程升级能力。目前仅支持全量包升级,暂不支持差分包升级。全量包升级是将新系统全部内容做成升级包,进行升级;差分包升级是将新老系统的差异内容做成升级包,进行升级。

关于OTA目前支持以下三种方式,方式1和3均验证完毕,方式2还在调测中,此处暂不做介绍:

  1. OTA(Over the Air)–ota在线升级。
  2. 通过USB从主机进程更新 – reboot flashd。
  3. 通过外部存储器进行升级 --SD卡/U盘升级。

二、操作说明

1、制作升级包

(1) 生成公私钥对

鸿蒙基线源码里默认有一对公私钥可以直接使用,见目录:openharmony/device/board/hisilicon/hispark_taurus/linux/updater/config 私钥:rsa_private_key2048.pem 公钥:signing_cert.crt。

rk3566中控屏代码仓里默认的公私钥对见目录:device/rockchip/rk3566/build/updater_config 私钥:rsa_private_key2048.pem 公钥:signing_cert.crt。

也可以用​​Openssl工具​​自行生成自己的公私钥对,关于私钥文件请妥善保管,在升级包制作过程中将私钥文件作为制作命令的参数带入,用于升级包签名。公钥用于升级时对升级包进行签名校验,鸿蒙标准系统需要将生成的公钥放在 openharmony/device/board/hisilicon/hispark_taurus/linux/updater/config/signing_cert.crt 这个文件中;如果是开鸿的3566中控屏代码仓请放在device/rockchip/rk3566/build/updater_config/signing_cert.crt文件中。

(2) 制作升级包

创建目标文件夹

关于目标文件夹的命名可以自定义,这里将文件夹命名为ota_package,操作如下:

osm@ubuntu:~$mkdir ota_package
osm@ubuntu:~$cd ota_package
osm@ubuntu:~/ota_package$ tree -a
.
├── system.img // 待升级的组件1
├── updater_binary // 升级相关的可执行文件
├── updater_config // 固定格式,子文件夹管理组件配置文件
├── BOARD.list // 当前升级包支持的产品list
├── updater_specified_config.xml // 组件配置文件
└── VERSION.mbn // 当前升级包所支持的版本范围
├── userdata.img // 待升级的组件2
└── vendor.img // 待升级的组件3

关于BOARD.list,内容如下:

osm@ubuntu:~/ota_package/updater_config$ cat BOARD.list
HI3516
HI3518
HI3559
osm@ubuntu:~/ota_package/updater_config$

关于VERSION.mbn,内容如下:

osm@ubuntu:~/ota_package/updater_config$ cat VERSION.mbn
Hi3516DV300-eng 10 QP1A.190711.020
Hi3516DV300-eng 10 QP1A.190711.022
osm@ubuntu:~/ota_package/updater_config$

版本名称格式:Hi3516DV300-eng 10 QP1A.XXXXXX.{大版本号(6位)}.XXX{小版本号(3位)}。

例如:Hi3516DV300-eng 10 QP1A.190711.020。名称中“190711”为大版本号,“020”为小版本号。

关于updater_specified_config.xml,内容如下:

osm@ubuntu:~/ota_package/updater_config$cat updater_specified_config.xml。

<?xml version="1.0"?>
<package>
<head name="Component header information">
<info fileVersion="01" prdID="123456" softVersion="Hi3516DV300-eng 10 QP1A.190711.020" date="2021-03-11" time="12:30">head info</info>
</head>
<group name = "Component information">
<component compAddr="vendor" compId="18" resType="05" compType="0" compVer="0o00">./vendor.img</component>
<component compAddr="system" compId="18" resType="05" compType="0" compVer="0o00">./system.img</component>
</group>
</package>
osm@ubuntu:~/ota_package/updater_config$

执行升级包制作命令(全量升级包)。

这里以鸿蒙的代码路径为例:

如果制作SD卡升级包需要加上-sc选项,即:python3.8 openharmony/base/update/packaging_tools/build_update.py ota_package ota_output -pk rsa_private_key2048.pem -sc。

osm@ubuntu:~$mkdir ota_output
osm@ubuntu:~$python3.8 openharmony/base/update/packaging_tools/build_update.py ota_package ota_output -pk rsa_private_key2048.pem

执行完之后,在ota_output下可以看到升级包:hi3516_ota_xxxxxx.zip,将其重命名为updater.zip,如果是在线升级需要将升级包放在服务器上,如果是SD卡升级需要将升级包放在SD卡的updater目录。

2、升级

(1) OTA升级(还在调测中,敬请期待)

(2) OTA升级(跳过下载)

将升级包通过SD卡/U盘/hdc_std等工具放到设备的/data下面的自定义目录,这里将升级包updater.zip放在/data/updater/updater目录下。

方式一、在主分区命令行执行:

reboot updater:–update_package=/data/updater/updater/updater.zip

方式二、在主分区命令行设置系统参数:

param set ohos.startup.powerctrl 
reboot,updater:–update_package=/data/updater/updater/updater.zip
(或调用接口 bool RebootAndInstallUpgradePackage(const std::string &miscFile,
const std::string &packageName) )

以上两种方式原理相同,均是把参数–update_package=/data/updater/updater/updater.zip写入misc分区,后面updater进程会去misc分区获取该参数。

成功触发后,开始校验,界面如下:

校验通过后开始升级,界面如下:

升级成功后板子会自动重启,至此操作完毕。

(3) SD卡升级

OTA升级优先级高于SD卡升级:updater进程先去misc分区获取–update_package参数,成功获取到则进入ota在线升级。否则进入SD卡升级界面,进行SD卡升级等操作。

切换分区。

这里将包含升级包的SD卡插入设备,并在主分区命令行执行reboot updater,不传递–update_package参数,可以直接切换到recovery分区,界面如下:

选择升级。

开始校验。

如果升级包制作没有问题,板子开始验证升级包,显示如下:

“Don’t remove SD Card!
“Verify package…” //持续时间比较久,大概一二十分钟

开始升级。

验证通过之后,开始升级,升级成功后板子会自动重启,至此操作完毕。

3、调测

在升级的过程中会产生log文件/data/updater/log/updater_log, 包含程序运行各个阶段添加的打印信息可供调试使用。

​想了解更多内容,请访问:​

​51CTO和华为官方合作共建的鸿蒙技术社区​

​https://ost.51cto.com​

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2019-11-20 18:47:26

物联网OTA软件

2022-01-17 11:22:35

2021-06-07 07:57:16

ESP32 开发AWS 平台OTA 升级

2021-04-24 07:52:34

设备升级OTA

2021-06-02 07:58:58

物联网设备OTA

2021-05-31 07:49:58

物联网OTA软件

2011-12-17 22:32:57

Android 4.0

2010-09-29 13:09:48

OTAJ2ME程序

2010-09-29 13:16:01

OTAJ2ME

2018-05-07 16:10:56

Windows 10更新屏蔽

2018-08-02 17:11:33

iOS 12苹果bug

同话题下的热门内容

HarmonyOS应用开发:鸿蒙JS实战,计算器功能开发!Hi3516DV300驱动开发—编写LED灯控制程序OpenHarmony - 纯CSS实现卡通狮子OpenHarmony - ArkUI(TS)声明式开发之底部导航栏HDF驱动开发流程解析基于 OpenHarmony 的实时水流量监测管理系统(一)OpenHarmony -ArkUI(ETS)之WiFi简单的连接操作OpenHarmony源码解析之显示屏亮度获取功能

编辑推荐

HarmonyOS 2.0鸿蒙第二期开发者Beta公测申请指南HarmonyOS LYEVK-3861开发板播放《蜜雪冰城》鸿蒙HarmonyOS分布式软总线:构建低时延、高带宽的多设备虚拟网络华为HarmonyOS的强势突围: 直面物联网迷宫的蓄力进击鸿蒙HarmonyOS2.0发布会现场回忆录
我收藏的内容
点赞
收藏

51CTO技术栈公众号