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

3步教你升级RK3568开发板OTA

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Heaven_1 于 2023-4-10 11:26 编辑 . L8 r9 v9 c' \5 v% m7 m, X+ n. _  r
* t/ ~' t9 p2 X$ ^
本文将通过飞凌嵌入式OK3568-C开发板介绍OTA升级流程,本地升级程序recovery执行升级的流程及技术细节。      
8 l+ N1 x% _9 I
: j+ p4 s/ U! P" t! l
5 X8 g3 m$ }" g# I9 K* ?" R
% a$ ~7 m( k: n7 v# v$ p- p
- E, F* J2 W3 s( J. F6 q6 g1 v
/ x+ t/ ^: x6 D, j  h
01制作recovery.img
+ M" D/ D( ]. L# L) f
) ^/ C& q- O) m' s) yrecovery相关的源码路径:
+ {# i2 n  I& \  b8 s6 D& K: M) H
" J/ Y9 i8 U! h4 n  J( qbuildroot/output/OK3568-recovery/build/recovery-develop
, a! v& m. m8 s1 T: v1 s; l
+ E# p& c) K3 v0 l( P1 W' D. _' K" g2 M( G1 c- e' J
) K7 ?0 [8 e( {6 H

0 a3 I5 J. I1 R7 ~4 u, H7 d如果有修改过以上目录的源码文件,则需要执行以下操作:
# q7 _0 y) J& d: }3 ?3 s( E
" _& e* |  L4 _. U9 c; Z! D1. forlinx@ubuntu:~/OK3568-linux-source$ source envsetup.sh% }1 g: e, L7 ]& X% s

5 i3 K- t/ ]0 [$ }  ^2 a2. 选择某一平台的 recovery 配置,输入96
5 r3 V( N& X$ y1 ?6 F. J% C( X0 p  h& W2 X. y# @
3. forlinx@ubuntu:~/OK3568-linux-source$ make recovery-dirclean && make recovery  #清除编译产物重新编译; g- V- C) D4 [
8 M3 a5 @- m4 k% S) A) E8 P
4. forlinx@ubuntu:~/OK3568-linux-source$ make rkupdate-dirclean && make rkupdate  #清除编译产物重新编译( R- P6 g" D! T" g3 B  p+ Y

7 G' e8 |6 q6 G. m$ k3 H' I; l9 N. j. O
  j2 P, A1 T9 J1 s# Q, F4 c+ X9 Q/ m6 `

4 `: ?6 e( Z# E' N% V: J2 I如果没有修改过上述目录的源码文件,则直接执行以下操作:
. Y% T2 K- Y4 k% i: w. C6 \. ^9 \6 C. R, f8 k" u/ d3 H
1. forlinx@ubuntu:~/OK3568-linux-source$ ./build.sh recovery  #编译生成recovery.img  n, l, d, {2 Z
2 m5 }* k) g% z6 u7 t9 ^
2. forlinx@ubuntu:~/OK3568-linux-source$ ./mkfirmware.sh- T: R4 I% ?0 ~5 A
# J# ]2 C( `1 i2 R
   #将生成的固件拷贝至 rockdev/目录下5 B: k1 K4 [" q* r8 M# g

! A0 m# ^& Z" X. h* @烧写/OK3568-linux-source/buildroot/output/OK3568-recovery/images/recovery.img文件。0 r# G! Y% s& |! P4 Q

0 x. U: q" e& u7 T+ E7 G
) A- ~/ N( r4 |2 M& `7 h, @& q
" H6 e3 |- I- A* }
6 X! Q+ L! I' m1 J点击设备分区表,勾选9,选择recovery路径,点击执行。
* Q# V5 V  J+ M6 I- K9 G: s
) O) T* Z8 ^6 I3 g3 p- i, J, r9 G6 x  e! W; r2 K8 K
) E9 b5 W# u  G0 A' z" T

: b$ J# P7 f5 e7 K) D; \3 ^: j- D6 G% B! d8 A0 K: h

0 j0 d/ Y2 Z, ^0 A8 y) x$ z* }/ L+ Z% p( y5 I% ~! b- C/ L% i8 `

" V9 B2 K& X2 g* x) d02制作升级镜像: Z. \+ r6 p0 o( w9 [& [5 o
: ?) t+ r( j4 h6 g2 W
如何验证是否升级成功了呢?我们要先对boot.img文件有一个初步了解,boot.img文件存放有设备树和内核,我们只要对设备树或者内核进行适当的修改即可。本例程以更新boot.img文件为例,对设备树进行了适当修改。
0 r0 ^8 ^1 B' E9 ]5 |7 _5 P) X, c5 r* h6 p) z3 |( L% |
修改 /OK3568-linux-source/kernel/arch/ARM64/boot/dts/rockchip/OK3568-C-common.dtsi设备树文件,对forlinx_control节点做如下修改。默认只打开HDMI输出,将MIPI和LVDS输出关闭。- O: B. U. j8 P4 f; V) a+ `& z2 ^

  m: k6 ^) N. z1 U  H( i* J3 Y' H( Y

$ |  b% p1 b4 p: }7 e/ [9 c% S1 n5 t# @, {) f: ^# `3 ~& t
" }4 S9 }' P7 P# h% N1 |( Z

  b& [# a# v" t  e8 w( r$ a2 Q
) T" ~6 c7 y  i3 \  }
! g% E8 s( d9 M8 _  d* b, o
" p. d) F) o' t$ j0 m修改/OK3568-linux-source/tools/linux/Linux_Pack_Firmware/rockdev/package-file文件,根据需求修改该文件,本例程以更新boot.img为例,所以将其他.img文件注释掉。用户可以根据产品更新需求对该文件进行调整。# U6 ~- ]1 x& k+ B, a6 |( D7 o

8 _( l) Q' S! z- }$ ]
3 b% X# i9 `: G; \7 W' G  X9 w1 [4 ]1 I
. i0 \9 B' W$ x* _5 i% _5 b& r  k, ]2 s
7 x! L2 a; `$ g4 O
% j+ R) Y5 ^' d4 h7 \0 N$ g
# `+ x2 t" i! f3 E

7 f& }1 U2 a2 s( Q' U& M本例程以修改设备树显示为例,修改完设备树后,重新编译内核。
2 J$ |) {7 n- g3 ~7 p0 u" p7 t$ n- d+ [$ ~$ c

2 Q" F' A/ s, G4 |4 E! X3 K' D

6 ]0 w/ L  c. `$ n( _. w7 N; ?! S8 W: d* ]4 T& l0 g( C

) L; Z9 M4 T  j! T. |03升级操作
* w* o3 k9 ?1 x& @% v% r8 _
, a6 M) ]8 j4 r0 z& [$ w4 qSD卡或U盘升级
% s( o% l( y- D) ?, q" x9 @, w, S* {: p* I& V5 v
将SD卡或U盘默认挂载到OK3568-C开发板的/run/media目录下。将update.img镜像文件拷贝到OK3568-C开发板的/userdata目录下,重启开发板后系统将检测该目录下的升级包自动升级。
9 W# r" A- S: H$ I) Z, S4 Y
( R$ w' h8 g, A+ l- G" J; k: s; ?
# E) u; |% r  l3 U3 |$ C+ |  g' f6 l$ y( s4 Q( V9 G1 `! E

9 ]8 ?8 i' u$ }% I3 L! @+ Cftp服务器升级' |9 `% _% `8 D+ W! u

$ G  ?* j' R4 ?开发板端执行如下命令,将服务器的升级包文件拷贝到开发板进行升级。
2 e+ |! Q1 O1 r; X+ H# Q9 s& Y& e/ w9 x7 f" R8 \
" j0 z9 P6 Z' K3 P; }
+ A8 g9 `" L4 _+ S
9 u# }. s5 U9 }
2 u2 T/ D9 Q/ M* r. V- n
1 I) L) g" r- I. ~! }6 i, g

+ ], T& H% \+ U  m下载完成以后使用以下命令进行升级:
, d9 w; |9 T$ Y/ K& f8 ^2 l2 `" D% M9 r4 e, N# Q
update ota /userdata/update.img4 R/ A) ?" d# A% e
2 I4 M3 _" y. g5 {; l+ H( @; ]
4 O; _$ G* E6 s
* w3 \/ ?  s% r9 }8 k
+ p: f3 S: J+ }) N" E% ^
升级过程中设备将会进入recovery模式,并进行自动升级,升级成功后会进入到正常normal系统。  r5 I/ j+ G) L& Y

; N% I6 O: m% v5 b  I验证测试结果
' N# w* P1 w. D0 `# V将OK3568-C开发板上电,串口终端按住空格键,会进入uboot选屏界面。
1 r. x& X0 S* W. L' Q+ d9 S3 {+ U. x3 J. W) }

8 }9 P7 m, H4 S2 N烧写默认出厂镜像文件现象:默认是开启HDMI、MIPI和LVDS三个输出。
: k" ?3 _5 |+ R% G0 B
; ^* W2 g# S6 J! v( e8 e' }  y7 w6 Q7 {/ G% _
. D: x$ v: n9 x
* E4 k( x3 g4 ~1 A
4 H) I" F) q  i+ d2 J% X
/ e" S# ]( J, @& c
烧写升级包镜像文件后现象:只有HDMI显示开启,其他的两个输出被关闭。5 v9 ^2 G! a+ x1 s* v6 o# z. e
% ]/ o! R/ d$ ?+ x* F& S

) O, n+ v+ M0 w- A
* u+ L: ?# G8 C7 Q( I9 P& @4 j1 H/ e* B$ X4 Z4 x
0 G/ n6 r) [; J7 R4 H2 a! f& t
注意事项  m: j( w9 {8 h

& a3 h# H' Q. F  U打包update.img固件时需要注意,升级固件可以全分区打包,也可以部分升级,可修改package-file文件,将不要升级的分区去掉,这样可以减少升级包(update.img)的大小。0 Q5 G  p) j! d- y% |2 o: W
  e& F- M/ m, D, w5 q! Z$ o
package-file中recovery.img如果打包进去的话,不会在Recovery模式中升级,为了预防升级recovery.img过程中掉电导致后面其他分区无法正常升级的问题,该分区升级放在normal系统下升级,执行update命令时会先检测update.img升级包中是否有打包recovery.img,若有则升级recovery分区,再进入Recovery模式升级其他分区固件。" f* y8 p2 _( B7 p6 Y: r+ Q3 v
7 w# ]( F9 G: W6 F* t# _
misc分区不建议打包进update.img中,即使有打包进去,在升级程序中加载判断到后也会忽略该分区,即使升级了misc分区,升级成功后recovery程序仍会清空misc分区中所有的命令及参数,从而导致达不到预想的结果。# _5 X1 i8 ~0 k2 u* x/ O* I
" T" a! ~, v( _9 ~
; }: [: O: G& _* K! J9 G# y* |- n
如果将update.img升级包放置在flash中的userdata分区,则需要保证package-file中不包括userdata.img被打包进去,原因是可能会导致文件系统的损坏,升级成功后可能使oem或userdata分区mount不成功。若从SD卡或U盘升级时,可以打包userdata.img,从而对userdata分区进行升级。升级完成后会对userdata分区重新resize操作。
  f" n; r( {( A, l+ e( E

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-27 12:53 , Processed in 0.093750 second(s), 26 queries , Gzip On.

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

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

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