网站首页 > 技术教程 正文
说起OTA我们应该都不陌生,它是一种可以为设备无损失升级系统的方式,能将新功能远程部署到产品上。我们不仅可以通过网络下载OTA升级包,也可以通过下载OTA升级包到SD卡或U盘后再对设备升级。
本文将通过飞凌嵌入式OK3568-C开发板来为大家介绍OTA升级的流程,本地升级程序recovery执行升级的流程及技术细节。
1. 制作 recovery.img
recovery相关的源码路径:
buildroot/output/OK3568-recovery/build/recovery-develop
如果有修改过以上目录的源码文件,则需要执行以下操作:
(1).forlinx@ubuntu:~/OK3568-linux-source$source envsetup.sh
(2).选择某一平台的 recovery 配置,输入96
(3).forlinx@ubuntu:~/OK3568-linux-source$make recovery-dirclean && make recovery #清除编译产物重新编译
(4).forlinx@ubuntu:~/OK3568-linux-source$make rkupdate-dirclean && make rkupdate #清除编译产物重新编译
如果没有修改过上述目录的源码文件,则直接执行以下操作:
(1).forlinx@ubuntu:~/OK3568-linux-source$ ./build.sh recovery #编译生成recovery.img
(2).forlinx@ubuntu:~/OK3568-linux-source$ ./mkfirmware.sh
#将生成的固件拷贝至 rockdev/目录下
烧写/OK3568-linux-source/buildroot/output/OK3568-recovery/images/recovery.img文件。
点击设备分区表,勾选9,选择recovery路径,点击执行。
2. 制作升级镜像
如何验证是否升级成功了呢?我们要先对boot.img文件有一个初步了解,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";
};
修改文件:
/OK3568-linux-source/tools/linux/Linux_Pack_Firmware/rockdev/package-file
根据需求修改该文件,本例程以更新boot.img为例,所以将其他.img文件注释掉。用户可以根据产品更新需求对该文件进行调整。
本例程以修改设备树显示为例,修改完设备树后,重新编译内核。
3.升级操作
SD卡或U盘升级
将SD卡或U盘默认挂载到OK3568-C开发板的/run/media目录下。将update.img镜像文件拷贝到OK3568-C开发板的/userdata目录下,重启开发板后系统将检测该目录下的升级包自动升级。
FTP服务器升级
OK3568-C开发板端执行如下命令,将服务器的升级包文件拷贝到开发板进行升级。
下载完成以后使用以下命令进行升级:
update ota /userdata/update.img
升级过程中设备将会进入recovery模式,并进行自动升级,升级成功后会进入到正常normal系统。
4. 验证测试结果
将OK3568-C开发板上电,串口终端按住空格键,会进入uboot选屏界面。烧写默认出厂镜像文件现象:默认是开启HDMI、MIPI和LVDS三个输出。
烧写升级包镜像文件后现象:只有HDMI显示开启,其他的两个输出被关闭。
5. 注意事项
打包update.img固件时需要注意,升级固件可以全分区打包,也可以部分升级,可修改package-file文件,将不要升级的分区去掉,这样可以减少升级包(update.img)的大小。
package-file中recovery.img如果打包进去的话,不会在Recovery模式中升级,为了预防升级recovery.img过程中掉电导致后面其他分区无法正常升级的问题,该分区升级放在normal系统下升级,执行update命令时会先检测update.img升级包中是否有打包recovery.img,若有则升级recovery分区,再进入Recovery模式升级其他分区固件。
misc分区不建议打包进update.img中,即使有打包进去,在升级程序中加载判断到后也会忽略该分区,即使升级了misc分区,升级成功后recovery程序仍会清空misc分区中所有的命令及参数,从而导致达不到预想的结果。
如果将update.img升级包放置在flash中的userdata分区,则需要保证package-file中不包括userdata.img被打包进去,原因是可能会导致文件系统的损坏,升级成功后可能使oem或userdata分区mount不成功。若从SD卡或U盘升级时,可以打包userdata.img,从而对userdata分区进行升级。升级完成后会对userdata分区重新resize操作。
至此,OTA升级的全部流程讲解完毕,用户可以先按照该文章操作进行试验,熟悉本文章操作后,就可以对uboot,内核或者文件系统进行修改,通过OTA方式远程升级用户产品,从而修复产品中的BUG,更加方便地进行产品优化,更新迭代。
猜你喜欢
- 2024-10-22 精简、root康佳电视升级包LED37R5200PDF(晨星Mstar)
- 2024-10-22 彻底搞清安卓手机root本质以及root一般步骤
- 2024-10-22 魔百盒201-2线刷(魔百盒201刷机包)
- 2024-10-22 谷歌发布Android 5.0 底包驱动下载地址及安装步骤
- 2024-10-22 Nexus 5X的Android 8.0 Oreo刷机步骤
- 2024-10-22 Android FastBoot 刷机使用方法(android刷机方式)
- 2024-10-22 Nvidia Shield TV 2017版美版8.01固件刷机教程
- 2024-10-22 联想P2刷机警示!望能帮助到P2的机油们!
- 2024-10-22 谷歌眼镜探索版(初代)获得最终固件 将于明年2月25日结束常规支持
- 2024-10-22 大麦盒子DM1001刷机降级及刷写bootloader
你 发表评论:
欢迎- 最近发表
-
- linux CentOS检查见后门程序的shell
- 网络安全工程师演示:黑客是如何使用Nmap网络扫描工具的?
- Linux中ftp服务修改默认21端口等(linux修改ftp配置文件)
- Linux系统下使用Iptables配置端口转发,运维实战收藏!
- 谈谈TCP和UDP源端口的确定(tcp和udp的端口号相同吗)
- Linux 系统 通过端口号找到对应的服务及相应安装位置
- 快速查找NAS未占用端口!Docker端口秒级排查+可视化占坑双杀技
- 【知识杂谈#2】如何查看Linux的(本地与公网)IP地址与SSH端口号
- 如何在Linux中查询 DNS 记录,这三个命令可谓是最常用、最经典的
- 【Linux系统编程】特殊进程之守护进程
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)