公众号:迅为电子 

-----------------------------------------

 

【北京迅为】iTOP-i.MX6开发板使用手册第四部分固件编译第十四章非设备树Android4.4系统编译_android

 

 

 

第十四章 非设备树 Android4.4 系统编译

设备树简单理解就是描述设备信息(资源)的一棵树,如下图所示。那么本章节编译的 Android4.4 描述设备信息不是采用设备树的形式,而是采用传统的方式描述设备。

 

【北京迅为】iTOP-i.MX6开发板使用手册第四部分固件编译第十四章非设备树Android4.4系统编译_android_02

 

 

 

Android4.4 源码在网盘目录“iTOP-i.MX6Q 开发板\IMX6Q 非设备树内核光盘资料(刻盘)\V2.6 底板\20200703(最新日期)\imx6q android4.4 光盘资料\04 源码_android 4.4 文件系统”下。

本章节是在迅为提供的“搭建好的 Ubuntu12.04 环境。”基础上进行编译的,如果您使用的 Ubuntu 编译环境不是迅为提供的,请参考第十三章节进行搭建或者自行百度。

14.1 整体编译 Android4.4

本节介绍如何将 Android 4.4 源码整体编译,即将 uboot,kernel,Android 镜像一次性全部编译出来。

注意的问题编译 Android 系统必须保证给 Ubuntu 系统提供 4G 以上内存。这里“提供 4G 以上内存”的意思,不仅仅是指在 VMware Workstations 虚拟机中设置分配 4G 内存。例如,用户在编译的时候,PC 机的内存一共是 6G,在虚拟机中设置分配 4G 内存,但是在 Windows 系统下,开着 QQ,杀毒软件,音乐播放器,浏览器等等,这样在 Windows 下占用的内存就快 2G 了,那么虚拟机会自动调整到只占用 2G,甚至不到 2G 的内存,这样就有可能没法编译通过。

正确的分配内存方法是,首先给虚拟机分配 4G 以上内存,然后在 Windows 下关掉尽量多的不必要的应用,关掉尽量多应用的后台程序。

1 输入以下命令查看 java 的版本,如果显示版本是 1.6 版本则设置 jdk 版本成功,如果设置失败请参考第十 三章 13.2.3 章节安装 jdk ,java -version

 

 

 

2 Android4.4 压缩包要先在 windows 下解压,解压之后得到单独的压缩包

iTOP-iMX6_android4.4.2_20200703.tar.gz,如下图所示:

 

 

【北京迅为】iTOP-i.MX6开发板使用手册第四部分固件编译第十四章非设备树Android4.4系统编译_android_03

 

 

3 将账户切换为 root 用户,将“iTOP-iMX6_android4.4.2_20200703.tar.gz”压缩包(使用最新日期的 压缩包即可)解压到 Ubuntu 下,作者放在了 Ubuntu 的/home/topeet/imx6 目录下,

 

4 使用以下命令解压源码,如下图所示:

tar -vxf iTOP-iMX6_android4.4.2_20200703.tar.gz

5 解压之后得到“iTOP-iMX6_android4.4.2”文件夹,

6 如下图所示,使用 ls 命令,可以看到编译脚本“create.sh”。

 

 

【北京迅为】iTOP-i.MX6开发板使用手册第四部分固件编译第十四章非设备树Android4.4系统编译_4G_04

 

 

create.sh_imx6q 是编译 ITOP-IMX6Q(工业级 1G+8G)和 TOP-IMX6Q(商业级 2G+16G)的脚本,

create.sh_imx6dl 是编译 ITOP-IMX6D(商业级 1G+8G)的脚本。

我们在编译之前要根据自己手里核心板的型号选择对应的编译脚本,然后覆盖掉编译脚本 create.sh,如下表所示:

 

 

【北京迅为】iTOP-i.MX6开发板使用手册第四部分固件编译第十四章非设备树Android4.4系统编译_4G_05

 

 

 

7 ITOP-IMX6Q(商业级 2G+16G) 整体编译 Android4.4

8 ITOP-IMX6D(商业级 1G+8G) 整体编译 Android4.4

9 ITOP-IMX6Q(工业级 1G+8G) 整体编译 Android4.4

10 编译完成之后,

 

 

11 输入以下命令进入镜像目录,使用 ls 命令,可以看到生成了“u-boot.bin”,“boot.img”,“system.img”, “recovery.img”等镜像文件,cd out/target/product/topeet_6dq

ls

 

14.2 单独编译 uboot

1 进入源码解压得到的“/iTOP-iMX6_android4.4.2/bootable/bootloader/uboot-imx/”目录下,如下图所示,可以看到脚本“build_uboot.sh”。

2 请大家工具自己手里的核心板型号,输入编译命令,如下表所示,一种颜色的代码代表一条命令:

 

【北京迅为】iTOP-i.MX6开发板使用手册第四部分固件编译第十四章非设备树Android4.4系统编译_4G_06

 

 

 

 

 

 

 

 

3 ITOP-IMX6Q(商业级 2G+16G)单独编译 uboot,

4 ITOP-IMX6D(商业级 1G+8G)单独编译 uboot,

5 ITOP-IMX6Q(工业级 1G+8G)单独编译 uboot,

6 编译完成,如下图所示,生成了“u-boot.bin”文件,就是 uboot 的镜像。

 

14.3 单独编译 Android4.4 内核

1 如果我们只需要单独编译 Android4.4 kernel,则进入源码解压的 iTOP-iMX6_android4.4.2/kernel_imx

目录下,

2 不区分核心板的型号,全部使用以下命令开始编译内核 。

./build_android_kernel.sh

3 如下图所示,开始编译。

4 如下图所示,编译完成。

 

【北京迅为】iTOP-i.MX6开发板使用手册第四部分固件编译第十四章非设备树Android4.4系统编译_4G_07

 

 

 

5 如下图所示,在“iTOP-iMX6_android4.4.2/kernel_imx/arch/arm/boot”目录下生成 uImage,即是内核镜像。

6 但是 iMX6 的内核烧写文件比较特殊,需要再次经过打包压缩,所以还需要重新运行整体编译 android 4.4的脚本,才能生成“boot.img”,android 编译一次之后,后面编译就非常快了。整体编译 android 4.4

请参考 14.1 章节整体编译 Android4.4。

 

 

14.4 单独编译 Linux 内核

编译出来的 Linux 内核镜像适用于 QT,最小文件系统,

Ubuntu12.04,Debian,Yocto 系统,和 Android4.4

公用一套源码。

1 如果我们需要单独编译 Linux 系统用的内核镜像,则进入源码“iTOP-iMX6_android4.4.2/kernel_imx”

目录下,

2 使用以下命令,开始编译内核,如下图所示:

./build_qt_kernel.sh

3 开始编译,

4 编译完成,

5 如下图所示,在“iTOP-iMX6_android4.4.2/kernel_imx/arch/arm/boot”目录下生成 uImage,即是内核镜像。

 

【北京迅为】iTOP-i.MX6开发板使用手册第四部分固件编译第十四章非设备树Android4.4系统编译_android_08