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

源码编译 | RK3568开发板快速上手

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Heaven_1 于 2022-9-19 10:41 编辑
& G* B, W! S+ f* j  I* q' m
+ N1 q1 q: ~- h* z+ _- }# ]. n  {5 a2 j% E$ c9 I! y. H' K0 w9 m

/ Z+ X" D* _! V9 A( a: o8 B+ z5 E8 s, c
1
6 v3 i- }+ J8 _$ b$ K$ c$ m& f+ J; ]! C4 L
准备源码& ^% }+ b! ^4 R7 C" G. a
6 `. O/ [: ]5 q1 B; C- N, o, g
1. 创建工作目录3 i6 a6 e% Z  o  Z

" Y2 Q  H: N4 `1 ^; c$mkdir -p ~/rk3568
1 Y$ X3 H# c, g9 I
: q2 t/ G5 l0 n& {& G2. 拷贝源码
" T, e% d7 A& `1 {) v" v" w- q
0 \! x9 d" v' k将用户资料中的源码文件OK3568-linux-source.tar.bz2.a*拷贝到虚拟机~/rk3568目录。! `7 |, U  X! H  W
6 R; a. u5 i+ U5 n' }  f7 b9 K1 A
) i+ `3 s, ?. l! `8 }/ d
[backcolor=rgba(18, 18, 18, 0.5)]​# z0 _3 t- ~, N! v9 N  E

& Q8 f1 J: f% B* g# ]
编辑切换为居中3 g' {$ v' y( F
添加图片注释,不超过 140 字(可选)4 g- X$ T& I' p8 }% x5 ]1 x
拷贝文件的方式有很多,笔者使用的是共享文件夹方式。" _; S3 t1 y. n) l3 w; k
【注】OK3568源码使用分段压缩,每段最大4G,这样方便拷贝,因此有些存储器单文件最大支持4G。: g- ]' Z  D, }& K( r- {1 V+ z
  I8 i: S- H: s$ R7 |7 X: W
3. 解压源码; D0 u8 N0 C) H6 s' N
3 U0 ~0 m+ d8 o1 [. }. ^0 v& f
$cat OK3568-linux-source.tar.bz2.a* >OK3568-linux-source.tar.bz2
" f/ v/ M) I' ~$ `+ t2 C1 A1 ~
1 T3 K: e& V7 Y: R$tar -xvf OK3568-linux-source.tar.bz2
, I3 z$ b, Z. ^% W6 |% n6 w1 U, H耐心等待完成即可,解压时间有点久。. P' }& u! f& M, l6 {  x
4. 进入源码# e) a, S% w$ p5 s) A) N) O/ H
1 i+ ?( P" T3 m' |' L& a
$cd ~/rk3568/OK3568-linux-source
& F: e% {/ j' s9 U# C$ I9 t, v, J/ o7 Y8 @9 n% F
目录结构
! T/ @& |% n) c0 `6 O
! d$ r3 r, x5 U# r添加图片注释,不超过 140 字(可选)2 P6 c* H, t' n8 `
2
) H$ ^$ M. E0 |1 B0 R4 w# q) y$ a- u( E! n  T4 v: L- Z
编译SDK
7 ?4 }( l/ t; [# d/ g1. 编译前配置
7 d) y) m( M2 N( p( [- }  q
; C% L& q( a9 F. E( ?在device/rockchip/ok3568/目录下,有不同板型的配置文件,选择配置文件:
$ V' z: |4 V; _  ~; n- s" s$ w7 Q
9 t* ^+ V8 ]. b$./build.shBoardConfig-ok3568.mk  
  R2 `7 ?  o7 W" }/ \相关配置介绍:
2 S) F4 H# o7 E8 }5 ^# [6 A. M. ^! G添加图片注释,不超过 140 字(可选)+ b2 M+ O1 S$ D3 X: F1 ?
2.编译
# P" I$ {+ f; Z# R( @' Q
- H# R- X0 Y9 u6 ~( s编译u-boot' G; W9 I# _4 h+ Q# n5 f0 V* w

/ H( H3 H# }; i9 _$./build.shuboot
3 C: p# z& L& e5 W8 F1 u6 ^1 H2 d1 n: Q
添加图片注释,不超过 140 字(可选)+ `0 _. k2 u: z+ b! }

& o. [. W1 W5 l* M! R4 ~) s  U
" V' v$ ~- s6 T! Q( z$ O; I$ h+ P/ ]$ ?- ~6 \4 q" o

7 s0 |3 n4 N, y% _. N7 w8 R- |' e! t$ F# x: c) z, w; v

4 v+ V. R5 }0 t  V! K9 _3 |7 X添加图片注释,不超过 140 字(可选): P$ b% x9 W. q' E0 F
7 i' k! w9 O+ L* I
编译kernel
. _" p; |$ A) @6 j, a% {/ O/ L( H# n; m5 T! A, o+ R
$./build.shkernel
/ P0 I* q/ x7 o
# k0 K5 L  L+ v9 P! ^" s- D
7 p# H* O: f3 G/ l6 x8 a' ]& Z添加图片注释,不超过 140 字(可选)
2 u9 E, B+ z9 r0 |4 ~) t# G5 L0 q  n/ }6 {5 c6 R
+ M7 e+ o& n* Z( }' Z
添加图片注释,不超过 140 字(可选)
' L- J8 E# J7 g$ {3 |1 H) O* [- N6 G! m. f: `8 U/ `; S- k0 j
【注】编译一段时间后会弹出下图界面,需要选择,提取图中信息,VCCIO4和VCCIO6选择1800000其余选择3300000,使用上下方向按键选择选项,按回车确认选择即可。, Y% \' `0 Z; O7 s3 E
2 P0 J& {* l0 s2 [
" |, t8 d# Z) R6 s
添加图片注释,不超过 140 字(可选)
" _8 Q, B& ]" M- V  E- l. m3 W4 H: w' Y  i7 x' D4 n. J  e6 ^' ?1 j
编译recovery4 r( [# a3 `0 ?5 ?

, ^4 |+ m* |5 r0 [% h# r8 ?$./build.shrecovery
3 e" `7 r4 O) s! _
, i1 Y9 z9 H5 T3 G/ a编译Buildroot根文件系统
% ^$ N& \3 l' \! v6 L8 R9 `& H* B
$./build.shbuildroot% ~, A3 w; h: r9 Y# X! Z

* `7 D; u2 f. q6 M
: B8 l; }) \7 C) D# o添加图片注释,不超过 140 字(可选)6 m$ h# ]4 c" b0 W4 Y

; \+ Z/ e; J8 v+ j7 L( _* j制作文件系统的时间会比较久,请耐心等待编译完成。1 s% H( {0 Q$ F3 T. r
3 n5 f/ `. H" F
【注1】确保作为普通用户编译Buildroot根文件系统,避免不必要的错误;
9 b+ _# u# Z7 @
1 a  f! t  v2 b7 r$ u【注2】如果不想编译文件系统,也可直接从已有的镜像中解压后,将其拷贝到rockdev目录下。
! j4 r; z& d6 [7 ]
# N3 _9 p3 \# d
1 Q/ @& q# F3 C( ?) \' w, ?. X0 W
+ v1 e; X1 [5 a; F6 D& z2 }$ ]
; ~% j0 c3 ^8 h* B: G1 [3. 打包固件
5 F% ~& p; s3 k, ]: G7 F6 h4 v4 h* G/ L- x: c' `4 ?
更新各部分镜像链接到rockdev/目录:
9 s3 g, R& R& g( q+ r  @; M" L. ~0 W, j4 d6 @
$./mkfirmware.sh
0 ^4 k% s6 C" j& [, U- ]' Y4 N5 |6 p4 p2 |* Z# o. @. q
打包固件,生成的完整固件会保存到rockdev/目录。
( o+ |( h  y- Y3 Y: {4 F4 Z- d3 L+ ~2 h4 k
$./build.shupdateimg
- g" ~* I5 W6 u  O2 E3 K) K6 k
6 H+ s# `( Z7 D& i- x, g2 d9 O  r[PS]全自动编译: X. T2 l: p6 E

$ e/ D& F/ i8 I全自动编译会执行上述编译、打包操作,生成完整固件。, l/ J' p  d& T; O: G* v  r

+ @2 [( _9 N6 @$./build.sh
; f. B( b# q; _! Z, r8 i
" h1 k4 A; s" h' n3 f3 @, ^' J5 @
37 n  H2 j" ?1 u! D" E* g, j

% n$ i4 t% {; N分区说明
0 ^8 Y5 Z$ g% T3 g: e2 C$ k; x* p7 r, X- w$ u' T( Z5 ^, Q. M# M
1. parameter 分区表; j4 s. L# S7 Y4 ~
: c3 ~* i3 U  R! P" O
parameter.txt文件中包含了固件的分区信息,以parameter-buildroot.txt为例:
" b5 k# }) P1 ~! m9 _8 w% V* i6 ]# i* v0 G7 p% v" G3 H6 N' Z
路径:$ q" D3 }# ?6 i: @
- H" o( p) G( \- G. A5 n
device/rockchip/ok3568/parameter-buildroot-fit.txt
6 q0 x3 x+ x/ t' H- s/ O0 n" R# e8 S
添加图片注释,不超过 140 字(可选)
2 }/ G: m+ |6 B% ^* N# }2 D- c$ A$ f$ P" K6 H: C& w
CMDLINE属性是我们关注的地方,以uboot为例,0x00002000@0x00004000(uboot)中0x00004000为uboot分区的起始位置,0x00002000为分区的大小,以此类推。/ u/ `) D7 T$ R- i9 i
1 J' b& g0 P0 X
2. package-file, l4 _# b' i! p! T# p/ S5 O' W

+ L! P9 O6 ?4 O. U: mpackage-file文件用于打包固件时确定需要的分区镜像和镜像路径,同时它需要与parameter.txt文件保持一致。* r: [- P9 U( K$ R
路径:
8 Q: W) ?3 g3 [" f3 d+ k$ I! o% @
tools/linux/Linux_Pack_Firmware/rockdev/rk356x-package-file
2 y6 I; x! E* K9 o; w' F6 d2 D: L+ H8 I1 [& x+ G: ^) i
#NAME        Relative path5 [+ }6 ]( k0 b* |& Y* E9 g

/ y$ \2 `* f; }* v7 X#5 i; w* Y" m/ S3 _  R. g: u" d

' d* [. s& ~$ i#HWDEF             HWDEF8 N* m  w$ c; }4 k( q

$ q: c+ n) v/ wpackage-filepackage-file
" w+ z( e1 [' R  n8 ]; R* U6 |1 @7 q5 h4 G& \% {2 b7 Y
bootloader  Image/MiniLoaderAll.bin
! o+ \. p/ \( L: ^3 O& k
2 g: y3 Q# S8 L6 i1 gparameter   Image/parameter.txt( X1 J5 D+ R6 _  T3 l7 I$ e( o: u

! e6 {0 y" O7 h. |- V#trust          Image/trust.img
( L7 c- E. x  Z' V! m3 J
" X& q$ X8 }' n( u5 R" ]uboot          Image/uboot.img! R4 \- B6 P0 v" l! t8 X8 w) X6 `
! @6 p1 o+ }% i
misc             Image/misc.img
& ~) W) i6 f/ t) s7 @
- K  z- e! i8 n% \4 `#resource    Image/resource.img
4 B: z! O  M: \4 Y' i. f5 q+ Q+ K0 u; x7 @
#kernel        Image/kernel.img
7 \( _, q. |9 y, [9 m& V+ m6 t/ B
; p1 D5 e4 p" N7 vboot            Image/boot.img0 T; C: Q9 B1 p0 }! h' f
! Y2 ]3 Q5 n3 c) c! I6 j
recovery      Image/recovery.img
* ~- s  _6 L# u% C# j" j2 N, f: G, @
rootfs          Image/rootfs.img0 K7 q, T& n! ]$ b* S: g% |

- f" D* R# S& u% [oem             Image/oem.img1 e" h0 D% |. Z- n! c

3 |/ P* n( M8 L* x7 f$ X/ y; juserdata      Image/userdata.img
5 g: F- @0 D! A: i1 ?5 v
0 ?) p1 d/ p- E- u#要写入backup分区的文件就是自身(update.img): r7 v: p* U' G  [. o

( B4 A0 Q& W7 d#SELF 是关键字,表示升级文件(update.img)自身: V# p  n% v9 v! Z$ ^* |! d( |
7 R9 t5 d" w' c1 R- C' l, g6 B
#在生成升级文件时,不加入SELF文件的内容,但在头部信息中有记录
& e( y% g9 u+ k+ B
1 m! z+ f1 v! [# b#在解包升级文件时,不解包SELF文件的内容。4 E! `& L$ q* u6 G

$ `+ e6 L. f, I& U! o  v9 C
, Y/ a/ o) C6 Bbackup        RESERVED
6 g7 U# R# g  _) r0 T6 T
$ k- Q& q0 S3 s& |9 R. F' ~#update-script   update-script
1 ?& m+ B0 `) w6 U) Y7 i; A2 z6 h6 ~# C, q/ F, Q7 o  k
#recover-script   recover-script5 Z# C4 F+ x3 o( w
6 B3 n& v, F% m* a# u3 [! p
4
8 s9 g9 w2 H% W$ b$ d. C- q% \. u
* ]# X. c9 F0 ]; D1 M( @1 j镜像制作
& J! B, n! D/ f5 U4 I; Z( X8 C7 }" O# B- t. K+ ?! F% \" Z
编译源码可直接得到镜像,但是编译时间太长,有些部分不需要再次编译,只需要从已有的镜像中解包,然后再和新编译的部分组合打包即可,下面是制作方法。
( S& Y. m7 U1 K) g
& {/ |( u' p% V% Y  @0 h; l7 ^; \
1. 工具安装
6 N7 t6 [3 L/ K9 R, W9 w$ ~, p5 Z: L! |0 T" s9 a* }2 o
下载工具包:' d+ t3 ^. e) u3 r
  ~6 I; B- v3 m. E
$git clone
4 k& J7 G; {; D4 _+ v
/ R2 e( t1 t9 F6 }& m$ z- Rhttps://github.com/TeeFirefly/rk2918_tools.git 6 Z0 {% H# ^$ X# W/ m& ^- h0 @, @
' }/ w, a2 v' b* ~6 u' z9 R8 [

' ]0 X& J& h; X6 Z进入工具包目录:! Z3 W- y; P" U" y$ \

0 d: X! k" t& [3 V7 H$cd rk2918_tools
6 ]; t8 ^. j3 t/ W& L6 ?1 l) k0 g) x% B
编译:; p8 R/ q- q) Z7 J# R& R  s, }
7 Q2 R$ V1 e; N0 E' @5 r% e6 Z
$make# a/ b5 h( S* R
: I% [" ?9 f- q2 O6 I" T6 ]# @  n
将可执行文件拷贝到用户二进制目录:/ H: T+ ?. y) `1 g. \0 u
& G- Y% m: t2 O; i+ n
$sudo cp afptool img_unpack img_maker mkkrnlimg/usr/local/bin
- {0 o" g% d  s" f, Z$ M( Y+ \( {3 T  t/ j% z6 @
2. 解包/ u; b* m( x6 U) C
- Y; X& T6 p$ W1 w8 d# m. l7 [
将update.img拷贝到Ubuntu中,然后使用命令解包:- S, U) \& b8 ]1 m3 r5 i

$ _. u$ D; J+ Q+ X$img_unpack update.img img  o- R/ q7 H/ L, @6 ?

& r. ~$ A6 V! R8 p! S/ A8 W  ^4 }4 t
解包到img目录,img目录会自动生成,解析成功之后,img目录下会生成loader.img和update.img。/ w0 `- z! f& B+ I' I
% p# F2 q/ P+ ]- Y2 J+ d
* h+ }/ @) c8 L
/ ?+ j6 L( q; U6 x3 \6 p' B$ j
接下来进入到img目录,使用afptool-unpack 解压:
3 e3 j8 Z" d' T- s
, q' i3 P3 C- K4 j8 H$afptool -unpack update.img update% a: H8 ?, T1 L7 {& {

4 G/ T; N( p, `解压到update目录5 Y1 ?8 M; `1 c4 h! N6 N
3 g! M, B4 h! ~. M3 \
打开update目录,里面有很多img文件。' f+ b! I2 p6 U( p0 t5 J

' d. w- {: ]* w( t+ M将需要的文件复制到rockdev目录下。
8 V) p: j; u6 _; |5 V1 ]. m0 L3 O3 c& x0 E& ]; _
3. 合成update.img' ^* @3 j: U) R9 u6 B" [% J) w# V* S3 P

& q( J0 y' q' L3 V  r然后源码目录以下命令即可:# t: I1 a/ R5 O
) X0 Z( L& [/ w8 }) D$ e0 |) i/ {2 u
$./build.shupdateimg
: l* s( i4 U7 C& ^+ K4 g. j9 n7 x
[backcolor=rgba(18, 18, 18, 0.5)]​$ S7 E6 G& r- x6 a
0 r- b( W  K  `9 Y
编辑切换为居中
$ t7 ^3 `, B$ d: }" u1 p2 h3 c6 N$ Q  K  T

该用户从未签到

2#
发表于 2022-9-19 10:44 | 只看该作者
" X# a; C4 ?. M; t; G' w9 }
图文并茂,流程很清晰
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-23 17:42 , Processed in 0.156250 second(s), 24 queries , Gzip On.

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

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

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