RK3568开发板OTA升级

2025-04-21

OTA(Over-The-Air)升级作为一种无损失的系统升级方式,能够远程将新功能部署到产品上,极大地提高了设备的可维护性和可扩展性。除了通过网络直接下载OTA升级包外,我们还可以通过将升级包下载到SD卡或U盘后,再对设备进行本地升级。

本文将基于飞凌嵌入式RK3568开发板,详细介绍OTA升级的流程,特别是本地升级程序recovery的执行流程及技术细节。

一、制作recovery.img

首先,我们需要制作recovery镜像。recovery相关的源码位于buildroot/output/OK3568-recovery/build/recovery-develop目录下。

源码修改与编译

如果修改过该目录下的源码文件,需要执行以下操作:

进入源码目录:forlinx@ubuntu:~/OK3568-linux-source$ source envsetup.sh

选择某一平台的recovery配置,输入96(具体数字可能因平台而异)。

清除编译产物并重新编译recovery:forlinx@ubuntu:~/OK3568-linux-source$ make recovery-dirclean && make recovery

清除rkupdate编译产物并重新编译:forlinx@ubuntu:~/OK3568-linux-source$ make rkupdate-dirclean && make rkupdate

如果没有修改过源码文件,则直接执行以下操作:

编译生成recovery.img:forlinx@ubuntu:~/OK3568-linux-source$ ./build.sh recovery

将生成的固件拷贝至rockdev/目录下:forlinx@ubuntu:~/OK3568-linux-source$ ./mkfirmware.sh

烧写recovery.img

将生成的recovery.img文件烧写到设备的指定分区。具体操作通常是通过设备分区表,勾选对应的recovery分区(如分区9),选择recovery.img路径,然后点击执行烧写操作。

RK3568开发板OTA升级 (https://ic.work/) 技术资料 第1张

二、制作升级镜像

为了验证升级是否成功,我们需要对boot.img文件进行修改。boot.img文件存放有设备树和内核,我们可以通过修改设备树来实现升级效果。

修改设备树文件

修改/OK3568-linux-source/kernel/arch/arm64/boot/dts/rockchip/OK3568-C-common.dtsi文件,对forlinx_control节点进行如下修改,以默认只打开HDMI输出,关闭MIPI和LVDS输出:

/ { model =“Forlinx OK3568-C Board"; compatible ="forlinx,ok3568","rockchip,rk3568-evb1-ddr4-V10","rockchip,rk3568"; forlinx control { status ="okay"; video-hdmi ="hdmi"; video-mipi-edp ="off"; video-lvds-rgb ="off"; };

修改package-file文件

根据升级需求修改/OK3568-linux-source/tools/linux/Linux_Pack_Firmware/rockdev/package-file文件。

本例中以更新boot.img为例,所以将其他.img文件注释掉。用户可以根据实际产品更新需求对该文件进行调整。

RK3568开发板OTA升级 (https://ic.work/) 技术资料 第2张

重新编译内核

修改完设备树后,需要重新编译内核以生成新的boot.img文件。

RK3568开发板OTA升级 (https://ic.work/) 技术资料 第3张

三、升级操作

SD卡或U盘升级

将SD卡或U盘默认挂载到RK3568开发板的/run/media目录下。将update.img镜像文件拷贝到开发板的/userdata目录下。重启开发板后,系统将自动检测该目录下的升级包并进行升级。

FTP服务器升级

在RK3568开发板端执行相应命令,将FTP服务器上的升级包文件拷贝到开发板进行升级。

下载完成后,使用update ota /userdata/update.img命令进行升级。

升级过程中设备将会进入recovery模式,并进行自动升级。升级成功后,设备将进入正常系统(normal系统)。

RK3568开发板OTA升级 (https://ic.work/) 技术资料 第4张

四、验证测试结果

烧写默认出厂镜像文件

将RK3568开发板上电,串口终端按住空格键进入uboot选屏界面。烧写默认出厂镜像文件后,观察现象:默认开启HDMI、MIPI和LVDS三个输出。

RK3568开发板OTA升级 (https://ic.work/) 技术资料 第5张

烧写升级包镜像文件

烧写升级包镜像文件后,观察现象:只有HDMI显示开启,其他两个输出被关闭。这验证了升级操作的成功性。

RK3568开发板OTA升级 (https://ic.work/) 技术资料 第6张

五、注意事项

打包update.img固件

升级固件可以全分区打包,也可以部分升级。通过修改package-file文件,可以去掉不需要升级的分区,从而减小升级包(update.img)的大小。

如果package-file中包含了recovery.img,它不会在recovery模式中升级。为了预防升级过程中掉电导致其他分区无法正常升级的问题,recovery.img的升级放在normal系统下执行。执行update命令时,会先检测update.img升级包中是否包含recovery.img,若有则升级recovery分区,再进入recovery模式升级其他分区固件。

misc分区

misc分区不建议打包进update.img中。即使打包进去,在升级程序中加载判断到后也会忽略该分区。即使升级了misc分区,升级成功后recovery程序仍会清空misc分区中所有的命令及参数,从而达到预期效果。

userdata分区

若将update.img升级包放置在flash中的userdata分区,则需要保证package-file中不包括userdata.img被打包进去,以防止文件系统的损坏和分区mount不成功的问题。

若从SD卡或U盘升级时,可以打包userdata.img,从而对userdata分区进行升级。升级完成后,会对userdata分区重新进行resize操作。

通过以上步骤和注意事项,我们可以成功地在OK3568-C开发板上实现OTA升级操作,并验证升级效果。希望本文能够对大家在OTA升级方面的项目开发有所帮助。

审核编辑 黄宇

文章推荐

相关推荐

  • 小安派BW21 UNO从机

    作为一款本地AI图象识别开发板,BW21-CBV-Kit它能够独自运行目标识别模型。2.4GHz+5GHz的双频Wi-Fi,提供高性能的无线传输能 ...

    2025-05-21
  • IGBT模块吸收回路分析模型

    IGBT模块吸收回路分析模型 一、IGBT模块吸收电路的模型 尽管开关器件内部工作机理不同,但对于吸收电路的分析而 ...

    2025-05-21
  • BLDC电机的基本结构和控制方式

    来源:攻城狮原创之设计分享 直流无刷电机(Brushless DC Motor,BLDC)是一种基于电子换向技术的高效电机,具有长寿命 ...

    2025-05-21
  • 联通智家通通:聚四方守护之力,筑万家AI通途

    “神兽镇宅”,是深植于中国人心中的居家智慧。朱雀、玄武等神兽,站立在紫禁城之巅,也悬于普通百姓门上,寄托着镇守四方风雨 ...

    2025-05-21
  • FinFET与GAA结构的差异及其影响

    文章来源:老虎说芯 原文作者:老虎说芯 本文介绍了当半导体技术从FinFET转向GAA(Gate-All-Around)时工艺面临 ...

    2025-05-21
  • 一文详解球栅阵列封装技术

    文章来源:学习那些事 原文作者:前路漫漫 本文介绍了球栅阵列封装的结构、分类、应用和发展趋势。 概述 ...

    2025-05-21
  • 智能车电磁组——基本控制篇

    智能车电磁组——基本控制篇 前言 电磁车的控制比较简单,可以分为信号采集,舵机控制和电机控制三部分, ...

    2025-05-21
  • 低成本电源排序器解决方案

    绝大多数负载点DC-DC转换器可以将上一个转换器的电源就绪输出连接至下一个转换器的使能输入,实现上电排序。这种方法只适合 ...

    2025-05-21
  • 注入增强型IGBT学习笔记

    来源:星际浮尘 注入增强型IGBT 1、结构特点与典型工艺 1.1结构提出与发展 为了协调 ...

    2025-05-21
  • 解析RZ/N2L CANFD模块的缓冲区机制(3)

    在工业自动化、智能交通、机器人等领域,CANFD(CAN with Flexible Data-Rate)技术正逐步取代传统CAN,以适应更高的数据速 ...

    2025-05-21