找回密码
 注册
关于网站域名变更的通知
查看: 455|回复: 1
打印 上一主题 下一主题

万物皆可OTA,为你的RK3568开发板部署新功能只需3步——飞凌嵌入式

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2023-3-31 11:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 飞凌嵌入式 于 2023-3-31 11:57 编辑 + ]$ ]6 a/ O3 k. Q9 o

: u( H/ o  Y2 o: z
OTA是一种可以无损失升级系统的方式,可以犹如天降神兵一般地将新功能远程部署到产品上。我们可以通过网络自动下载OTA升级包,也可以通过下载OTA升级包到SD卡或U盘后再对设备升级。本文将通过飞凌嵌入式OK3568-C开发板介绍OTA升级流程,本地升级程序recovery执行升级的流程及技术细节。
/ w* |0 d/ U, A9 ?4 l: {

' m, {4 G7 t9 f0 k
' m( E" d2 L' p8 m' B" A- z
1、制作recovery.img
( m& V) V" {+ L* ?) ^5 |7 o" ~
recovery相关的源码路径:
buildroot/output/OK3568-recovery/build/recovery-develop

& q( c' `9 A0 r' b8 R
如果有修改过以上目录的源码文件,则需要执行以下操作:
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 #清除编译产物重新编译

3 X& {/ h8 f3 r% N6 |! r
如果没有修改过上述目录的源码文件,则直接执行以下操作:
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路径,点击执行。
! q% p" B: p: d3 {
9 P, A# p+ o$ P7 Q# W% f- L3 B
  C5 `: }! P, ~; t, E- Z, F8 N
; N! l: l  n: T3 [) A+ ~  i) g
2、制作升级镜像

6 r/ c2 }, D; \( G4 C/ E7 s- y1 V
如何验证是否升级成功了呢?我们要先对boot.img文件有一个初步了解,boot.img文件存放有设备树和内核,我们只要对设备树或者内核进行适当的修改即可。本例程以更新boot.img文件为例,对设备树进行了适当修改。

; _# P$ y2 ]0 G. c. i. r
修改 /OK3568-linux-source/kernel/arch/ARM64/boot/dts/rockchip/OK3568-C-common.dtsi设备树文件,对forlinx_control节点做如下修改。默认只打开HDMI输出,将MIPI和LVDS输出关闭。
7 g6 f3 e+ K4 h) c3 c
& t4 z. S+ g" H$ E# M& T% o" A

+ E0 N( n1 r3 P9 |: P8 Y
修改/OK3568-linux-source/tools/linux/Linux_Pack_Firmware/rockdev/package-file文件,根据需求修改该文件,本例程以更新boot.img为例,所以将其他.img文件注释掉。用户可以根据产品更新需求对该文件进行调整。

. J$ D" k/ k. U: `3 A3 w. h
本例程以修改设备树显示为例,修改完设备树后,重新编译内核。

2 N) ]1 T6 c) G. U2 u1 o: {3 _

, `. ^* J) a0 Z  B6 w
0 s$ M* E" @% E$ _) S  q# Q
3、升级操作SD卡或U盘升级
: J, o& O! i" ^
将SD卡或U盘默认挂载到OK3568-C开发板的/run/media目录下。将update.img镜像文件拷贝到OK3568-C开发板的/userdata目录下,重启开发板后系统将检测该目录下的升级包自动升级。

- w& }) l' ^$ b% H* u5 n) e  @ftp服务器升级
开发板端执行如下命令,将服务器的升级包文件拷贝到开发板进行升级。
载完成以后使用以下命令进行升级:
: y" x* q/ ?, n8 G9 I2 R
update ota /userdata/update.img
升级过程中设备将会进入recovery模式,并进行自动升级,升级成功后会进入到正常normal系统。
% I( k1 w* f8 H$ |
验证测试结果
" ?! \4 D8 e, Z) \/ Z& @" j. n( a
将OK3568-C开发板上电,串口终端按住空格键,会进入uboot选屏界面。
烧写默认出厂镜像文件现象:默认是开启HDMI、MIPI和LVDS三个输出。
/ j, o+ w! K, C  k) A% l: Y
烧写升级包镜像文件后现象:只有HDMI显示开启,其他的两个输出被关闭。

$ z/ |; f* c% i- S& L7 z
注意事项
打包update.img固件时需要注意,升级固件可以全分区打包,也可以部分升级,可修改package-file文件,将不要升级的分区去掉,这样可以减少升级包(update.img)的大小。
5 f! e, u3 D& q& d2 M8 `7 b
package-file中recovery.img如果打包进去的话,不会在Recovery模式中升级,为了预防升级recovery.img过程中掉电导致后面其他分区无法正常升级的问题,该分区升级放在normal系统下升级,执行update命令时会先检测update.img升级包中是否有打包recovery.img,若有则升级recovery分区,再进入Recovery模式升级其他分区固件。
1 Z7 X/ G; F8 S9 s
misc分区不建议打包进update.img中,即使有打包进去,在升级程序中加载判断到后也会忽略该分区,即使升级了misc分区,升级成功后recovery程序仍会清空misc分区中所有的命令及参数,从而导致达不到预想的结果。
# }4 e' L4 ~& E% J: {; X; n
如果将update.img升级包放置在flash中的userdata分区,则需要保证package-file中不包括userdata.img被打包进去,原因是可能会导致文件系统的损坏,升级成功后可能使oem或userdata分区mount不成功。若从SD卡或U盘升级时,可以打包userdata.img,从而对userdata分区进行升级。升级完成后会对userdata分区重新resize操作。
* m' A4 ?1 B! t: y0 S& \+ E6 {2 z4 V
/ Q3 V5 U0 u# e- |9 H8 Y

& v% J& H) x2 E; b( c) J2 Z0 iPS:
OK3568-C开发板不接屏升级失败怎么办?
(1)如果有屏幕,请先接入屏后再执行OTA升级;
(2)如果设备没有屏幕,请在
/OK3568-linux-source/buildroot/configs/OK3568-recovery_defconfig中加入BR2_PACKAGE_RECOVERY_NO_UI=y配置,编译刷机后,再进行OTA升级。

. b" m) v- H: w

' M- h0 Y. e8 U
至此,OTA升级的全部流程讲解完毕,用户可以先按照该文章操作进行试验,熟悉本文章操作后,就可以对uboot,内核或者文件系统进行修改,通过OTA方式远程升级用户产品,从而修复产品中的BUG,更加方便地进行产品优化,更新迭代。
& }+ j* R) Y8 ?3 |
4 L1 ]( A0 t# L1 Y* j

该用户从未签到

2#
发表于 2023-3-31 14:14 | 只看该作者
请问有软件开发包吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-10 03:32 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表