OpenHarmony 升级解读之SD卡升级经验分享 原创 精华

民之码农
发布于 2022-1-27 08:36
浏览
7收藏

春节不停更,此文正在参加「星光计划-春节更帖活动」

OpenHarmony 3.1Beta版本标准系统SD卡升级经验分享
@[toc](内容

一、系统升级简介

当嵌入式系统需要升级版本满足功能需求,或者嵌入式系统有重大Bug时解决Bug问题而进行在线/现场升级嵌入式系统,一般从软件层面支持系统的工具升级、SD卡升级、远程升级等。

二、OpenHarmony的系统升级包制作

HarmonyOS的官方网站介绍升级包的制作:
https://device.harmonyos.com/cn/docs/documentation/guide/subsys-ota-guide-0000001209246635
升级包制作完成放入sd卡的updater/updater.zip文件中,SD卡插入OpenHarmony hi3516标准系统中。

三、进入sd卡升级界面

1.进入uboot shell

OpenHarmony 升级解读之SD卡升级经验分享-鸿蒙开发者社区

2.重新设置bootargs的命令

setenv bootargs 'mem=640M console=ttyAMA0,115200 mmz=anonymous,0,0xA8000000,384M clk_ignore_unused androidboot.selinux=permissive skip_initramfs rootdelay=10 init=/init root=/dev/mmcblk0p3 rootfstype=ext4 rw blkdevparts=mmcblk0:1M(boot),15M(kernel),20M(updater),1M(misc),3307M(system),256M(vendor),-(userdata)'

设置bootargs从updater分区启动,再在shell输入 'boot’命令启动,进入updater分区的应用程序。
OpenHarmony 升级解读之SD卡升级经验分享-鸿蒙开发者社区

3.SD卡升级界面:

OpenHarmony 升级解读之SD卡升级经验分享-鸿蒙开发者社区

四、sd卡升级

1.点击"update from SD card"

OpenHarmony 升级解读之SD卡升级经验分享-鸿蒙开发者社区

2.进入升级校验界面

OpenHarmony 升级解读之SD卡升级经验分享-鸿蒙开发者社区

3.升级拷贝数据

OpenHarmony 升级解读之SD卡升级经验分享-鸿蒙开发者社区

五、升级常见问题

1.证书问题

1970-01-01 00:19:28  [ERROR]UPDATER pkg_upgradefile.cpp 241 : Fail to verifier signature
1970-01-01 00:19:28  [ERROR]UPDATER pkg_managerImpl.cpp 336 : Load package fail /sdcard/updater/
1970-01-01 00:19:28  [ERROR]UPDATER pkg_managerImpl.cpp 287 : unpack update.bin fail in package /sdcard/updater/updater.zip
1970-01-01 00:19:28  [INFO]UPDATER updater.cpp 71 : LoadPackage fail ret :104
1970-01-01 00:19:28  [ERROR]UPDATER updater.cpp 201 : Verify package Fail...
1970-01-01 00:19:30  [INFO]UPDATER frame.cpp 276 : DispatchKeyEvent release

解决方法:updater/certificate/signing_cert.crt, updater内置证书和packaging_tool使用的私钥要保持一致;

2.分区挂载问题

1970-01-01 00:18:32  [INFO]UPDATER_BINARY pkg_pkgfile.cpp 68 : ExtractFile /kernel
1970-01-01 00:18:32  [ERROR]UPDATER_BINARY data_writer.cpp 37 : Datawriter: cannot find device path for partition 'kernel'.
1970-01-01 00:18:32  [ERROR]UPDATER_BINARY update_processor.cpp 104 : Write 4194304 byte(s) failed
1970-01-01 00:18:32  [ERROR]UPDATER_BINARY pkg_algorithm.cpp 104 : Fail write data
1970-01-01 00:18:32  [ERROR]UPDATER_BINARY pkg_algorithm.cpp 114 : original size error 0 5735994
1970-01-01 00:18:32  [INFO]UPDATER_BINARY pkg_upgradefile.cpp 473 : Unpack /kernel data offset:1106 packedSize:5735994 unpackedSize:5735994
1970-01-01 00:18:32  [INFO]UPDATER_BINARY update_processor.cpp 159 : UScriptInstructionRawImageWrite  finish
1970-01-01 00:18:32  [INFO]UPDATER_BINARY script_interpreter.cpp 202 : [INTERPRETER 1-2]"ExecuteNativeFunc::Execute raw_image_write result: 0"
1970-01-01 00:18:32  [INFO]UPDATER_BINARY script_statement.cpp 165 : [INTERPRETER 1-2]"UScriptExpressionStatement::Execute result: type: 1  value : type: List "
1970-01-01 00:18:32  [INFO]UPDATER_BINARY script_statement.cpp 283 : [INTERPRETER 1-2]"UScriptStatementList finish type: 1  value : type: List "
1970-01-01 00:18:32  [INFO]UPDATER_BINARY script_interpreter.cpp 87 : [INTERPRETER 1-2]"statements_ execute result type: 1  value : type: List  "
1970-01-01 00:18:32  [INFO]UPDATER_BINARY script_interpreter.cpp 40 : ExecuteScript finish ret: 0  script: Verse-script.us
1970-01-01 00:18:48  [INFO]UPDATER updater.cpp 213 : update success , do reboot now

解决方法:
device\hisilicon\hi3516dv300\build\vendor\etc\fstab.updater 分区挂载点和升级的partition要保持一致;

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2022-1-27 08:36:08修改
8
收藏 7
回复
举报
3条回复
按时间正序
/
按时间倒序
wx587ce054121e4
wx587ce054121e4

您好,我这边验证SD卡升级出现问题,请教下!

1、用packaging_tools生成的升级包是hi3516_ota_144856.zip,是将其改为updater.zip,放在/sdcard/updater下吗?

2、updater内置证书是和私钥对应的公钥一样,还是和私钥一样,我是放的公钥

3、按照上面的路径后,出现如下错误,麻烦看下是什么原因

[INFO]UPDATER pkg_zipfile.cpp 139 : LoadPackage /sdcard/updater/updater.zip :180044360
[INFO]UPDATER pkg_zipfile.cpp 559 : packedSize: 174215814 unpackedSize: 3373989148  offset header: 0 data: 40 update.bin
[INFO]UPDATER pkg_zipfile.cpp 559 : packedSize: 5827682 unpackedSize: 5882076  offset header: 174215854 data: 174215899 build_tools.zip
[INFO]UPDATER pkg_pkgfile.cpp 68 : ExtractFile /sdcard/updater/update.bin.tmp
[INFO]UPDATER pkg_zipfile.cpp 516 : packedSize: 174215814 unpackedSize: 3373989148  offset header: 0 data: 40
[ERROR]UPDATER pkg_stream.cpp 108 : Flush size 3373989148 local size:4294967295
[INFO]UPDATER pkg_upgradefile.cpp 175 : LoadPackage /sdcard/updater/update.bin.tmp 
[INFO]UPDATER pkg_algo_digest.cpp 85 : enter Sha256Algorithm::Update
[INFO]UPDATER pkg_upgradefile.cpp 259 : UpgradePkgFile::ReadComponents SignatureLen=640
[INFO]UPDATER pkg_upgradefile.cpp 267 : algorithm 1
[INFO]UPDATER pkg_algo_digest.cpp 85 : enter Sha256Algorithm::Update

1
回复
2022-3-4 17:52:16
民之码农
民之码农 回复了 wx587ce054121e4
您好,我这边验证SD卡升级出现问题,请教下! 1、用packaging_tools生成的升级包是hi3516_ota_144856.zip,是将其改为updater.zip,放在/sdcard/updater下吗? 2、updater内置证书是和私钥对应的公钥一样,还是和私钥一样,我是放的公钥 3、按照上面的路径后,出现如下错误,麻烦看下是什么原因 [INFO]UPDATER pkg_zipfile.cpp 139 : LoadPackage /sdcard/updater/updater.zip :180044360[INFO]UPDATER pkg_zipfile....

[ERROR]UPDATER pkg_stream.cpp 108 : Flush size 3373989148 local size:4294967295

Flush size 和localsize的大小不一致 这只打印了一条日志;

但日志不全,要看[ERROR]开始的就是错误日志,看代码就可以分析的。

已于2022-3-7 10:47:40修改
3
回复
2022-3-7 10:45:06
wx587ce054121e4
wx587ce054121e4

我之前用的3.0LTS验证的,没有升级成功。现在换成和您用的一样的版本3.1Beta,在uboot命令行配置bootargs为mmcblk0p3后,boot后,没有显示出sd卡升级的页面,而是和正常启动的页面一样

2
回复
2022-3-7 19:56:37
回复
    相关推荐