前言:
在接下来的时间里将更新一个专栏:嵌入式系统设计。在这个专栏里将会介绍基于iTOP-4412 Cortex A9开发板的嵌入式系统设计,从入门到实践可以无障碍的学习。欢迎大家关注收藏学习!!!!
文章嵌入式系统设计(一):虚拟机、Ubuntu的安装以及SSH 软件的安装使用:里面详细介绍了SSH软件的安装和ssh 软件在主机和虚拟机之间传文件。
文章嵌入式系统设计(二): 虚拟机和主机之间共享文件夹:里面详细介绍了部分用户无法正常使用 ssh 软件在主机和虚拟机之间传文件,虚拟机和主机之间采用共享文件夹的方式传递文件。
文章嵌入式系统设计(三):Vim编辑器的学习:里面详解介绍了Vim编辑器的安装以及对相关使用命令的介绍。
文章嵌入式系统设计(四):iTOP-4412裸机开发环境搭建(详细介绍DNW 驱动安装):里面详细介绍了iTOP-4412裸机开发环境的搭建以及详细介绍了DNW驱动的安装。
文章嵌入式系统设计(五):详细介绍win8/win10下安装 PL2303 驱动以及android_ADB驱动:里面详细介绍win8/win10下安装 PL2303 驱动以及android_ADB驱动。
文章嵌入式系统设计(六): iTOP-4412 开发板镜像的烧写(包含OTG 接口烧写方式和TF卡烧写方式):里面详细介绍了OTG 接口烧写方式和TF卡烧写方式。
Android4.0.3 镜像的编译(包含uboot的编译和linux内核的编译)
无论什么文件系统都需要和 linux 内核以及 uboot 对应,所以先介绍Android4.0.3 文件系统对应的 uboot 以及 kernel 编译,再介绍Android4.0.3 文件系统的编译。
1 uboot 的编译
1.1 源码目录
1.2 编译器
如下图所示,编译器是“arm 交叉编译器”下的“arm-2009q3.tar.bz2”,如果使用的是搭建好的环境,确保编译器环境变量,如下图所示。
打开环境变量配置文件命令:“vim .bashrc
”,
修改完之后更新环境变量命令:“source .bashrc
”。
1.3 参数配置
编译 uboot 的脚本是源码文件夹中的“build_uboot.sh”,在编译的时候需要向脚本传参数,根据核心板的不同,脚本执行参数如下表所示。
硬件分类 | 脚本执行参数 |
---|---|
核心板 SCP 1G 内存 | SCP_1GDDR |
核心板 SCP 2G 内存 | SCP_2GDDR |
核心板 POP 1G 内存 | POP_1GDDR |
核心板 POP 2G 内存 | POP_2GDDR |
1.4 编译生成 uboot 镜像举例
这里以 SCP 1G 核心板为例编译 uboot 镜像。
将目录下“CodeSign4SecureBoot_POP”、“CodeSign4SecureBoot_SCP”以及“iTop4412_uboot_xxx.tar.gz”拷贝到 Ubuntu 系统下,然后将“iTop4412_uboot_xxx.tar.gz”解压,得到“iTop4412_uboot”文件夹,如下图所示。
进入“iTop4412_uboot”文件夹,使用编译脚本“build_uboot.sh”编译 uboot,这里需要编译的是“SCP 1G 核心板”的 uboot 镜像,那么编译命令是
“./build_uboot.sh SCP_1GDDR
”
输入编译命令,如下图所示。这里一定先确定核心板是哪种类型,然后将对应的参数传到脚本。
如下图所示,编译中。
如下图所示,脚本执行完成,在“iTop4412_uboot”文件夹下生成了
“u-boot-iTOP-4412.bin”文件。生成的文件“u-boot-iTOP-4412.bin”文件就是 SCP 1G内存核心板对应的 uboot 镜像文件。
2 Linux 内核的编译
2.1 源码目录
Linux 内核源码uboot 和 kernel目录下,如下图所示。
2.2 编译器
内核的编译器和 uboot 的编译器一样。
2.3 参数配置
内核的编译是组合式配置文件,基本的配置文件名是“config_for_android_YY_elite
”,YY 表示用下表所示的参数替代。
硬件分类 | 配置文件 |
---|---|
核心板 SCP 1G 或者 2G 内存 | config_for_android_scp_elite |
核心板 POP 1G 内存 | config_for_android_pop_elite |
核心板 POP 2G 内存 | config_for_android_pop2G_elite |
2.4 编译生成内核镜像举例
这里以 SCP 1G 核心板为例编译 zImage 内核镜像,那么配置文件为
“config_for_android_scp_elite
”。
将目录下的压缩包“iTop4412_Kernel_3.0_xxx.tar.gz
”拷贝到 Ubuntu,然后解压,得到文件夹“iTop4412_Kernel_3.0
”,如下图所示。
进入文件夹“iTop4412_Kernel_3.0 ”,使用命令
“cp config_for_android_scp_elite .config
”覆盖自带的配置文件,如下图所示。
然后使用编译命令“make zImage
”,如下图所示。
编译中,如下图所示。
编译完成,如下图所示。
文件夹“iTop4412_Kernel_3.0 ”下的“arch”–>“arm”–>“boot”会生成镜像文件
“zImage”,这个 zImage 镜像可以给 SCP 1G 和 SCP 2G 的核心板使用,如下图所示。
3 Android4.0.3 的编译
3.1 源码目录
Android4.0.3 文件系统的源码,如下图所示。
3.2 编译器
Android4.0.3 的编译器是 gcc 4.4.7 版本(包括其他所有版本的 Android 编译器都是相同的),如下图所示,在控制台使用命令“gcc -v”,可以查看到 gcc 的版本。
3.3 参数配置
无参数配置。所有种类核心板对应的 Android4.0.3 都使用同一套源码,同一种编译方法。编译脚本是“build_android.sh
”。
3.4 编译生成 Android4.0.3 镜像
将目录下压缩包“iTop4412_ICS_git_xxx.tar.gz
”拷贝到 Ubuntu 系统中,解压压缩包,得到文件夹“iTop4412_ICS_git
”。这里需要注意的是,Android 源码文件夹“iTop4412_ICS_git
”和内核源码文件夹“iTop4412_Kernel_3.0
”需要放到同一目录下,如下图所示。
进入“iTop4412_ICS_git”目录,使用命令“./build_android.sh”运行编译脚本,编译Android4.0.3,如下图所示。
开始编译,如下图所示。
编译比较耗费时间,第一次编译会花费 60 分钟以上。
编译完成后在文件夹“iTop4412_ICS”–>“out”–>“target”–>“product–>
“smdk4x12”中生成 Android4.0.3 镜像文件“ranmdisk-uboot.img”和“system.img”,如下图所示。
如果想要支持 wifi,在编译好内核之后,还需要在内核目录中,执行编译模块的命令“make modules
”,再执行编译 Android4.0.3 文件系统的脚本。
有用的话各位老铁来个三连击!!!
有用的话各位老铁来个三连击!!!
有用的话各位老铁来个三连击!!!
来源:oschina
链接:https://my.oschina.net/u/4381686/blog/4296729