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

5.3.1 Android 源码整体编译-基于迅为-IMX6开发板系列
本节介绍如何将 Android 源码如何整体编译,即将 uboot,kernel,Android 镜像一次
性全部编译出来。
注意:编译 Android 系统必须保证给 Ubuntu 系统提供 4G 以上内存。这里“提供 4G 以
上内存”的意思,不仅仅是指在 VMware Workstations 虚拟机中设置分配 4G 内存。例如,
用户在编译的时候,PC 机的内存一共是 6G,在虚拟机中设置分配 4G 内存,但是在
Windows 系统下,开着 QQ,杀毒软件,音乐播放器,浏览器等等,这样在 Windows 下占
用的内存就快 2G 了,那么虚拟机会自动调整到只占用 2G,甚至不到 2G 的内存,这样就有
可能没法编译通过。
正确的分配内存方法是,首先给虚拟机分配 4G 以上内存,然后在 Windows 下关掉尽量
多的不必要的应用,关掉尽量多应用的后台程序。
当然,如果用户的 PC 是 8G 或者 16G 内存,随意就成。
Android 源码在光盘目录“04_源码_Android4.4 文件系统”下,压缩包先在 windows
下解压,解压之后的到单独的压缩包“iTOP-iMX6_android4.4.2_20160904.tar.gz”。
将“iTOP-iMX6_android4.4.2_20160904.tar.gz”压缩包解压到 Ubuntu 下(作者在
/home 目录下新建了 imx6 目录,将源码拷贝和解压到 imx6 目录下)。注意:这里的解压命
令,包括后面的解压命令中,压缩包的日期可能有点不一样,用户要根据实际情况调整。
<ignore_js_op>Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码 
使用解压命令“tar -vxf iTOP-iMX6_android4.4.2_20160904.tar.gz”解压源码,如下
图所示。
<ignore_js_op>Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码 
解压之后得到“iTOP-iMX6_android4.4.2”文件夹,如下图所示。
<ignore_js_op>Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码 
使用命令“cd iTOP-iMX6_android4.4.2”,进入“iTOP-iMX6_android4.4.2”目录,
如下图所示。
<ignore_js_op>Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码 
如下图所示,使用 ls 命令,可以看到编译脚本“create.sh”。
<ignore_js_op>Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码 
运行脚本“./create.sh”,可以编译出适用于商业级核心板的 uboot,kernel,以及
Android 文件系统,如下图所示。
<ignore_js_op>Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码 
注意!如果想编译出适用于工业级核心板的 uboot,kernel,以及 Android 文件系统,
需要在编译时增加参数“1GDDR”,即:“./create.sh 1GDDR”,如下图所示。(1、要支持
工业级核心板,源码版本要求为 20180706 及其之后日期版本。2、下面截图与上述路径不
同,大家不用考虑,只需知道编译适用于工业级核心板源码时,需要添加参数即可。其他步骤
完全相同。)
<ignore_js_op>Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码 
如下图所示,开始编译。
<ignore_js_op>Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码 
编译完成,如下图所示。
<ignore_js_op>Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码 
编译完成之后,使用命令“cd out/target/product/topeet_6dq”进入镜像目录,使用
ls 命令,可以看到生成了“u-boot.bin”,“boot.img”,“system.img”,
“recovery.img”等镜像文件。
<ignore_js_op>Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码 
5.3.2 单独编译
上一小节介绍了 Android 的整体编译,本节介绍单独编译 uboot 和 kernel。
5.3.2.1 单独编译 uboot
进入源码解压得到的“iTOP-iMX6_android4.4.2/bootable/bootloader/uboot-imx”
目录,如下图所示,可以看到脚本“build_uboot.sh”。
<ignore_js_op>Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码 
如果没有执行过“5.3.1 Android 源码整体编译”小节,在运行单独编译脚本前,可以对
编译文件进行配置。
①:适用于商业级核心板:
进入到“board/freescale/mx6q_topeet/”目录下,
cp flash_header.S_2G flash_header.S
进入到“include/configs”目录下,
cp mx6q_topeet.h_2G mx6q_topeet.h
②:适用于工业级核心板:
进入到“board/freescale/mx6q_topeet/”目录下,
cp flash_header.S_1G flash_header.S
进入到“include/configs”目录下,
cp mx6q_topeet.h_1G mx6q_topeet.h
配置完成后,运行脚本“build_uboot.sh”开始单独编译 uboot。如下图所示。
<ignore_js_op>Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码 
如下图所示,编译完成。
<ignore_js_op>Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码 
如下图所示,生成了“u-boot.bin”文件,就是 uboot 的镜像。iTOP-iMX6 开发板所有
的系统通用一套 uboot 源码和镜像。
<ignore_js_op>Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码 
5.3.2.2 单独编译 kernel
单独编译 kernel,则进入源码解压的到的“iTOP-iMX6_android4.4.2/kernel_imx”目
录,如下图所示。
<ignore_js_op>Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码 
如下图所示,使用命令“./build_android_kernel.sh ”,开始编译内核。
<ignore_js_op>Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码 
如下图所示,开始编译。
<ignore_js_op>Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码 
如下图所示,编译完成。
<ignore_js_op>Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码 
如下图所示,在“iTOP-iMX6_android4.4.2/kernel_imx/arch/arm/boot”目录下生成
uImage,即是内核镜像。但是 iMX6 的内核烧写文件比较特殊,需要再次经过打包压缩,所
以还需要重新运行整体编译 android 的脚本“create.sh”,才能生成“boot.img”,
android 编译一次之后,后面编译就非常快了。
<ignore_js_op>Android4.4.2 源码编译-iMX6Q/D核心板-非设备树源码 
更多内容关注迅为电子

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

上一篇:log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).


下一篇:吊打面试官:Android中高级面试题 -- 终局之战