请选择 进入手机版 | 继续访问电脑版
搜索

121

主题

128

帖子

665

积分

网站编辑

Rank: 8Rank: 8

积分
665
发表于 2021-6-5 15:31:47 9380 浏览 0 回复

iTOP-4418开发板Android 4.4系统编译

本帖最后由 翠花儿 于 2021-6-5 15:58 编辑

哔哩哔哩视频链接
https://www.bilibili.com/video/BV1bv411a7Jz?p=3&share_source=copy_web

1 使用搭建好的环境
用户如果使用搭建好的编译环境,在简单的修改环境变量之后,就可以完成编译本章的Android 系统,完成 Qt,最小 linux 系统等的编译 ,打包,Qt/E4.7系统源码。
根据不同的编译需要更新环境变量,这里以 arm-2009q3 编译器为例,介绍如何修改。在 Ubuntu 中进入root用户,命令行中执行命令“cd /root”和“vim .bashrc”,打开环境变量文件“.bashrc”,
在末尾添加以下两行进行配置(默认已经添加好了arm-2009q3 编译器和Android的NDK编译器):
export PATH=$PATH:/usr/local/ndk/android-ndk-r8b
export PATH=$PATH:/usr/local/arm/arm-2009q3/bin
如下图:
保存之后退出,最后输入“source .bashrc”更新一下环境变量,如下图所示::
后面编译中,如果需要那个编译器,就修改一下环境变量即可。
编译 Android 还缺少一个 javap 命令,在 Ubuntu 命令行中,任意目录下,使用命令:
update-alternatives --install "/usr/bin/javap" "javap" "/usr/lib/jvm/jdk1.6.0_43/bin/javap" 1
更新,如下图所示。
执行到前面一步,就可以讲 iTOP-4418 开发板 Android 对应所有源码全部一次编译通过,搭建环境至此完成。
2 配置uboot
Android4.4 源码在光盘目录“iTOP4418光盘资料\04 源码_Android4.4 文件系统”下,注意有连接器和邮票孔版本,选择对应的版本,压缩包先在 windows 下解压,解压之后得到单独的压缩包“android_for_4G_20201016.tar.gz”(日期可能有差异)。
将“android_for_4G_20201016.tar.gz”压缩包解压到 Ubuntu 下,得到“android”文件夹,进入“android”目录,如下图所示。
编译前需要将 uboot 配置文件覆盖一下, 迅为电子的 iTOP-4418 核心板内存有三种型号,最新版的2G核心板使用了镁光DDR,可参考手册“1.1核心板介绍”区分,三种核心板分别是:
                1. 三星 1G DDR3
                2. 三星 2G DDR3
                3. 镁光 2G DDR3
        大家可以通过查看核心板上内存芯片的丝印来确定使用的是哪种型号的内存:
                1. 三星 1G DDR3 内存芯片上的丝印是: K4B4G
                2. 三星 2G DDR3 内存芯片上的丝印是: K4B8G16
                3. 镁光 2G DDR3 内存芯片上的丝印是: 9BC12
        在编译 Uboot 之前, 我们需要按照相应的内存型号配置一下 uboot 的相关文件,下面介绍关于这三种内存的配置:
1. 三星 1G DDR3 内存:
进入“u-boot”目录, 首先使用命令“cp 2ndboot_sdmmc_4418_samsung.bin 2ndboot_sdmmc_4418.bin”拷贝生成“2ndboot_sdmmc_4418.bin”文件, 然后使用命令“cp nsih-1G16b-4418.txt nsih.txt”拷贝生成“nsih.txt”文件。如下图所示
1. 三星 2G DDR3 内存:
进入“u-boot”目录, 首先使用命令“cp 2ndboot_sdmmc_4418_samsung.bin 2ndboot_sdmmc_4418.bin”拷贝生成“2ndboot_sdmmc_4418.bin”文件, 然后使用命令“cp nsih-2G16b-4418.txt nsih.txt”拷贝生成“nsih.txt”文件。如下图所示:
2. 镁光 2G DDR3 内存:
进入“u-boot”目录, 首先使用命令“cp 2ndboot_sdmmc_4418_micron.bin 2ndboot_sdmmc_4418.bin”拷贝生成 “2ndboot_sdmmc_4418.bin”文件 , 然后使 用命令 “cp nsih-2G16b-4418_micron.txt nsih.txt”拷贝生成“nsih.txt”文件。
3 配置kernel
内核需要配置缺省文件,进入解压出来的源码目录 android,然后进入 kernel 目录,使用命令“cp -r config_for_iTOP4418_android_AR8031 .config”配置缺省文件。如果网卡芯片是 RTL8211,则使用“cp -r config_for_iTOP4418_android_RTL8211 .config”,如下图所示。
特别注意,如果用户想使用 menuconfig 配置缺省文件,请先在控制台输入“export
ARCH=arm
”,再使用 menuconfig 工具。否则默认配置的是 x86 平台,如下图所示。
另外,如果是 2G 核心板,则打开 kernel 目录下“vim arch/arm/plat-s5p4418/topeet/include/cfg_mem.h”文件,将下图中“#if 1”改为“#if 0”。“#if 1”对应 1G 内核,“#if 0”对应 2G 内核。
4 Android4.4源码整体编译
内核缺省文件配置之后进入Android 目录,运行一键编译脚本“./build_android.sh”编译安卓,如下图所示。注意:编译 Android 必须保证给 Ubuntu 系统提供 4G 以上内存。这里“提供 4G 以上内存”的意思,不仅仅是指在 VMware Workstations 虚拟机中设置分配 4G 内存。例如,用户在编译的时候,PC 机的内存一共是 6G,在虚拟机中设置分配 4G 内存,但是在 Windows系统下,开着 QQ,杀毒软件,音乐播放器,浏览器等等,这样在 Windows 下占用的内存就快 2G 了,那么虚拟机会自动调整到只占用 3G,甚至不到 3G 的内存,这样就有可能没法编译通过。后面的单独编译 Android 也是需要 4G 以上内存。正确的分配内存方法是,首先给虚拟机分配 4G 以上内存,然后在 Windows 下关掉尽量多的不必要的应用,关掉尽量多应用的后台程序。当然,如果用户的 PC 是 8G 或者 16G 内存,随意就成。
编译完成之后,在 result 目录下,如下图所示。生成了 uboot 文件“u-boot-iTOP-4418.bin”;
kernel 文件“ boot.img” ; Android 文件系统“cache.img”“system.img”“userdata.img”。
如下图所示,编译完成之后,uboot 源码,kernel,Android 以及中间文件(不包括源码压缩包)一共占用 40G 空间,如果编译不通过,用命令“df -l”查看一下硬盘空间够不够。
5 Android4.4源码单独编译
如果用户想要单独编译 uboot,kernel,Android 中的任意一个,可以打开“build_android.sh”编译脚本。进入到脚本最后一行,如下图所示。
如上图所示,红色框中的脚本对应着编译命令。
脚本代码 build_uboot                ——编译 uboot 镜像
脚本代码 build_kernel                ——编译内核镜像
脚本代码 build_module        ——编译内核的 KO 文件
脚本代码 build_android        ——编译 Android 镜像
脚本代码 post_process build_dist                 ——将编译好的镜像拷贝到 result 目录
单独编译 uboot,则如下图所示,将编译 build_kernel,build_module,build_android注释掉,再执行编译脚本“build_android.sh”。
单独编译内核,则如下图所示,将 build_uboot,build_android 注释掉,再执行编译脚
本“./build_android.sh”。
单独编译 Android,则如下图所示,将 build_uboot,build_kernel,build_module 注释掉,再执行编译脚本“build_android.sh”。

本帖子中包含更多资源

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

x
回复

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

登录或注册

官方客服

QQ:2551456065

官方QQ群

195631883

扫一扫关注迅为公众号

群号652692981

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