Linux updateEngine 工具

发布于:2025-06-27 ⋅ 阅读:(13) ⋅ 点赞:(0)

好的,下面我系统性、详细、通俗地帮你把这个 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”、“速查表”。


网站公告

今日签到

点亮在社区的每一天
去签到