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

3步教你升级RK3568开发板OTA

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Heaven_1 于 2023-4-10 11:26 编辑 - [  K: ~: N3 {7 n

5 q0 C: l4 Y# j本文将通过飞凌嵌入式OK3568-C开发板介绍OTA升级流程,本地升级程序recovery执行升级的流程及技术细节。      . N* m0 I0 Q* b. k

  M: H/ B* F- I0 q# w, h: a) c' w5 i  O+ u7 @) ?9 I
, P9 _6 ]( ?" g0 H4 b

7 K" \* M( X! a) U5 a# b* J' Q2 K( T
01制作recovery.img1 f) U7 x, Z; L1 L
+ I/ X" p  R* Z, }
recovery相关的源码路径:
8 z/ @  L, U" B1 q* d: \: S. ^" }+ A& m- V3 S
buildroot/output/OK3568-recovery/build/recovery-develop7 Q6 O. c6 Q4 x  {

: q+ N! T' E* T4 O% _
8 h( \0 I) F- f, l# b) f; R( J  l9 _- L0 o0 g( b
- ]$ y6 }+ ^7 G2 m5 z! ~
如果有修改过以上目录的源码文件,则需要执行以下操作:5 f, Z. z' m" k) \5 I# k

7 K! w$ N1 N( u! w. _! E( i; P1. forlinx@ubuntu:~/OK3568-linux-source$ source envsetup.sh/ A! O% E- r0 x: c! ~/ w

& F' ^: c- d, u7 |2. 选择某一平台的 recovery 配置,输入96# |' |7 x1 z7 E! z3 e: S
* ~+ |# u7 c6 ~8 `/ K8 Q
3. forlinx@ubuntu:~/OK3568-linux-source$ make recovery-dirclean && make recovery  #清除编译产物重新编译
; f0 Y3 V8 k: Y) y8 j) a  k9 L2 X! e# G/ [
4. forlinx@ubuntu:~/OK3568-linux-source$ make rkupdate-dirclean && make rkupdate  #清除编译产物重新编译
+ ?4 `2 s4 Y0 Y4 d3 g2 d; v
1 U: |. `3 m: y$ p, U0 q* L; q7 d  [( `, Z* v* B
( c! r( T2 h5 U* T$ U  F& V& k
1 E$ w$ B+ Z# [' b+ Z
如果没有修改过上述目录的源码文件,则直接执行以下操作:( V; ?+ v/ n9 O; k

; B( p1 a# R0 {/ g" Q1. forlinx@ubuntu:~/OK3568-linux-source$ ./build.sh recovery  #编译生成recovery.img, j: y9 @0 z$ k2 k, B

) y) u9 _6 c9 T2. forlinx@ubuntu:~/OK3568-linux-source$ ./mkfirmware.sh! y0 T- V) H: ?3 F) c% q

4 w. B" }$ M" k# K. f   #将生成的固件拷贝至 rockdev/目录下
7 o; c- i8 x, H, ~1 a9 p" L$ j8 X! e+ }
烧写/OK3568-linux-source/buildroot/output/OK3568-recovery/images/recovery.img文件。; E+ O) g: U0 ?; Z7 V0 n
! Y# T1 `9 @6 z- c, I+ i

# x, B7 F& A- x/ f9 \' y9 B0 l4 a; `9 y4 A

+ G  u! H7 ~: n3 w8 E! p, t点击设备分区表,勾选9,选择recovery路径,点击执行。5 [9 s/ ]8 x1 y) q

8 v: ]* F" a! C
: B. C: D8 ]9 M: U1 R; A% N" [) D, ~; n# P4 j; \
" N) ]4 \+ |) W. h; r
: e1 A& J, z$ z7 Q% B) }
1 D, c9 ]5 Y$ [& S/ K

7 p9 K7 x0 c  [' M# o+ a) a; x2 d# N$ o& K* f- F
02制作升级镜像6 a# R/ o3 Y1 B" J9 M( [0 r
) ]3 v# d, f' f& l$ R( K
如何验证是否升级成功了呢?我们要先对boot.img文件有一个初步了解,boot.img文件存放有设备树和内核,我们只要对设备树或者内核进行适当的修改即可。本例程以更新boot.img文件为例,对设备树进行了适当修改。! u& k2 R# z# G( p# {

  B9 N+ I: }1 A4 i4 u; a修改 /OK3568-linux-source/kernel/arch/ARM64/boot/dts/rockchip/OK3568-C-common.dtsi设备树文件,对forlinx_control节点做如下修改。默认只打开HDMI输出,将MIPI和LVDS输出关闭。
& d6 {" S$ t; u+ N1 W1 `/ A( I+ {+ n) V) K1 N3 u5 w+ d' ~" a8 L

- Q- M! w: g3 d9 D3 O4 K. K
/ i7 ]3 P  C0 K* f1 o
; S3 V$ K$ T8 N7 n& o3 p/ s3 b+ }  E3 w. G; z7 j+ [$ c4 ^

6 l8 F7 e8 c( \# s, _# {( m8 c& D; A5 O7 A! G( y3 ]7 m
( j4 L) t  L- Z. y
+ i" f" D( A, O0 |+ N6 C+ P
修改/OK3568-linux-source/tools/linux/Linux_Pack_Firmware/rockdev/package-file文件,根据需求修改该文件,本例程以更新boot.img为例,所以将其他.img文件注释掉。用户可以根据产品更新需求对该文件进行调整。
& |+ C5 }8 f8 O! ]% s0 t: a6 M
- |3 E( x( R5 A3 R8 P: x4 f8 L, Q
& \0 N2 Z. A. m/ x& w8 |1 D
& _9 h3 I! o9 B2 P$ N6 V. o
8 ~5 }, M; [3 K: b+ }5 f  S
( j# k9 m' W2 y' u3 H7 V
- J2 p! N7 ^  }. B

0 ~, Q4 A# P/ t3 V% U! E. i本例程以修改设备树显示为例,修改完设备树后,重新编译内核。
9 J8 |+ P$ ^. _2 L9 Y
6 g9 d- m, I  B
% w" A* i) N0 v5 E
9 Q4 h# \6 r( J  Q' f! P
) a# O6 H& [! q# D$ L# O5 Z

5 C% g; e- X$ n: k4 D/ I03升级操作
5 [% b7 E% X' T# M& G, J5 P- H3 X; U8 Q# |. `3 @6 X3 O. W; k% P
SD卡或U盘升级# k* b3 K% ~! k6 [

; x9 z2 Z" r8 S  F将SD卡或U盘默认挂载到OK3568-C开发板的/run/media目录下。将update.img镜像文件拷贝到OK3568-C开发板的/userdata目录下,重启开发板后系统将检测该目录下的升级包自动升级。' [9 O; |% M3 J! C/ X: S7 y$ E
7 ~4 \0 g0 \6 S6 o5 j9 ^

- Q7 E0 y: x6 w$ w2 h
$ X$ V. Z5 b& F1 F. {, b8 c
! o( f( M! a5 x9 F, J1 e# Rftp服务器升级
/ K' [$ s" g( W
# z: f, s3 G3 W7 u8 P开发板端执行如下命令,将服务器的升级包文件拷贝到开发板进行升级。8 D) q1 X7 q( V8 o% K
0 A$ z. o+ S+ ?+ f/ P" S
) h* x( m( w1 @: g. N

! A# e2 }1 w1 S" [2 e, S8 n0 s- Z: A* ]  U6 K* X8 m. G
% n' k! V9 ]& [; p0 V; Z& _

+ E+ a3 U: @6 P- g! ^# z& ]
/ s8 P$ `- _9 _  l0 l: V2 v7 ?下载完成以后使用以下命令进行升级:
- U$ x3 e5 p$ U2 V- c! f2 ~
2 x1 A3 [& V1 W( Vupdate ota /userdata/update.img
9 d9 p, R7 o% a* ^: L3 ?3 m& i8 ?  G
3 Q9 n0 o* o, L2 r# R/ k! e

+ x# ^* Z% A% a1 G& f- h  \1 E3 k3 f- z  {; D
升级过程中设备将会进入recovery模式,并进行自动升级,升级成功后会进入到正常normal系统。
7 V1 E6 W6 l2 L+ h; `1 \+ i( w$ _9 e% \& t- {- \8 V; L
验证测试结果
0 [& ^6 k, }. w6 F' Y/ V% h将OK3568-C开发板上电,串口终端按住空格键,会进入uboot选屏界面。* @/ A4 U$ m7 m; C& n: g7 \
0 C) o' _0 s( M9 W" U* Z3 \

- U$ w8 Q  h9 r/ l烧写默认出厂镜像文件现象:默认是开启HDMI、MIPI和LVDS三个输出。
  [" O$ r) v( p; {+ Z+ J
: g$ j0 R& G" Q6 [1 H' E' A) u$ G# {

3 D$ o) I. J; g/ J0 {/ e& C5 a: k) Y* @+ x; F( |, h( v$ v+ V

' I$ y* w0 V; V+ K1 C/ I' m! A, V" a
烧写升级包镜像文件后现象:只有HDMI显示开启,其他的两个输出被关闭。5 \4 X* N( K0 |* j; F

8 h' u$ G8 c7 P8 g/ ^1 w8 z6 D) |0 L! }' i) Q/ h7 D* `
! C: n- H- l- G
0 J& r; a3 M) [- F
6 N4 \* r- `- M
注意事项" U( m3 c& K7 ~; [9 N5 B9 r, m. G

) N+ L0 ?: g" I. s* z+ I打包update.img固件时需要注意,升级固件可以全分区打包,也可以部分升级,可修改package-file文件,将不要升级的分区去掉,这样可以减少升级包(update.img)的大小。: |" ^4 Z; X. [2 n. P1 Z# d

" F0 [: r4 W/ spackage-file中recovery.img如果打包进去的话,不会在Recovery模式中升级,为了预防升级recovery.img过程中掉电导致后面其他分区无法正常升级的问题,该分区升级放在normal系统下升级,执行update命令时会先检测update.img升级包中是否有打包recovery.img,若有则升级recovery分区,再进入Recovery模式升级其他分区固件。( _* q3 v) @8 h- b2 I! ]

: U2 B% J9 p/ M7 N6 F) c$ zmisc分区不建议打包进update.img中,即使有打包进去,在升级程序中加载判断到后也会忽略该分区,即使升级了misc分区,升级成功后recovery程序仍会清空misc分区中所有的命令及参数,从而导致达不到预想的结果。0 X, r7 H: y8 y

( e* K* e( s  n7 @4 V/ a  m
" N8 S6 E  @- d如果将update.img升级包放置在flash中的userdata分区,则需要保证package-file中不包括userdata.img被打包进去,原因是可能会导致文件系统的损坏,升级成功后可能使oem或userdata分区mount不成功。若从SD卡或U盘升级时,可以打包userdata.img,从而对userdata分区进行升级。升级完成后会对userdata分区重新resize操作。
, B3 m  B3 S9 D5 k/ Q3 @, R

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-18 10:01 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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