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

Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 孤久厌闹 于 2020-4-23 14:54 编辑 9 ^; Z8 g. H: Q4 n3 b1 v' @
6 U/ [" N9 v* o7 k* v

5.3.1 Android 源码整体编译-基于迅为-IMX6开发板系列
2 |$ Z$ }6 l$ ?& b+ p& P$ W. F$ d, ^本节介绍如何将 Android 源码如何整体编译,即将 uboot,kernel,Android 镜像一次/ {3 U* U' D8 E! L
性全部编译出来。2 r- S5 h' j: k. h& n. {
注意:编译 Android 系统必须保证给 Ubuntu 系统提供 4G 以上内存。这里“提供 4G 以3 s  \6 M, k1 Y1 N5 C  {+ D5 k3 _+ k
上内存”的意思,不仅仅是指在 VMware Workstations 虚拟机中设置分配 4G 内存。例如,
( O+ ]" [# o" w4 _( v用户在编译的时候,PC 机的内存一共是 6G,在虚拟机中设置分配 4G 内存,但是在4 l9 Q( r/ j1 y) Z4 N  P
Windows 系统下,开着 QQ,杀毒软件,音乐播放器,浏览器等等,这样在 Windows 下占- s0 ^% T5 L5 Z
用的内存就快 2G 了,那么虚拟机会自动调整到只占用 2G,甚至不到 2G 的内存,这样就有; a8 p4 B* O5 a; l1 \( |
可能没法编译通过。! O2 \6 t6 V' C. o+ G; H
正确的分配内存方法是,首先给虚拟机分配 4G 以上内存,然后在 Windows 下关掉尽量
, H) O9 o5 s, Y" F' D多的不必要的应用,关掉尽量多应用的后台程序。" f3 g$ L# _$ j2 l
当然,如果用户的 PC 是 8G 或者 16G 内存,随意就成。3 C: {/ ~! F' r. B6 q2 V
Android 源码在光盘目录“04_源码_Android4.4 文件系统”下,压缩包先在 windows& |6 }5 W! s2 H- ]4 s
下解压,解压之后的到单独的压缩包“iTOP-iMX6_android4.4.2_20160904.tar.gz”。
8 Q- O# m* h5 P6 F% u$ [将“iTOP-iMX6_android4.4.2_20160904.tar.gz”压缩包解压到 Ubuntu 下(作者在5 W! U1 \3 H* I( {# K/ Y
/home 目录下新建了 imx6 目录,将源码拷贝和解压到 imx6 目录下)。注意:这里的解压命
6 |2 z3 X$ S/ ~# ~' d7 O' B令,包括后面的解压命令中,压缩包的日期可能有点不一样,用户要根据实际情况调整。
" N# M* G' p- \

使用解压命令“tar -vxf iTOP-iMX6_android4.4.2_20160904.tar.gz”解压源码,如下/ a/ E2 z( H; ]6 Y. ^& ?7 M
图所示。. l+ ~' R9 w9 I/ u( I% ~; H# S
解压之后得到“iTOP-iMX6_android4.4.2”文件夹,如下图所示。
, C, g9 g% b& C; j1 v, l
) v- M! L6 ?, Q7 a4 O使用命令“cd iTOP-iMX6_android4.4.2”,进入“iTOP-iMX6_android4.4.2”目录,
) `2 ~# l, c6 Q$ M; ~" o如下图所示。
  t+ q7 Z9 O! ^ $ I) s4 f0 ^# Z
如下图所示,使用 ls 命令,可以看到编译脚本“create.sh”。$ w* v7 l3 j2 U' z% |
. x; q. U5 N1 O: w! \0 c
运行脚本“./create.sh”,可以编译出适用于商业级核心板的 uboot,kernel,以及, @# s5 }/ t2 C3 |, y/ B' @+ V
Android 文件系统,如下图所示。( p% {. }2 f9 W. h2 P" Q

3 [1 N5 {5 y+ F5 O 注意!如果想编译出适用于工业级核心板的 uboot,kernel,以及 Android 文件系统,
5 _1 i8 i" w) N: A! _需要在编译时增加参数“1GDDR”,即:“./create.sh 1GDDR”,如下图所示。(1、要支持9 L: u8 S! a+ Z$ e9 F% ?, e2 v0 D
工业级核心板,源码版本要求为 20180706 及其之后日期版本。2、下面截图与上述路径不
( ^4 o4 u' q4 S* ?3 [4 x同,大家不用考虑,只需知道编译适用于工业级核心板源码时,需要添加参数即可。其他步骤& n1 w$ J% x( J# ?6 O- \
完全相同。)" ?: q- p* \/ \1 H8 y% Q$ W# k

" s( @" `+ ]+ k如下图所示,开始编译。
1 Z" T: Y9 g$ @- d  z # _8 P2 k7 q/ q; W8 {" M4 N1 z
编译完成,如下图所示。
) ?3 v! v  N5 h7 J2 f1 y) p 8 B6 x) e/ V; N, v0 b
编译完成之后,使用命令“cd out/target/product/topeet_6dq”进入镜像目录,使用' l4 m) [" Q$ q
ls 命令,可以看到生成了“u-boot.bin”,“boot.img”,“system.img”,
4 J4 L9 C# O" t' T) E“recovery.img”等镜像文件。$ b" A# ?' _2 ^: g4 t

/ M3 D( L; }: Q 5.3.2 单独编译" Y6 u. l% L# ]* _& v+ I& h3 C
上一小节介绍了 Android 的整体编译,本节介绍单独编译 uboot 和 kernel。
; |, i* T9 I0 c7 P5.3.2.1 单独编译 uboot
9 c' p* Z) `1 d) S0 H1 R3 F/ X3 q& e进入源码解压得到的“iTOP-iMX6_android4.4.2/bootable/bootloader/uboot-imx”
% U+ r9 w6 \: o" z9 |$ y  G' }目录,如下图所示,可以看到脚本“build_uboot.sh”。
3 q0 r1 x/ f4 t/ m  ]5 K+ P' W
' O: {* u4 k5 H* r5 Y" |, @ 如果没有执行过“5.3.1 Android 源码整体编译”小节,在运行单独编译脚本前,可以对4 _7 Y2 M* g+ D% Q* D5 Y5 i: i9 }* I
编译文件进行配置。, R$ x8 ?% \* w- z
①:适用于商业级核心板:9 u, ?9 e! q7 X
进入到“board/freescale/mx6q_topeet/”目录下,. Y. S  R5 P+ v! ~1 @  W; q
cp flash_header.S_2G flash_header.S% V2 ?* A& U) D
进入到“include/configs”目录下,
& g. j+ _8 \8 d7 P3 Dcp mx6q_topeet.h_2G mx6q_topeet.h. h5 S1 ?' ^* K7 W+ h
②:适用于工业级核心板:
" o: M9 k; c: k* R7 ^进入到“board/freescale/mx6q_topeet/”目录下,% b. e  F1 x6 {
cp flash_header.S_1G flash_header.S) @) p$ Z5 c* d. l3 T) o
进入到“include/configs”目录下,+ x. g, h7 _9 x+ y8 m
cp mx6q_topeet.h_1G mx6q_topeet.h4 o# C* |. C1 ~. D; @3 \0 ]
配置完成后,运行脚本“build_uboot.sh”开始单独编译 uboot。如下图所示。
" Y: N( j% }, [/ _6 M: o
2 ~4 y1 T: X1 d9 o& X如下图所示,编译完成。; l) ]5 M  b8 W" ?* G3 T

0 k& _4 |+ B* m0 \& j) C如下图所示,生成了“u-boot.bin”文件,就是 uboot 的镜像。iTOP-iMX6 开发板所有) L3 s  q3 e9 O, v# A0 U9 m2 s) X, h/ o
的系统通用一套 uboot 源码和镜像。
: U* V8 ~9 `8 O
4 G6 z7 G, P/ u! h$ @5.3.2.2 单独编译 kernel
- l2 E1 E1 X( K5 _" w单独编译 kernel,则进入源码解压的到的“iTOP-iMX6_android4.4.2/kernel_imx”目: s4 \5 W3 s3 d6 L
录,如下图所示。$ l9 Q, V9 e0 ^+ ^7 Q5 ^6 W
7 s1 n" m+ `+ |
如下图所示,使用命令“./build_android_kernel.sh ”,开始编译内核。
/ y: P+ A+ |, o8 r) R' I. R
2 m% S- T9 O2 }: v( J 如下图所示,开始编译。- X0 [* z; i1 t6 v& e* D7 P% K
& W! z' h' _3 T0 C
如下图所示,编译完成。% J# z1 y0 p$ E* N6 ]% P2 _
; C2 P0 Y* r" ^1 E4 C1 e
如下图所示,在“iTOP-iMX6_android4.4.2/kernel_imx/arch/ARM/boot”目录下生成! a/ c8 @5 w0 ?$ f0 X
uImage,即是内核镜像。但是 iMX6 的内核烧写文件比较特殊,需要再次经过打包压缩,所
# A, G( u) g! W* m( C以还需要重新运行整体编译 android 的脚本“create.sh”,才能生成“boot.img”,5 d/ O! S% L6 ~" u" D* C
android 编译一次之后,后面编译就非常快了。
# d" J& U, M  i6 }$ c( K8 z
. M9 ^! Y$ g1 Q 更多内容关注迅为电子6 r6 g; K7 X0 O
# O$ a" H4 b( ~$ O+ k$ D
  • TA的每日心情

    2019-11-19 15:55
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-4-23 16:19 | 只看该作者
    谢谢你的非设备树源码资料分享,我学习到很多这方面的知识,还有吗?

    该用户从未签到

    3#
    发表于 2020-4-26 17:14 | 只看该作者
    xue xi xue xi
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-25 23:05 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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