EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 孤久厌闹 于 2020-4-23 14:54 编辑 , w6 {! q3 R* ]
2 D3 Z1 r# b3 n- F
5.3.1 Android 源码整体编译-基于迅为-IMX6开发板系列
% P/ E# Q6 x( O: [ x6 r本节介绍如何将 Android 源码如何整体编译,即将 uboot,kernel,Android 镜像一次
1 B" J+ d8 a1 O+ o* r6 M性全部编译出来。1 [$ D1 p" l3 m( @9 I
注意:编译 Android 系统必须保证给 Ubuntu 系统提供 4G 以上内存。这里“提供 4G 以
! @* j) Q+ U& {1 l2 d1 d/ M上内存”的意思,不仅仅是指在 VMware Workstations 虚拟机中设置分配 4G 内存。例如,
: `: _: C% u% ^' B( {用户在编译的时候,PC 机的内存一共是 6G,在虚拟机中设置分配 4G 内存,但是在, \+ K% ?. B1 }- L. M3 k
Windows 系统下,开着 QQ,杀毒软件,音乐播放器,浏览器等等,这样在 Windows 下占
( n# b, F* j# v* ?9 c* B4 p& C用的内存就快 2G 了,那么虚拟机会自动调整到只占用 2G,甚至不到 2G 的内存,这样就有
. r' h% X" T8 H! v# }. @. v可能没法编译通过。
; `/ c5 p# n* J正确的分配内存方法是,首先给虚拟机分配 4G 以上内存,然后在 Windows 下关掉尽量
& N4 d6 N- |: ] x, v多的不必要的应用,关掉尽量多应用的后台程序。
D8 O3 A$ T& R, d- e u: Q" Q- E当然,如果用户的 PC 是 8G 或者 16G 内存,随意就成。/ b6 |0 _1 L1 M. k9 Q3 ~5 O# a
Android 源码在光盘目录“04_源码_Android4.4 文件系统”下,压缩包先在 windows' c8 b9 q5 A G" b) W. Q
下解压,解压之后的到单独的压缩包“iTOP-iMX6_android4.4.2_20160904.tar.gz”。% h, l/ t% s$ \3 K, i6 |- M
将“iTOP-iMX6_android4.4.2_20160904.tar.gz”压缩包解压到 Ubuntu 下(作者在
3 a: U- H1 O- E/ V" G, L8 Y( q/home 目录下新建了 imx6 目录,将源码拷贝和解压到 imx6 目录下)。注意:这里的解压命
. A5 T2 y) V. ~& D0 { k. u" V令,包括后面的解压命令中,压缩包的日期可能有点不一样,用户要根据实际情况调整。
5 E$ p$ t! _/ p( u8 X# W; j, q
使用解压命令“tar -vxf iTOP-iMX6_android4.4.2_20160904.tar.gz”解压源码,如下8 O9 e! D; J; `. p: k' o$ U
图所示。
- ~5 x3 \9 V/ x) m" B' }% y" ?
解压之后得到“iTOP-iMX6_android4.4.2”文件夹,如下图所示。5 L1 U: r3 I, n$ {) Q4 F
. q+ J5 H: P; A5 a, `; o使用命令“cd iTOP-iMX6_android4.4.2”,进入“iTOP-iMX6_android4.4.2”目录,
# W% A/ i) h% |如下图所示。3 I5 ~% D" Y m- S! z8 q: [
! v4 w# g5 }% v$ T& E* d
如下图所示,使用 ls 命令,可以看到编译脚本“create.sh”。
7 |$ L$ z+ x- _. b0 z- I% f- L
; Q! f) x- N, U# m 运行脚本“./create.sh”,可以编译出适用于商业级核心板的 uboot,kernel,以及
; t, W. m6 K8 q: y: H- fAndroid 文件系统,如下图所示。
4 q' c" [- a6 _1 @' u1 D/ ?
4 g4 @; h+ ]# O6 }0 c' N 注意!如果想编译出适用于工业级核心板的 uboot,kernel,以及 Android 文件系统,
9 A' \2 k: d' p1 b0 a3 P5 ~需要在编译时增加参数“1GDDR”,即:“./create.sh 1GDDR”,如下图所示。(1、要支持% P2 z: l7 I. ], k. ]* t' J8 h
工业级核心板,源码版本要求为 20180706 及其之后日期版本。2、下面截图与上述路径不! K" G8 i2 P0 Z. o% c
同,大家不用考虑,只需知道编译适用于工业级核心板源码时,需要添加参数即可。其他步骤/ W% \, S. O: X: Z
完全相同。)
' Q% g+ c8 e( \* Z+ X7 C
/ [% l, y+ q. [" m6 H2 K) M) l+ G
如下图所示,开始编译。
# {1 X+ A& a/ }* o! M) F! E
- w9 H* O8 q1 u7 u+ f0 u& k
编译完成,如下图所示。8 U& i2 M1 \( x" l/ z/ T8 `- k; g
: m* q* v( U, O% z
编译完成之后,使用命令“cd out/target/product/topeet_6dq”进入镜像目录,使用7 X- R" e3 ]8 G: R
ls 命令,可以看到生成了“u-boot.bin”,“boot.img”,“system.img”,5 J( x# I4 k- d7 T* [) K7 l
“recovery.img”等镜像文件。
( T% r! R9 ]) B& |& L
% x# z7 e( U5 m, z. `' \
5.3.2 单独编译0 l, R% d) q: _- ~: s8 |
上一小节介绍了 Android 的整体编译,本节介绍单独编译 uboot 和 kernel。
) C, {. v. P$ K# @% l$ t, M5.3.2.1 单独编译 uboot
" x2 T0 |9 _' w! }0 }: j: f进入源码解压得到的“iTOP-iMX6_android4.4.2/bootable/bootloader/uboot-imx”4 g2 h) `( J. p* V& _
目录,如下图所示,可以看到脚本“build_uboot.sh”。
, P; Z8 Z* s" {$ [# J6 K# J
( M! u( u3 l+ X6 Y4 u( u) c 如果没有执行过“5.3.1 Android 源码整体编译”小节,在运行单独编译脚本前,可以对4 s4 N) v! v0 i/ y. }
编译文件进行配置。$ {( b/ \9 w9 ?$ I4 W
①:适用于商业级核心板:
* x2 D! {( g( _7 K M进入到“board/freescale/mx6q_topeet/”目录下,9 w1 g# N0 c f1 Q& s7 J2 R
cp flash_header.S_2G flash_header.S$ d, N8 L* x# J+ ]
进入到“include/configs”目录下,5 n# G# ]- W6 d8 Z% O
cp mx6q_topeet.h_2G mx6q_topeet.h6 V5 }$ |1 J+ M! ^5 I3 n9 w% b
②:适用于工业级核心板:
\3 ]. G7 x3 C U进入到“board/freescale/mx6q_topeet/”目录下,
% g3 c/ ^2 R. n! `% W- W' g, f) Kcp flash_header.S_1G flash_header.S
' H+ Z1 e8 A8 \! T进入到“include/configs”目录下,! I! b) p# K; C$ Z7 P& _
cp mx6q_topeet.h_1G mx6q_topeet.h
( ~+ R2 \7 x1 L8 P+ @4 \0 u% G6 e配置完成后,运行脚本“build_uboot.sh”开始单独编译 uboot。如下图所示。
, d2 J6 p1 E1 F9 z5 V
. u: b8 U0 @; P- { [
如下图所示,编译完成。
: V+ Z: |$ A+ F3 o1 Q
5 b9 [& a- |2 A2 ?6 B
如下图所示,生成了“u-boot.bin”文件,就是 uboot 的镜像。iTOP-iMX6 开发板所有
' M# w! d6 [3 H$ P( J的系统通用一套 uboot 源码和镜像。
; X7 K- y# R" A$ g* y/ \" h! [* y7 O
O$ V9 N6 O4 ?% w5.3.2.2 单独编译 kernel& H. r8 L! _: |; M
单独编译 kernel,则进入源码解压的到的“iTOP-iMX6_android4.4.2/kernel_imx”目
, b h! @# |" F+ |录,如下图所示。
/ d0 u8 L2 h% n% O. ~- n6 ]! v: j( ~
- O. m I S+ F' {' d 如下图所示,使用命令“./build_android_kernel.sh ”,开始编译内核。
A. J8 {5 q3 H/ e+ ?
7 {9 e1 a8 y, @3 w
如下图所示,开始编译。6 Q! B* ]: \) ?" F+ [& v
2 g7 w' D% x3 X# ^9 I+ y6 s
如下图所示,编译完成。8 b" I# ?6 Y6 r2 q5 l R8 I" v
6 i2 c) M% G4 u% Q0 K' e' E
如下图所示,在“iTOP-iMX6_android4.4.2/kernel_imx/arch/ARM/boot”目录下生成 x. C N$ T( [0 A- |7 ]
uImage,即是内核镜像。但是 iMX6 的内核烧写文件比较特殊,需要再次经过打包压缩,所
) b+ F% d3 a; n9 {以还需要重新运行整体编译 android 的脚本“create.sh”,才能生成“boot.img”,
6 h) p5 }4 r: n0 s- vandroid 编译一次之后,后面编译就非常快了。
. ~+ g5 t: x1 V. `1 Y
- ^3 l! s7 \) n( |3 z9 r
更多内容关注迅为电子0 s$ c5 U1 U& q* F: p
2 b. p! A- ]* s0 r& J8 R$ b
|