RK平台Android设备OTA升级教程:从原理到U盘实操

电子说

1.4w人已加入

描述

 

 

OTAOver-The-Air)升级是 Android 系统标准的软件更新方式,在 RK(瑞芯微)平台上,OTA 升级不仅支持本地升级(如 U 盘、SD 卡),还支持网络升级,同时提供完整包” 和 差异包” 两种升级形态,适配不同场景(如全新安装、小版本更新)。本文将从 OTA 升级包的类型与编译入手,拆解 RK 平台 OTA 升级的核心逻辑,并以最常用的 “U 盘本地升级” 为例,提供 step-by-step 实操指南,帮助开发者或设备维护人员高效完成升级操作。

瑞芯微瑞芯微瑞芯微

 

 

 

一、OTA 升级包:类型与编译方法

 

RK 平台 OTA 升级的核心是 升级包,需根据升级需求选择对应的包类型,并按 Android 版本差异执行正确的编译命令,否则可能导致升级失败。

 

 

1. 两种核心升级包

 

类型

 

 

适用场景

 

 

特点

 

 

完整包

 

 

全新升级、跨版本升级(如 Android 10→11)、设备首次升级

 

 

包含 system/recovery/boot.img 等完整分区,体积较大

 

 

差异包

 

 

小版本更新(如 V1.0→V1.1)、在线增量更新

 

 

仅包含新旧版本差异内容,体积小、下载快

 

 

2. 不同 Android 版本的编译命令

 

编译 OTA 包的关键是确保 boot 与 kernel 打包到一起(避免后续差分升级失败),且需根据 Android 版本选择命令,核心依赖./mkimage.sh ota工具完成最终打包。

 

 

1Android < 11 版本

 

  •  
  •  
# 清理旧编译文件→全量编译→生成完整包→打包boot与kernelmake installclean && make -j16 && make otapackage -j16 && ./mkimage.sh ota

2Android 11 版本

 

需先检查device/rockchip/common是否包含特定提交(commit: 04bc25f3):

 

 

若包含该提交:

 

 

  •  
make installclean && make -j16 && make dist -j16 && ./mkimage.sh ota

若不包含:同 Android < 11 命令

 

 

3Android > 11 版本

 

  •  
make installclean && make -j16 && make dist -j16 && ./mkimage.sh ota

4)通用编译工具:build.sh

 

所有 Android 版本均可通过build.sh简化编译,需添加-o选项指定 OTA 包输出:

 

 

  •  
  •  
# 示例:针对rk3588-evb7-lp4-v10设备,16线程编译./build.sh -AUCKuo -d rk3588-evb7-lp4-v10 -J 16

编译后产物

 

编译完成后,在rockdev/Image-rk3588_s/目录下生成完整包(如rkxxxx-ota-eng.root.zip),需将其重命名为update.zip(设备默认识别该名称),用于后续升级。

 

 

二、RK 平台 OTA 升级核心流程

 

RK 平台 OTA 升级需经过 触发重启校验升级恢复”5 个关键环节,依赖 Main System(正常 Android 系统)、Recovery 模式、Bootloader 三者协同,流程如下:

 

 

瑞芯微

关键说明:

 

 

Recovery 模式:类似 Windows PE,负责升级包解析、分区写入,避免升级过程中破坏正常系统;

 

 

校验环节:防止第三方非法固件,需确保升级包与设备签名密钥一致(后续常见问题” 会提及);

 

 

断电风险:升级过程中(环节)若断电,可能导致分区损坏,需严格避免。

 

 

三、盘本地 OTA 升级实操步骤

 

盘升级是 RK 设备最常用的本地升级方式,适用于无网络、跨版本更新场景,以下是详细操作:

 

 

3.1 前期准备

 

1.盘格式化:将 U 盘格式化为 FAT32 格式(兼容性最佳,若需用 NTFS,需提前开启设备内核的 NTFS 支持);

 

 

2.升级包准备:将编译好的update.zip(完整包 / 差异包,根据需求选择)拷贝到 根目录(确保路径无中文 / 特殊字符);

 

 

3.设备检查:确保设备电量≥50%(避免升级中断电),并备份重要数据(跨版本升级可能清除数据)。

 

 

3.2 设备端升级操作

 

1.连接 U :将准备好的 U 盘通过 USB 接口连接到 RK 设备(若设备无 USB-A 口,需用 OTG 转接线);

 

 

2.检测升级包:设备会自动扫描 U 盘根目录的update.zip,约 10-30 秒后弹出升级对话框,提示 设备将重启并升级固件,请保证您的 USB 电缆或充电器是连接状态!

 

 

3.确认升级:点击对话框中的确认” 按钮,设备会自动重启并进入 Recovery 模式;

 

 

4.等待升级:进入 Recovery 后,设备会自动执行校验分区写入,屏幕会显示升级进度(如 升级 system 分区:50%”),此过程约 5-15 分钟(取决于包大小),切勿断开 U 盘或断电

 

 

5.升级完成重启:升级结束后,设备会自动重启,重启后直接进入 Android 主界面。

 

 

3.3 升级后处理

 

1.删除升级包:重启后会弹出是否删除升级包?” 的提示 —— 若不删除,系统可能再次提示升级,建议点击 ” 清理 盘空间;

 

 

2.功能验证:升级后检查核心功能(如 WiFiUSB、屏幕显示)是否正常,确认无异常则升级完成。

 

 

四、常见问题与解决方法

 

 RK 平台 OTA 升级中,以下问题较为常见,需针对性排查:

 

 

常见问题

 

 

可能原因

 

 

解决方法

 

 

差分升级失败(提示补丁不匹配

 

 

1. 未保存旧版本的 target_files 素材包;2. 单独烧写 kernel,未用./mkimage.sh ota 打包;3. 手动修改 out 目录文件

 

 

1. 每发布一个版本,保存out/target/product/rkxxxx/obj/PACKAGING/target_files_intermediates/下的素材包;2. 必须用./mkimage.sh ota生成固件;3. 禁止手动修改 out 文件

 

 

升级包签名校验错误

 

 

升级前后使用的签名密钥不一致(如旧版本用 testkey,新版本用自定义 key

 

 

确保编译所有版本时,build/target/product/security/目录下的密钥(如 testkey)完全一致;跨版本升级时,用旧版本密钥覆盖新版本密钥后再编译升级包

 

 

盘无法被检测到

 

 

1. U 盘格式为 NTFS,设备内核未开启 NTFS 支持;2. OTG 转接线故障

 

 

1. 重新将 盘格式化为 FAT32;或在编译内核时开启 “CONFIG_NTFS_FS=y” 配置;2. 更换 OTG 转接线重试

 

 

Logo 未更新成功

 

 

resource.img 未升级(Logo 存储于 resource.img,优先从 resource 分区读取)

 

 

检查升级包是否包含 resource.img;若 parameter.txt 中声明了 resource 分区,确保该分区已成功升级

 

 

总结

 

RK 平台 Android OTA 升级的核心是 正确编译升级包 遵循升级流程”—— 完整包适合全新 跨版本升级,差异包适合小更新;盘本地升级则是最便捷的离线方案,只需注意升级包路径、格式及断电风险。掌握本文的编译方法、流程逻辑和实操步骤,可高效解决 RK 设备的绝大多数 OTA 升级需求。

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分