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

3步教你升级RK3568开发板OTA

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2023-4-8 13:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
本帖最后由 Heaven_1 于 2023-4-10 11:26 编辑
& ?: p2 X- H/ D% M5 l  r
% Z! O! T% k- D8 m9 q% J本文将通过飞凌嵌入式OK3568-C开发板介绍OTA升级流程,本地升级程序recovery执行升级的流程及技术细节。      
1 c+ u; |( m% j/ Y. W0 ]2 X0 ]' V3 `

" }4 \! a1 {$ G9 W0 L. v

) |& |& _2 R$ _, x! {& ?7 V8 V( j
) V6 |5 x$ J& w+ [; s2 X: A6 M9 s5 k9 T4 ~- u# Z# B
01制作recovery.img
3 w- V) u% C+ O* a- A0 z
2 h$ h# d9 R& f# J- |! b1 grecovery相关的源码路径:
9 i) I" V: m) a5 e; o6 \: D2 v, I, J( k  m' t& c; P0 w2 k/ F. \
buildroot/output/OK3568-recovery/build/recovery-develop
( S" j7 n( c6 G# Q* j& u- x0 x. Q. N# |" b. c0 z' e
/ a0 }3 c+ |) |; j( ^

0 T4 y1 \+ S' \' r: t: I9 `: {0 R0 ?1 g0 j) S$ u; ?( E
如果有修改过以上目录的源码文件,则需要执行以下操作:; i8 G: ?7 M4 d6 Y" O$ r
6 c: |, a1 I3 g, F9 Z. @
1. forlinx@ubuntu:~/OK3568-linux-source$ source envsetup.sh
/ p0 N" {6 r; i1 _, L
6 w4 B! h9 ^5 O" b2. 选择某一平台的 recovery 配置,输入96
6 [7 N/ f) h! M* L" R
& l* _' V% d5 k% l3. forlinx@ubuntu:~/OK3568-linux-source$ make recovery-dirclean && make recovery  #清除编译产物重新编译( U1 a; {7 S  U0 K% P
3 t7 z6 u/ e# o- f8 z
4. forlinx@ubuntu:~/OK3568-linux-source$ make rkupdate-dirclean && make rkupdate  #清除编译产物重新编译
7 _7 y/ c9 |+ \* R& l1 c4 N3 L. ]
  a4 |! L4 @# q/ ~4 w
4 P' Z! Q/ x7 N$ }& X, N# a6 b, `) f; ~/ x/ s
3 H' V% @# ~( X
如果没有修改过上述目录的源码文件,则直接执行以下操作:
; K* R9 t* E- \/ ]* O/ z( y6 R0 h* M) \/ d
1. forlinx@ubuntu:~/OK3568-linux-source$ ./build.sh recovery  #编译生成recovery.img2 D1 {$ e! K- Q

3 {3 @+ q# J0 a9 l4 l2. forlinx@ubuntu:~/OK3568-linux-source$ ./mkfirmware.sh
5 _7 \# m- b9 k+ S
" X* [) U6 J4 P/ o& s) ~   #将生成的固件拷贝至 rockdev/目录下
" w, D- I9 ^+ |9 ~+ T( e
. [( m7 h1 S$ `- \, r; e烧写/OK3568-linux-source/buildroot/output/OK3568-recovery/images/recovery.img文件。& x, F; ^4 A" m) X- \1 |0 D- ~: ]. x
: F) c. {  r2 l/ X6 i

2 u1 e1 F' Y- Y+ U! c; J
3 n) u' K* D5 ?( O2 k( Y4 w- U% g
点击设备分区表,勾选9,选择recovery路径,点击执行。# o  V, |0 a+ R% ]

/ `. p% Z: J  Q" U. R1 ^' q: ]( Q* o" A  A! W1 i  X9 |! T. r

8 `$ x/ X& g; Y2 S  v
' O1 d" B1 c9 H" V8 Z1 S+ s& m. [5 o, s- C3 D3 R6 E5 X
1 i. T. K4 S: ?+ D. _, U
8 |$ ~' M( F  R; b( Z4 z0 K
4 F( G& R" D# J9 ^! D! W- J% h7 c
02制作升级镜像+ }5 I- [7 Q* ^6 z
" d- o) v9 z8 Z! T# R. W/ M
如何验证是否升级成功了呢?我们要先对boot.img文件有一个初步了解,boot.img文件存放有设备树和内核,我们只要对设备树或者内核进行适当的修改即可。本例程以更新boot.img文件为例,对设备树进行了适当修改。: \+ r7 j6 d8 H2 {; \  z

6 @% ^  T0 p5 U  |. a修改 /OK3568-linux-source/kernel/arch/ARM64/boot/dts/rockchip/OK3568-C-common.dtsi设备树文件,对forlinx_control节点做如下修改。默认只打开HDMI输出,将MIPI和LVDS输出关闭。9 X. G' c! }# ?; x! n- Q
0 e, D! d/ J; Z0 x, r* X& [; t& F
, I8 y% k; r* T5 x: p8 w. M
! X% O) |  ^8 u( Y8 R" a

: T5 z' K( w* h. C" V* ]6 [$ d! R& M* a$ d

# B: z! }% ]$ X+ U* Y4 q3 O( X4 d
% `- {2 F& Q  g/ t* t* X! b! [( D5 o# C( _
! o/ I4 U2 [: \. d! H* i
修改/OK3568-linux-source/tools/linux/Linux_Pack_Firmware/rockdev/package-file文件,根据需求修改该文件,本例程以更新boot.img为例,所以将其他.img文件注释掉。用户可以根据产品更新需求对该文件进行调整。/ Y% g' J. v9 e3 P) A2 _
# M  Q, c' g5 I& j+ j& M  g

& ?" k/ s! `2 z- [9 F
/ E5 h7 O. S/ _, b* H* b
' U: J6 c0 K, D$ e" Q6 w+ ]& `$ A8 X. r: A9 I% |; }

, [3 K3 o' k4 K9 V6 ^3 h/ [3 L
5 @' i6 _5 G3 T# U" u" h. T* `1 `
" c2 _% g  y8 ~, }. w! Q! ^1 D2 D本例程以修改设备树显示为例,修改完设备树后,重新编译内核。
" n- W0 V( J1 O. K+ s) a9 f  k
! E; n% a' F; s5 w8 s0 R
6 T) ^- C1 s7 n+ X  X. c8 I
% b0 h' H7 [1 R9 J. z

! s2 X5 y% N5 B8 t9 X7 r1 t/ \! W1 I( n5 ^! v* S
03升级操作
: O( S* R' |; G. E" G# w5 o1 D7 K* x6 p% e
SD卡或U盘升级6 s& z3 \7 x7 N+ B6 p% C( P

. G' c2 f9 y, H3 V将SD卡或U盘默认挂载到OK3568-C开发板的/run/media目录下。将update.img镜像文件拷贝到OK3568-C开发板的/userdata目录下,重启开发板后系统将检测该目录下的升级包自动升级。. a' a4 L  \" y( N( q
: R) J3 o. a! Z: Q7 O

+ H2 q! W$ Q6 ]6 f' }+ a* i8 u0 v. j  E5 q

) S+ K' h2 g2 @( Fftp服务器升级' v: ?4 n% L: K1 W1 m' V& r
, Z8 I4 V) w( E' G% @& z: F
开发板端执行如下命令,将服务器的升级包文件拷贝到开发板进行升级。
$ h  a; z8 V! J1 R, w# L# S. q5 @# v2 l2 j( f
1 ^: Y) n; Q$ n! f

, j  P  o1 \0 ^" q5 t  j# H
  }& H, W6 b) I+ s3 p' s& x+ J  \2 z0 \/ m% w

1 I3 ~" I. R. p& i8 P) y0 A
2 r7 m+ B- P8 A/ G; l下载完成以后使用以下命令进行升级:
7 K% U8 N3 N3 B" F2 H3 X; [' S" n2 T2 F+ f, n  q, O9 C
update ota /userdata/update.img
2 E; I$ E6 P; N" `- n; B7 M) N+ ]& o  W
( O& \  k! ~) T/ g% U
! B8 ^0 G) z2 Y; ?8 H5 Y, p" `8 ~* w( l1 i0 h; F% h) {/ N
( M; V" w' a) v  z7 c( J
升级过程中设备将会进入recovery模式,并进行自动升级,升级成功后会进入到正常normal系统。
7 }8 n8 x  \. I2 H+ {. A9 u2 j8 I# i
验证测试结果
. J2 F9 Z, q- ~0 X8 X* I将OK3568-C开发板上电,串口终端按住空格键,会进入uboot选屏界面。' `8 q+ y" `) l7 o2 C; {3 C
$ x! ^& V* |( |1 d" {

8 o. J0 {( X0 w烧写默认出厂镜像文件现象:默认是开启HDMI、MIPI和LVDS三个输出。
2 Q1 h) k, J+ [+ {, U% V# W" o
8 P( V- I4 i9 V  N+ y
! z1 Q3 b4 v# f9 C# U- k" ?$ A5 n& a1 B6 k0 V" [' c

  R9 {- f% t3 l; r7 H) T# n9 Z9 I

3 N, V. ~. V- T, {' K. i) ?$ W' ~6 m# d' L: N1 X
烧写升级包镜像文件后现象:只有HDMI显示开启,其他的两个输出被关闭。  D( V" B* L5 C9 w) t/ L, J
4 o+ `) ?8 p, N2 b0 V& w) ?

: B+ A  I. P6 _) A: I  }& t: N1 ^2 g. |/ F

7 V* }; h; E) v) @9 |: m* J7 R  C7 ]; @% f; o0 Y8 d
注意事项
7 W: ^! i6 s: x( T0 b) K/ }/ B2 x& ~1 v! ], ?2 p* a4 M; q
打包update.img固件时需要注意,升级固件可以全分区打包,也可以部分升级,可修改package-file文件,将不要升级的分区去掉,这样可以减少升级包(update.img)的大小。
. w4 Z# N1 m# {" p, e) H0 H" `. ^" f
' S" n7 P# D) c0 Y; S0 K/ }& fpackage-file中recovery.img如果打包进去的话,不会在Recovery模式中升级,为了预防升级recovery.img过程中掉电导致后面其他分区无法正常升级的问题,该分区升级放在normal系统下升级,执行update命令时会先检测update.img升级包中是否有打包recovery.img,若有则升级recovery分区,再进入Recovery模式升级其他分区固件。- G4 d, Z/ [, G  s

. h0 v3 U; x5 B! \1 P3 Pmisc分区不建议打包进update.img中,即使有打包进去,在升级程序中加载判断到后也会忽略该分区,即使升级了misc分区,升级成功后recovery程序仍会清空misc分区中所有的命令及参数,从而导致达不到预想的结果。
4 x; Y4 K& ]/ P9 T% w: \  l5 ?. x; L

! }( V9 g$ i' l如果将update.img升级包放置在flash中的userdata分区,则需要保证package-file中不包括userdata.img被打包进去,原因是可能会导致文件系统的损坏,升级成功后可能使oem或userdata分区mount不成功。若从SD卡或U盘升级时,可以打包userdata.img,从而对userdata分区进行升级。升级完成后会对userdata分区重新resize操作。
7 Q- n6 O2 ~0 `# y' U# Y  x

该用户从未签到

2#
发表于 2023-4-10 11:27 | 只看该作者
开发板有具体的参数吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-9-10 17:08 , Processed in 0.156250 second(s), 27 queries , Gzip On.

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

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

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