【北京迅为】iTOP-4412精英版使用手册-第八章 Android 4.4系统编译

iTOP-4412开发板【精英版】搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,兼具快速读取与大容量,纵使海量思考也能及时处理。配备三星S5M8767电源管理。配备Android、Linux+Qt、Ubuntu操作系统,开启学习、研发的全新方式。Exynos4412开发板处理器成功应用于三星GALAXYS3,联想K860,魅族MX2等热门产品当中,并取得巨大成功。功耗控制以及强劲的性能一直为业内称道,超过5000万片的出货量,足以证明其稳定性与可用性。已成为三星官方推广的处理器之一,并承诺长期供货。


第八章 Android 4.4系统编译

Android4.4.4 的内核以及文件系统的源码在网盘“iTOP4412 开发板资料汇总(不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\android_4.4.4 源码以及对应 Kernel 源码”目录下。

需要注意的是,其中“20170803”以及后续新增的目录下的源码编译方法参考本小节,在“20170803”之前的源码编译参考 7.4.2 小节。

另外,由于 eMMC 升级和屏幕升级,如果用户是 2018 年或者之后购买的开发板,或者新购买了金属框 7 寸屏/10.1 寸屏,请直接下载“2018xxx”目录下上传的内核代码和镜像测试,Android 源码和 20170803 通用,编译方法参考 7.4.1 小节。

8.1 搭建编译环境

编译安卓4.4使用Ubuntu16.04,配置方法和Android4.0相同。编译uboot和内核使用的编译器和 编译Android4.0.3 的内核编译器一模一样(使用arm2009-q3),请参照“7.2 搭建环境”。

8.2 编译U-boot

Android4.4.4 对应 uboot 的源码,编译器,参数配置,编译脚本以及编译参数和Android4.0.3 的 uboot 全部一模一样,可参考“7.3编译U-boot”章节。

8.3 编译Linux内核

Android4.4对应的Linux内核在网盘“iTOP4412开发板资料汇总(不含光盘内容)\iTOP-4412开发板系统源码及镜像(其他)\android_4.4.4源码及镜像\xxxx\Android4.4-Source”目录下,在最新日期的文件夹下的“iTop4412- android4.4-kernel_xxxx.tar.gz”压缩包,xxxx 表示日期。

内核的编译器和 Android4.0.3 的内核编译器一模一样(arm-2009q3)。

内核的编译需要对应的配置文件,基本的配置文件名是“config_for_android_XX_YY”,XX,YY 表示用下表所示的参数替代。POP 和 SCP 分别对应核心板的 POP 和 SCP;elite 和 super 分别对应精英版和全能版;no_wifi 参数仅用于精英版,表示不支持 WiFi 模块,如果没有 WiFI 模块,那么就需要配置为 no_wifi。

硬件分类

配置文件

精英版 Android4.4POP 核心板

config_for_android_pop_elite

精英版 Android4.4POP 核心板不支持 WIFI

config_for_android_pop_no_wifi

全能版 Android4.4POP 核心板

config_for_android_pop_super

精英版 Android4.4SCP 核心板

config_for_android_scp_elite

精英版 Android4.4SCP 核心板不支持 WIFI

config_for_android_scp_no_wifi

全能版 Android4.4SCP 核心板

config_for_android_scp_super

如上表所示,如果需要 Android4.4.4 支持 WiFi,则需要配置对应的参数,不支持 WiFi 也需要进行对应配置。

编译生成内核镜像举例

和 Android4.0.3 内核一样,如果需要编译对应核心板的内核,首先使用 cp 命令将对应的配置文件覆盖掉“.config”。

编译过程中可能会报错,请参照“7.4 编译Linux内核”进行解决。

如果用户要使用 5 寸屏幕,先要参考用户手册“7.6 支持 5 寸屏的内核补丁文件”,给内核打补丁,然后使用命令“vim .config”,在文件中搜索关键词“CONFIG_TOUCHSCREEN_GT9XX=y”,在“CONFIG_TOUCHSCREEN_GT9XX=y”之后添加一行“CONFIG_TOPEET_LCD5X0=y”,添加完成之后,如下图所示。如果用户不使用 5 寸屏幕,则可以跳过这一步

最后执行编译命令“make zImage”。

生成内核镜像的目录也是“arch\arm\boot”。

例如:开发板是精英版,POP 核心板,需要支持 WiFi 模块,那么缺省文件就需要配置为“config_for_android_pop_elite”。

开发板是精英版,POP 核心板,不支持 WiFi 模块,那么缺省文件就需要配置为“config_for_android_pop_no_wifi”。

 

8.4 编译Android4.4.4文件系统

编译 Android4.4.4,还缺少一个“javap”命令,使用命令:

update-alternatives --install "/usr/bin/javap" "javap" "/usr/lib/jvm/jdk1.6.0_43/bin/javap" 1

更新一下,如下图所示。

编译 Android4.4 源码的时候,一定要注意内核源码的目录。在和Android 源码目录“iTop4412_KK4.4_git ”的同一级目录下,将内核源码解压。

例如,如下图所示,作者将内核源码和 Android4.4 源码压缩包放到“/home/iTOP- 4412-Android4.4”目录下,解压“iTop4412_KK4.4_git_xxx.tar.gz”和“iTop4412- android4.4-kernel_xxx.tar.gz”,Android 源码解压之后得到“iTop4412_KK4.4_git”和“kernel” 目录。“iTop4412_KK4.4_git” 目录下就是 Android 源码 , “kernel/iTop4412_Kernel_3.0”目录下就是内核源码。

 

另外在编译 Android4.4 之前,必须成功编译 Android4.4 对应的内核。

然后进入 Android4.4.4 源码解压后得到文件夹“iTop4412_KK4.4_git”中,使用命令“./build_android.sh”运行一键编译脚本,开始编译 Android4.4.4。

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

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

当然,如果用户的 PC 是 8G 或者 16G 内存,随意就成。

编译完成之后,在文件夹“iTop4412_KK4.4_git/out/target/product/smdk4x12”中, 生成镜像“system.img”和“ramdisk-uboot.img”。

这里还需要注意的是,Android4.4.4 源码需要占用较大的空间,用户需要确认有足够的空间才能够成功编译。Android4.0.3 编译完成后总共大约占用 18G 的空间,Android4.4.4 编译完成后总共占用大约 36G 的空间。

用户完全按照步骤编译错误,可以使用“df -l”查看一下盘符剩余空间还剩下多少,如果是已使用 100%,则是空间不足。

 

8.5 编译早期Android4.4.4旧源码

注意:本小节,介绍的旧源码指的是“20170803”之前的早期源码。

在网盘目录中“iTOP4412 开发板资料汇总(不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\android_4.4.4 源码以及对应 Kernel 源码”中下载 Android4.4.4 的 文件系统,并通过 github 下载 uboot(Android4.4 的 uboot 源码和 Android4.0.3 完全一样) 和 kernel 的源码(参考附录六)。

编译uboot

Android4.4.4 对应 uboot 的源码,编译器,参数配置,编译脚本以及编译参数和Android4.0.3 的 uboot 全部一模一样。

编译Linux内核

网盘下载 Android4.4.4 对应的源码。在网盘“iTOP4412开发板资料汇总(不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\android_4.4.4 源码及镜像”目录下。

Android4.4.4 对应内核的编译器和 Android4.0.3 的内核编译器一模一样。内核的编译是组合式配置文件,基本的配置文件名是“config_for_android_YY”,YY 表示用下表所示的参数替代。

硬件分类

配置文件

核心板 SCP 1G 或者 2G 内存

config_for_android_scp

WiFi 支持配置:

config_for_android_scp_wifi&Bluetooth

核心板 POP 1G 或者 2G 内存

config_for_android_pop

WiFi 支持配置:

config_for_android_pop_wifi&Bluetooth

 如上表所示,如果需要 Android4.4.4 支持 WiFi,则需要配置对应的参数。

编译生成内核镜像举例:

和 Android4.0.3 内核一样,如果需要编译对应核心板的内核,首先使用 cp 命令将对应的配置文件覆盖掉”.config”,然后在执行编译命令“make zImage”。

生成内核镜像的目录也是“arch”-->“arm”-->“boot”。

编译Android4.4.4 (文件系统部分)

Android4.4.4 源码在网盘“iTOP-4412 开发板系统源码及镜像(其他)\android_4.4.4 源码以及对应 Kernel 源码”目录中下载,编译器和参数配置和 Android4.0.3 一模一样。

更新环境 javap

编译 Android4.4.4,还缺少一个“javap”命令,使用命令:

update-alternatives --install "/usr/bin/javap" "javap" "/usr/lib/jvm/jdk1.6.0_43/bin/javap" 1

更新一下,如下图所示。

 

源码下载

内核的源码也可以在 github 上下载,具体参考使用手册附录 6.2,附录中有迅为Android4.4 对应内核源码 github 下载地址。

使用手册附录中有介绍 repo 下载 Android4.4.4 源码的方法,但是从2016开始,repo 经常性的无法下载和使用。所以最好到迅为百度网盘中下载源码(目录参考使用手册编译章节),选取日期最近的目录下载即可。

网盘中源码包一般是 gz 后缀、7z 或者 rar 后缀。gz 后缀可以直接在 Ubuntu 下解压; 7z 和 rar 后缀都是需要先在 windows 下解压出 gz 后缀压缩包,然后再在 Ubuntu 下解压。

内核以及 Android 源码路径

编译 Android4.4.4 源码的时候,一定要注意内核源码的目录。在和Android 源码目录“iTop4412_KK4.4_git”的同一级目录下,新建一个kernel目录,然后将内核源码放到kernel 目录下,要使用迅为默认的文件名“iTop4412_Kernel_3.0”。

例如:在 Android4.4 的源码目录下,使用命令“ls ../kernel/iTop4412_Kernel_3.0/”,如下图所示,内核的目录才是正确的。

另外在编译 Android4.4 之前,必须成功编译 Android4.4 对应的内核。

然后进入 Android4.4.4 源码解压后得到文件夹“iTop4412_KK4.4”中,使用命令“./build_android.sh”运行一键编译脚本,开始编译 Android4.4.4。注意:编译Android4.4.4 必须保证给 Ubuntu 系统提供 3G 以上内存。这里“提供 3G 以上内存”的意思,不仅仅是指在 VMware Workstations 虚拟机中设置分配 3G 内存。例如,用户在编译的时候,PC 机的内存一共是 4G,在虚拟机中设置分配 3G 内存,但是在 Windows 系统下,开着 QQ,杀毒软件,音乐播放器,浏览器等等,这样在 Windows 下占用的内存就快 2G 了, 那么虚拟机会自动调整到只占用 2G,甚至不到 2G 的内存,这样是没法编译通过的。

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

当然,如果用户的 PC 是 8G 或者 16G 内存,随意就成。

如下图所示,编译完成。在文件夹“iTop4412_KK4.4/out/target/product/smdk4x12”中,生成镜像“system.img”和“ramdisk-uboot.img”。 

 这里还需要注意的是,Android4.4.4 源码需要占用较大的空间,用户需要确认有足够的空间才能够成功编译。Android4.0.3 编译完成后总共大约占用 18G 的空间,Android4.4.4 编译完成后总共占用大约 36G 的空间,如下图。

 用户完全按照步骤编译错误,可以使用“df -l”查看一下盘符剩余空间还剩下多少,如下图所示,如果是已使用 100%,则是空间不足。

 内核源码包是“iTop4412-android4.4-kernel_20180724.tar.gz”,一定要是20180724 结尾的内核压缩包才行,如果用户使用的是老版本,则需要根据补丁文件添加代码。

补丁包是网盘“iTOP4412 开发板资料汇总(不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\android_4.4.4 源码以及对应 Kernel 源码\20180724\Android4.4-Source”目录下的压缩包“patch_elite4x4_lcd5x0.tar.gz”。

拷贝到内核源码目录下(一定要拷贝到内核源码的目录下),如下图所示,使用命令“tar -vxf patch_elite4x4_lcd5x0.tar.gz”解压得到文件夹“patch_elite4x4_lcd5x0”,文件夹中有 5 个补丁文件,1 个脚本文件。

进入解压得到的文件夹“patch_elite4x4_lcd5x0”,使用命令“ chmod 777 script_patch_elite4x4_lcd5.sh”修改脚本权限。

接着使用“./script_patch_elite4x4_lcd5.sh u”命令,到这一步就打完补丁了,如下图所示。

 如果需要返回到更新补丁前的状态,则使用命令“./script_patch_elite4x4_lcd5.sh r”。

用户在“iTop4412-android4.4-kernel_20180724.tar.gz”原始内核的基础上,运行了“./script_patch_elite4x4_lcd5.sh u”N 次,则可以使用命令“./script_patch_elite4x4_lcd5.sh r”同样也是 N 次,则可以返回到打补丁前的状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值