好的,下面我系统性、详细、通俗地帮你把这个 updateEngine
工具的 --help
信息拆解讲清楚,尤其结合你 RK3588 实际开发理解:
🌟工具简介
updateEngine
是 RK3588 平台下用于固件升级、分区切换、数据格式化、misc操作等功能的官方工具,主要用于 A/B 分区机制、OTA 升级、Recovery 模式等场景。
版本信息:
V1.0.1-gdde564d-231109
含义:
V1.0.1
:工具版本gdde564d
:Git 提交哈希231109
:发布日期,23年11月9日
🧩参数详细解释
① --misc=now
Linux A/B 模式:设置当前分区为可启动(bootable)
➡️ 作用:通知 bootloader,下一次重启默认从当前分区启动。
② --misc=other
Linux A/B 模式:设置另一个分区为可启动
➡️ 作用:用于 A/B 升级切换,比如当前是 system_a,切到 system_b。
③ --misc=update
Recovery 模式:设置将要升级的分区
➡️ 作用:一般用于 OTA 或 recovery 场景,标记下一次升级对象。
④ --misc=display
显示 misc 区信息
➡️ 用于查看 misc 分区内容,便于调试。
⑤ --misc=wipe_userdata
格式化 data 分区
➡️ 类似于工厂重置,清空 /userdata
。
⑥ --misc_custom=<op>
自定义 misc 操作,op 可选:
read
:读取 custom cmdline 到/tmp/custom_cmdline
write
:将/tmp/custom_cmdline
写入 custom 区域clean
:清空 custom 区域
➡️ 这个用于开发自定义启动参数、调试信息等。
⑦ --update
进入升级模式
➡️ 常与 --partition
、--image_url
配合使用,开始固件升级流程。
⑧ --partition=<hex值>
指定需要升级的分区,注意:
不支持通过 OTA 升级 loader 和 parameter
具体位图如下:
16进制掩码 | 说明 |
---|---|
100000000000000000000000 |
升级 loader(不支持) |
010000000000000000000000 |
升级 parameter(不支持) |
001000000000000000000000 |
升级 uboot |
000100000000000000000000 |
升级 trust |
000010000000000000000000 |
升级 boot |
000001000000000000000000 |
升级 recovery |
000000100000000000000000 |
升级 rootfs |
000000010000000000000000 |
升级 oem |
000000001000000000000000 |
升级 uboot_a |
000000000100000000000000 |
升级 uboot_b |
000000000010000000000000 |
升级 boot_a |
000000000001000000000000 |
升级 boot_b |
000000000000100000000000 |
升级 system_a |
000000000000010000000000 |
升级 system_b |
000000000000001000000000 |
升级 misc |
000000000000000100000000 |
升级 userdata |
⚠️:
多个分区可以或运算组合。
示例:
--partition=0x80000
实际上是:
0x000000000000100000000000 -> 升级 system_a
⑨ --reboot
升级结束后重启设备
⑩ --version_url=<url>
指定版本信息文件路径
➡️ 通常配合 OTA 校验版本信息。
⑪ --image_url=<url>
升级固件包路径
➡️ 比如 /userdata/update.img
,即升级镜像。
⑫ --savepath=<url>
保存下载的升级镜像
⑬ --version
显示
updateEngine
工具版本
⑭ --rkdebug
日志输出到串口
➡️ 方便串口监控调试。
⑮ --ui_rotation
UI 旋转,取值:
值 | 含义 |
---|---|
0 |
正常方向 |
1 |
旋转90度 |
2 |
旋转180度 |
3 |
旋转270度 |
🛠️总结示例
常见升级操作:
updateEngine --image_url=/userdata/update.img --misc=update --savepath=/userdata/update.img --partition=0x80000 --reboot
含义:
- 指定镜像
/userdata/update.img
- 设置 misc 为 update 状态
- 镜像另存一份
- 升级
system_a
分区 - 升级完成自动重启
⚡实战注意点
- OTA 升级中 loader、parameter 不支持,需特殊工具烧写。
- A/B 分区切换必须配合
--misc=now
或--misc=other
。 partition
位运算控制升级对象,需精准填写。- 建议实际升级前,用
--misc=display
确认当前状态。
好的,我详细帮你拆解这两个升级命令,结合 RK3588 的实际场景彻底讲明白:
✅ 第一个:更新所有
updateEngine --image_url=/userdata/update.img --misc=update --savepath=/userdata/update.img --reboot &
逐条拆解:
参数 | 作用 |
---|---|
--image_url=/userdata/update.img |
指定升级镜像路径,通常是完整的固件包 |
--misc=update |
设置 misc 分区,标记当前是升级模式 |
--savepath=/userdata/update.img |
再将升级镜像备份到指定路径(和 image_url 一样,实际有可能是下载场景用的) |
--reboot |
升级完成后自动重启设备 |
& |
后台运行,立刻返回 shell |
特别说明:
这个命令没有指定
--partition
,因此默认按照升级包中的配置文件,升级全套内容,即:- uboot
- trust
- boot
- recovery
- rootfs
- system
- oem
- userdata
具体升级哪些,依赖于镜像包的制作配置。
✅ 第二个:单独更新 uboot
updateEngine --image_url=/userdata/update.img --misc=update --savepath=/userdata/update.img --partition=0x200000 --reboot &
逐条拆解:
参数与第一个命令相同,区别在于:
参数 | 具体含义 |
---|---|
--partition=0x200000 |
16进制掩码,指定只升级 uboot |
掩码分析:
从官方 help 信息:
0000 0010 0000 0000 0000 0000 = 0x200000
正好对应:
升级 uboot
总结:
- 该命令只会提取
update.img
中的uboot
部分进行升级 - 其他分区不会被修改
- 升级结束自动重启
⚡ 实战建议
场景 | 推荐用法 |
---|---|
OTA 完整升级 | 不带 --partition ,全套升级 |
定向修复 uboot 问题 | 指定 --partition=0x200000 |
升级 system_a | --partition=0x80000 |
升级 system_b | --partition=0x40000 |
⚠️:
- 生产环境请谨慎单独升级 uboot、trust、boot,容易引发启动失败
- 通常这些操作在开发、调试、工厂烧录用,OTA 正式流程一般全套升级
🛠️ 总结一句话
这两个命令本质区别:
- 不加
--partition
:按镜像默认,通常是全量升级 - 加
--partition
:只升级指定分区
如果你想,我可以:
- 帮你写一份标准 OTA 升级脚本
- 分析实际升级 log 验证是否成功
- 帮忙出一套分区掩码速查表
想要哪种,直接告诉我关键词就行,比如:“出脚本”、“看 log”、“速查表”。