EDA365电子论坛网

标题: Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码 [打印本页]

作者: 孤久厌闹    时间: 2020-4-23 14:52
标题: Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码
本帖最后由 孤久厌闹 于 2020-4-23 14:54 编辑
4 \4 Y3 N: V" [9 Y) ~8 O- d; K. I' c: z) D

5.3.1 Android 源码整体编译-基于迅为-IMX6开发板系列
. ?9 W9 O' p3 H& P" k5 I本节介绍如何将 Android 源码如何整体编译,即将 uboot,kernel,Android 镜像一次: s& O" `& ?& h% ~' r
性全部编译出来。5 v  f& y: f8 j
注意:编译 Android 系统必须保证给 Ubuntu 系统提供 4G 以上内存。这里“提供 4G 以
6 N8 Q  u. x9 \& w, l上内存”的意思,不仅仅是指在 VMware Workstations 虚拟机中设置分配 4G 内存。例如,
. y6 N. s3 M, |. u1 m8 K3 X用户在编译的时候,PC 机的内存一共是 6G,在虚拟机中设置分配 4G 内存,但是在1 U! y+ E5 f' T, O& O' I
Windows 系统下,开着 QQ,杀毒软件,音乐播放器,浏览器等等,这样在 Windows 下占
4 R4 o3 Z' ]- _# `+ L4 H3 |用的内存就快 2G 了,那么虚拟机会自动调整到只占用 2G,甚至不到 2G 的内存,这样就有
: t3 U9 W6 y' Z$ K0 J可能没法编译通过。
1 ~! ~- ^  X, b8 d2 d5 ]正确的分配内存方法是,首先给虚拟机分配 4G 以上内存,然后在 Windows 下关掉尽量' {- }* T2 g5 N4 o8 c  {& W$ V
多的不必要的应用,关掉尽量多应用的后台程序。  t) x* r6 g  L0 e5 F* Y' f# K& L
当然,如果用户的 PC 是 8G 或者 16G 内存,随意就成。
0 w9 K% N8 X( ~Android 源码在光盘目录“04_源码_Android4.4 文件系统”下,压缩包先在 windows
' s& y5 p2 E5 F2 G, T7 {2 h% D3 [- P下解压,解压之后的到单独的压缩包“iTOP-iMX6_android4.4.2_20160904.tar.gz”。! a0 G! J1 u& @4 R9 A+ p  U
将“iTOP-iMX6_android4.4.2_20160904.tar.gz”压缩包解压到 Ubuntu 下(作者在: L% ~5 m% P% _8 ]! V0 r
/home 目录下新建了 imx6 目录,将源码拷贝和解压到 imx6 目录下)。注意:这里的解压命9 d' [) U3 w; L" l+ B9 R9 V
令,包括后面的解压命令中,压缩包的日期可能有点不一样,用户要根据实际情况调整。% W3 F- |& R8 R. f" D. q( }; Y

使用解压命令“tar -vxf iTOP-iMX6_android4.4.2_20160904.tar.gz”解压源码,如下$ U* m) A" R$ E; U9 j; y$ `# U
图所示。  r, e8 R) n  @
解压之后得到“iTOP-iMX6_android4.4.2”文件夹,如下图所示。+ Z/ P6 {2 s/ C, |

; k% m( w/ o7 J/ k$ O3 `: t& k( R" J使用命令“cd iTOP-iMX6_android4.4.2”,进入“iTOP-iMX6_android4.4.2”目录,9 N4 f- B0 ]/ t# v5 m# c6 t$ d
如下图所示。
, w: y+ V: S- N! N3 a
% p8 V. P0 L1 Q+ ~& {2 H- ~4 Q 如下图所示,使用 ls 命令,可以看到编译脚本“create.sh”。
' W8 L$ ]) k/ y" ]/ K1 a: p / |/ W# d5 A( B# {# L+ H
运行脚本“./create.sh”,可以编译出适用于商业级核心板的 uboot,kernel,以及
) y+ \5 Y4 V! \3 \Android 文件系统,如下图所示。  ]8 P- D- [0 j

& n' z* k+ E5 K: i( u- \ 注意!如果想编译出适用于工业级核心板的 uboot,kernel,以及 Android 文件系统,& U" b; W7 r6 G8 R  @( G" n  I9 C: A  ?
需要在编译时增加参数“1GDDR”,即:“./create.sh 1GDDR”,如下图所示。(1、要支持
* t: x1 v, z$ _( G! d工业级核心板,源码版本要求为 20180706 及其之后日期版本。2、下面截图与上述路径不
( Y1 V1 L, H8 y- m同,大家不用考虑,只需知道编译适用于工业级核心板源码时,需要添加参数即可。其他步骤9 B9 A; F9 v7 I. {( I
完全相同。)5 Y1 {) s7 M; P0 v

) X2 X  Y. [3 u0 l9 _2 R2 U! V如下图所示,开始编译。5 b2 Y- q- A7 i
# `$ Y/ @$ Q8 e2 L
编译完成,如下图所示。
' m/ e: ]+ ?3 v  p) D # |7 N& g6 ^, G$ s8 d- }
编译完成之后,使用命令“cd out/target/product/topeet_6dq”进入镜像目录,使用7 s0 K/ f/ _9 E
ls 命令,可以看到生成了“u-boot.bin”,“boot.img”,“system.img”,
: i  M) H' b/ }8 O/ ]4 c“recovery.img”等镜像文件。& ~' z& w* S. g6 d% Q& s3 \
9 K! w+ {( r" g# d7 C/ d- L
5.3.2 单独编译$ B/ b" v, ^$ w1 o9 }
上一小节介绍了 Android 的整体编译,本节介绍单独编译 uboot 和 kernel。
# R( a0 Q9 k8 y5.3.2.1 单独编译 uboot
. o+ x  }7 P0 _, v9 a/ ?2 e进入源码解压得到的“iTOP-iMX6_android4.4.2/bootable/bootloader/uboot-imx”6 L* @& v, w9 U! v, v! f
目录,如下图所示,可以看到脚本“build_uboot.sh”。  Y" G  G4 P/ U" ~. H3 }
" {/ W, M2 c5 J
如果没有执行过“5.3.1 Android 源码整体编译”小节,在运行单独编译脚本前,可以对
- U8 I  [( }2 U1 s" G; Y编译文件进行配置。
9 m) C- P4 C  k①:适用于商业级核心板:
  j% e  V1 k) Q4 a4 s5 w" Z1 L8 K进入到“board/freescale/mx6q_topeet/”目录下,
, r# n2 q( k* Ycp flash_header.S_2G flash_header.S
) L3 J8 T' P- w' ?进入到“include/configs”目录下,% s8 t" Y6 X6 m( ~: @1 R
cp mx6q_topeet.h_2G mx6q_topeet.h* B9 d9 m. N' X: _# r/ V: \
②:适用于工业级核心板:$ S! b$ v# q% q+ M! d) R1 m
进入到“board/freescale/mx6q_topeet/”目录下,
6 ~+ M+ M; g- T4 D7 d( J& \cp flash_header.S_1G flash_header.S
+ u  Q$ r3 {* `) Q进入到“include/configs”目录下,
0 J( d8 V; I, n) ?% X8 acp mx6q_topeet.h_1G mx6q_topeet.h
5 R# Q8 Y; H0 @- e4 T5 l2 q配置完成后,运行脚本“build_uboot.sh”开始单独编译 uboot。如下图所示。
- v# F3 T  y# k7 N ; n3 {) t7 u. X5 d8 J8 M* ^$ u
如下图所示,编译完成。1 Y0 f3 W1 g, k; J
8 O% Q8 p" X0 E
如下图所示,生成了“u-boot.bin”文件,就是 uboot 的镜像。iTOP-iMX6 开发板所有4 s8 z, F1 A3 J, V: W7 W
的系统通用一套 uboot 源码和镜像。7 N$ Y1 A' m: z. d

/ J6 p, v9 d2 t$ v% U2 r5.3.2.2 单独编译 kernel- k4 n: S" X; p. _
单独编译 kernel,则进入源码解压的到的“iTOP-iMX6_android4.4.2/kernel_imx”目
: a! A7 A. t, j% R. j2 L+ O录,如下图所示。
0 U1 I; s/ D9 R
3 @4 H/ S2 S$ W  v9 V 如下图所示,使用命令“./build_android_kernel.sh ”,开始编译内核。
2 ?( o; x. L# M1 y/ x $ V6 }6 [8 X+ f& Y& c
如下图所示,开始编译。
3 Q( L9 Z0 I; {! R0 m$ R; c4 i1 C
9 Q: W, w! g0 i/ L: K 如下图所示,编译完成。
1 j1 X/ r# C! V2 r) N- ]# a 2 w6 e6 ?4 `0 A! b1 c
如下图所示,在“iTOP-iMX6_android4.4.2/kernel_imx/arch/arm/boot”目录下生成
# g4 e4 ~( V" W) W9 i% DuImage,即是内核镜像。但是 iMX6 的内核烧写文件比较特殊,需要再次经过打包压缩,所
" {, V# ]9 ?  q. J) ?7 i  D, |( a以还需要重新运行整体编译 android 的脚本“create.sh”,才能生成“boot.img”,
. g" ?8 c7 ^  j0 [. ]0 I5 h/ Randroid 编译一次之后,后面编译就非常快了。
. F  J7 |) R) y9 z $ ]6 i, a' A  P$ w
更多内容关注迅为电子
3 D0 {6 R7 x  Q2 }0 V# h' z3 v! g! w

作者: 道法自然    时间: 2020-4-23 16:19
谢谢你的非设备树源码资料分享,我学习到很多这方面的知识,还有吗?
作者: getall    时间: 2020-4-26 17:14
xue xi xue xi




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2