Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
db4747c1
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
db4747c1
编写于
9月 19, 2022
作者:
C
chenzihan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Signed-off-by: chenzihan <chenzihan13@huawei.com>
fix:fix
上级
fa7ff67f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
26 addition
and
26 deletion
+26
-26
zh-cn/device-dev/subsystems/subsys-ota-guide.md
zh-cn/device-dev/subsystems/subsys-ota-guide.md
+26
-26
未找到文件。
zh-cn/device-dev/subsystems/subsys-ota-guide.md
浏览文件 @
db4747c1
...
...
@@ -86,7 +86,7 @@ OTA 的升级原理是利用升级包制作工具,将编译出的版本打包
5.
对使用 Hi3518EV300/Hi3516DV300 套件的轻量和小型系统,在上一步的基础上,还需用public_arr.txt里面的全部内容替换uboot模块device
\h
isilicon
\t
hird_party
\u
boot
\u
-boot-2020.01
\p
roduct
\h
iupdate
\v
erify
\u
pdate_public_key.c 中的g_pub_key中的全部内容。
示例,uboot模块的公钥:
```
```
c
static
unsigned
char
g_pub_key
[
PUBKEY_LEN
]
=
{
0x30
,
0x82
,
0x01
,
0x0A
,
0x02
,
0x82
,
0x01
,
0x01
,
0x00
,
0xBF
,
0xAA
,
0xA5
,
0xB3
,
0xC2
,
0x78
,
0x5E
,
...
...
@@ -101,7 +101,7 @@ OTA 的升级原理是利用升级包制作工具,将编译出的版本打包
1.
创建目标版本(target_package)文件夹,文件格式如下:
```
```
text
target_package
├── OTA.tag
├── config
...
...
@@ -119,7 +119,7 @@ OTA 的升级原理是利用升级包制作工具,将编译出的版本打包
组件配置文件“updater_specified_config.xml”,格式如下:
```
```
xml
<?xml version="1.0"?>
<package>
<head
name=
"Component header information"
>
...
...
@@ -156,7 +156,7 @@ OTA 的升级原理是利用升级包制作工具,将编译出的版本打包
4.
创建“OTA.tag文件”,内容为OTA升级包的魔数,固定如下:
```
```
text
package_type:ota1234567890qwertw
```
...
...
@@ -164,14 +164,14 @@ OTA 的升级原理是利用升级包制作工具,将编译出的版本打包
配置例如下:
```
```
text
setenv bootargs 'mem=128M console=ttyAMA0,115200 root=/dev/mmcblk0p3 rw rootfstype=ext4 rootwait blkdevparts=mmcblk0:1M
(u-boot.bin),9M(kernel.bin),50M(rootfs_ext4.img),50M(userfs.img)' setenv bootcmd 'mmc read 0x0 0x82000000 0x800 0x4800;bootm 0x82000000'
```
6.
执行升级包制作命令。
```
```
text
python build_update.py ./target_package/ ./output_package/ -pk ./rsa_private_key3072.pem -nz -nl2
```
...
...
@@ -187,7 +187,7 @@ OTA 的升级原理是利用升级包制作工具,将编译出的版本打包
1.
创建目标版本(target_package)文件夹,文件格式如下:
```
```
text
target_package
├── {component_1}
├── {component_2}
...
...
@@ -208,7 +208,7 @@ OTA 的升级原理是利用升级包制作工具,将编译出的版本打包
例如配置如下:
```
```
text
HI3516
HI3518
```
...
...
@@ -222,7 +222,7 @@ OTA 的升级原理是利用升级包制作工具,将编译出的版本打包
配置例如下:
```
```
text
Hi3516DV300-eng 10 QP1A.190711.001
Hi3516DV300-eng 10 QP1A.190711.020
Hi3518DV300-eng 10 QP1A.190711.021
...
...
@@ -235,7 +235,7 @@ OTA 的升级原理是利用升级包制作工具,将编译出的版本打包
分区表会随镜像一起生成,格式如下:
```
```
xml
<?xml version="1.0" encoding="GB2312" ?>
<Partition_Info>
<Part
Sel=
"1"
PartitionName=
"镜像名称1"
FlashType=
"flash磁盘类型"
FileSystem=
"文件系统类型"
Start=
"该分区起始地址"
Length=
"该分区大小"
SelectFile=
"实际镜像所在路径"
/>
...
...
@@ -262,7 +262,7 @@ OTA 的升级原理是利用升级包制作工具,将编译出的版本打包
命令如下:
```
```
text
python build_update.py ./target_package/ ./output_package/ -pk ./rsa_private_key2048.pem
```
...
...
@@ -275,7 +275,7 @@ OTA 的升级原理是利用升级包制作工具,将编译出的版本打包
命令如下:
```
```
text
python build_update.py ./target_package/ ./output_package/ -s ./source_package.zip -pk ./rsa_private_key2048.pem
```
...
...
@@ -289,7 +289,7 @@ OTA 的升级原理是利用升级包制作工具,将编译出的版本打包
命令如下:
```
```
text
python build_update.py ./target_package/ ./output_package/ -pk ./rsa_private_key2048.pem -pf ./partition_file.xml
```
...
...
@@ -341,7 +341,7 @@ OTA 的升级原理是利用升级包制作工具,将编译出的版本打包
使用OpenHarmony的“升级包格式和校验方法”进行升级。
```
```
cpp
int
main
(
int
argc
,
char
**
argv
)
{
printf
(
"this is update print!
\r\n
"
);
...
...
@@ -416,7 +416,7 @@ int main(int argc, char **argv)
使用非OpenHarmony的“升级包格式和校验方法“进行升级。
```
```
cpp
int
main
(
int
argc
,
char
**
argv
)
{
printf
(
"this is update print!
\r\n
"
);
...
...
@@ -492,7 +492,7 @@ int main(int argc, char **argv)
示例,增加版本号。
```
```
cpp
const
char
*
get_local_version
(
void
)
{
#if defined(CONFIG_TARGET_HI3516EV200) || \
...
...
@@ -518,12 +518,12 @@ const char *get_local_version(void)
-
JS API 通过 update_service 模块处理AB热升级相关流程
1.
升级包安装进度显示接口:
```
```
cpp
on
(
eventType
:
'
upgradeProgress
'
,
callback
:
UpdateProgressCallback
)
:
void
;
```
2.
设置激活策略(立即重启,夜间重启,随下次重启激活)接口:
```
```
cpp
upgrade
(
apply
)
```
...
...
@@ -531,22 +531,22 @@ const char *get_local_version(void)
-
update_service 通过 SAMGR 将 sys_installer 拉起
1.
拉起sys_installer服务,并建立IPC连接:
```
```
cpp
int
SysInstallerInit
(
void
*
callback
)
```
2.
安装指定路径的AB升级包:
```
```
cpp
int
StartUpdatePackageZip
(
string
path
)
```
3.
设置进度回调:
```
```
cpp
int
SetUpdateProgressCallback
(
void
*
callback
)
```
4.
获取sys_installer的升级包安装状态(0 未开始,1 安装中,2 安装结束):
```
```
cpp
int
GetUpdateStatus
()
```
...
...
@@ -554,22 +554,22 @@ const char *get_local_version(void)
-
使用 HDI 接口南向激活新版本
1.
获取当前启动的slot,来决策待升级的分区:
```
```
cpp
int
GetCurrentSlot
()
```
2.
在升级结束后,将已升级好的slot进行切换,重启完成新版本更新:
```
```
cpp
int
SetActiveBootSlot
(
int
slot
)
```
3.
在升级开始时,将待升级的分区slot设置成unbootable状态:
```
```
cpp
int
setSlotUnbootable
(
int
slot
)
```
4.
获取slot个数,1位非AB,2为AB分区,用例兼容AB和非AB的流程判断:
```
```
cpp
int32
GetSlotNum
(
void
)
```
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录