RK3568开发板OTA升级

发布时间:2025-3-31 15:40    发布者:秦彻呀呀呀
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路径,然后点击执行烧写操作。
9.jpg
二、制作升级镜像
为了验证升级是否成功,我们需要对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文件注释掉。用户可以根据实际产品更新需求对该文件进行调整。
10.jpg
重新编译内核
修改完设备树后,需要重新编译内核以生成新的boot.img文件。
11.jpg
三、升级操作
SD卡或U盘升级
将SD卡或U盘默认挂载到RK3568开发板的/run/media目录下。将update.img镜像文件拷贝到开发板的/userdata目录下。重启开发板后,系统将自动检测该目录下的升级包并进行升级。

FTP服务器升级
在RK3568开发板端执行相应命令,将FTP服务器上的升级包文件拷贝到开发板进行升级。
下载完成后,使用update ota /userdata/update.img命令进行升级。
升级过程中设备将会进入recovery模式,并进行自动升级。升级成功后,设备将进入正常系统(normal系统)。
12.jpg
四、验证测试结果
烧写默认出厂镜像文件
将RK3568开发板上电,串口终端按住空格键进入uboot选屏界面。烧写默认出厂镜像文件后,观察现象:默认开启HDMI、MIPI和LVDS三个输出。
13.jpg
烧写升级包镜像文件
烧写升级包镜像文件后,观察现象:只有HDMI显示开启,其他两个输出被关闭。这验证了升级操作的成功性。
14.jpg
五、注意事项
打包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升级方面的项目开发有所帮助。​​​​

本文地址:https://www.eechina.com/thread-884852-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

  • Microchip视频专区
  • 无线充电基础知识及应用培训教程3
  • 无线充电基础知识及应用培训教程2
  • 基于CEC1712实现的处理器SPI FLASH固件安全弹性方案培训教程
  • 了解一下Microchip强大的PIC18-Q24 MCU系列
  • 贸泽电子(Mouser)专区
关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表