明远智睿MY-IMX6 L3035编译手册

2018年03月15日 10:26    发布者:myzr123
准备源码包(prepare source code pacakge)3.0.35版本代码(3.0.35 version code)u-boot源码(u-boot source code)文件名:u-boot-2009.08--svn*.tar.xz
name of file:u-boot-2009.08--svn*.tar.xz

kernel源码(kernel source code)文件名:linux-3.0.35--svn*.tar.xz
name of file:linux-3.0.35--svn*.tar.xz

交叉编译工具 (cross compifer tool)文件名:gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12.tar.bz2
name of file:gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12.tar.bz2

配置编译环境(configuration of compifer environment)准备源码(prepare source code)准备源码包 (prepare source code package)1)创建工作目录
create working directory
创建 ~/my-imx6 作为工作目录
create ~/my-imx6 as working directory
$ mkdir ~/my-imx6
http://wiki.myzr.com.cn/images/0/0c/Myimx6l3035_build_2.1.1.1.jpg
创建 ~/my-imx6/02_source/imx_3.0.35_4.1.0 作为源码目录
create ~/my-imx6/02_source/imx_3.0.35_4.1.0 as source code directory
$ mkdir ~/my-imx6/02_source/imx_3.0.35_4.1.0 -p
http://wiki.myzr.com.cn/images/b/bf/Myimx6l3035_build_2.1.1.2.jpg
创建 ~/my-imx6/03_tools 作为工具目录
create ~/my-imx6/03_tools as tool directory
$ mkdir ~/my-imx6/03_tools -p
http://wiki.myzr.com.cn/images/4/41/Myimx6l3035_build_2.1.1.3.jpg
2)复制源码包到开发主机中
copy source code package to the development host
这一步骤自己采取相应的方式进行。
do it in this step in your own way。
  提示:这里将网盘中“02_源码”复制到Linux开发主机的“~/my-imx6/02_source/imx_3.0.35_4.1.0”,将网盘中“03_工具/toolchain”复制到Linux开发主机的“~/my-imx6/03_tools”。
tip:this step is to copy “02_source code”from network disk to “~/my-imx6/02_source/imx_3.0.35_4.1.0”in development host,and copy “03_tool/toolchain”to “~/my-imx6/03_tools”。in development host
解压源码包 (decompress source code package)1)解压u-boot源码和内核源码
decompress u-boot source code and kernel source code
$ cd ~/my-imx6/02_source/imx_3.0.35_4.1.0
$ tar xf u-boot-2009.08--svn*.tar.xz
$ tar xf linux-3.0.35--svn*.tar.xz
http://wiki.myzr.com.cn/images/c/c2/Myimx6l3035_build_2.1.2.1.jpg
2)解压交叉编译工具
decompress cross compiler tool
$ cd ~/my-imx6/03_tools/
$ tar jxf gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12.tar.bz2
http://wiki.myzr.com.cn/images/d/d3/Myimx6l3035_build_2.1.2.2.jpg

开发环境配置(development environment configuration)安装需要的包 (install package needed)1)更新源列表
list of updated source
$ sudo apt-get update
http://wiki.myzr.com.cn/images/1/14/Myimx6l3035_build_2.2.1.1.jpg
更新完成后如下图所示:
after update,it will look like below:
http://wiki.myzr.com.cn/images/c/c0/Myimx6l3035_build_2.2.1.2.jpg
2)安装aptitude包管理工具和ia32-libs
install aptitude package management tool and ia32-libs
提示:如果编译主机的Linux是32位的,可以跳过此步骤。
tips:if Linux of compiler host is 32bit,you can skip this step。

[*]安装aptitude包管理工具
install aptitude package management tool
http://wiki.myzr.com.cn/images/9/9a/Myimx6l3035_build_2.2.1.3.jpg
$ sudo apt-get –y install aptitude

[*]使用aptitude安装ia32-libs
install ia32-libs with aptitude
$ sudo aptitude –y install ia32-libs
提示:下图为安装过aptitude和ia32-libs后,再次执行安装命令的截图。
tips:following is the screenshots with re-execution of installation command after installation of aptitude and ia32-libs is finished。
http://wiki.myzr.com.cn/images/e/ef/Myimx6l3035_build_2.2.1.4.jpg
3)安装mkimage工具
install mkimage tool
$ sudo apt-get -y install uboot-mkimage
提示:下图为安装过mkimage工具后,再次执行安装命令的截图。
tips:following is the screenshots with re-execution of installation command after installation of mkimage tool is finished。
http://wiki.myzr.com.cn/images/f/f6/Myimx6l3035_build_2.2.1.5.jpg
4)安装ncurses-dev
install ncurses-dev
说明:make menuconfig对其具有依赖性质。
instruction:make menuconfig is dependent on it。
$ sudo aptitude -y install ncurses-dev
提示:下图为安装过ncurses-dev工具后,再次执行安装命令的截图。
tips:following is the screenshots with re-execution of installation command after installation of ncurses-dev tool is finished。
http://wiki.myzr.com.cn/images/a/ad/Myimx6l3035_build_2.2.1.6.jpg
配置MY-IMX6编译的环境变量 (configure environment variables of MY-IMX6 compilation)1)将平台信息写入到一个新的配置文件
write platform information to a new configured file
$ echo "export ARCH=arm" > ~/my-imx6/03_tools/myimx6_3035_build_env
2)将交叉编译工具链路径写入到配置文件
write compiler tool chain path to configured file

[*]进入交叉编译工具目录
enter cross compiler tool directory
$ cd ~/my-imx6/03_tools/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/

[*]将路径写入到配置文件
write path to configured file
$ sed -i "\$a IMX6_GCC462_PATH=$PWD" ~/my-imx6/03_tools/myimx6_3035_build_env

[*]将交叉编译工具写入到配置文件
write cross compiler tool to configured file
$ sed -i "\$a export CROSS_COMPILE=\$IMX6_GCC462_PATH/arm-none-linux-gnueabi-" ~/my-imx6/03_tools/myimx6_3035_build_env
3)查看配置文件
view configured file
$ cat ~/my-imx6/03_tools/myimx6_3035_build_env
4)附图
figures
http://wiki.myzr.com.cn/images/1/13/Myimx6l3035_build_2.2.2.1.jpg
注意:如果在某一步操作错误,则需要删除 ~/my-imx6/03_tools/myimx6_3035_build_env 文件,并重新按照本小节操作。
note:if an error occurs in any step, need to delect ~/my-imx6/03_tools/myimx6_3035_build_env ,and operate again all steps of this segment。

编译u-boot(compile u-boot)进入u-boot源码目录(enter u-boot source code directory)$ cd ~/my-imx6/02_source/imx_3.0.35_4.1.0/u-boot-2009.08/
http://wiki.myzr.com.cn/images/8/81/Myimx6l3035_build_3.1.0.1.jpg

使配置文件生效(validate configured file)
[*]执行source命令
execute source command
$ source ~/my-imx6/03_tools/myimx6_3035_build_env
http://wiki.myzr.com.cn/images/8/87/Myimx6l3035_build_3.2.0.1.jpg

[*]查看编译配置
view compiler configuration
$ echo $ARCH
$ echo $CROSS_COMPILE
提示:可看到ARCH和CROSS_COMPILE被设置
tips:you can see that ARCH和CROSS_COMPILE is configured
http://wiki.myzr.com.cn/images/3/37/Myimx6l3035_build_3.2.0.2.jpg

[*]验证交叉编译工具配置
verify cross compiler tool configuration
$${CROSS_COMPILE}gcc –v
提示:执行命令后可以看到终端显示出交叉编译工具的版本信息。如下图:
tips:you can see version information of cross compiler tool shown on terminal after execution of command.as below:
http://wiki.myzr.com.cn/images/0/08/Myimx6l3035_build_3.2.0.3.jpg

清除u-boot配置(remove u-boot configuration)$ make distclean
http://wiki.myzr.com.cn/images/9/9a/Myimx6l3035_build_3.3.0.1.jpg

u-boot配置(u-boot configuration)
[*]评估板及对应的 u-boot 编译配置:
evaluation board and its corresponding u-boot compiler configuration:

评估板主型号
(evaluation board main model)CPU类型-内存容量
(CPU type-memory capacity)对应的u-boot配置
(corresponding u-boot configuration)
MY-IMX6-EK2006Q(四核)- 1G       
(6Q(quad. core)- 1G)myimx6ek200_6q_config
6Q(四核)- 2G       
(6Q(quad core)- 2G)myimx6ek200_6q_2g_config
6U(双核简化)- 1G
(6U(dual core tile)- 1G)myimx6ek200_6u_config
6S(单核)- 512M
(6S(single core)- 512M)myimx6ek200_6s_config
MY-IMX6-EK3146Q(四核)- 1G       
(6Q(quad.core)- 1G)myimx6ek314_6q_config
6Q(四核)- 2G       
(6Q(quad.core)- 2G)myimx6ek314_6q_2g_config
6U(双核简化)- 1G
(6U(dual core tile)- 1G)myimx6ek314_6u_config
6S(单核)- 512M
(6S(single core)- 512M)myimx6ek314_6s_config

[*]MYIMX6EK200-6Qxx-1G配置示例:
MYIMX6EK200-6Qxx-1G configuration example:
$ make myimx6ek200_6q_config
http://wiki.myzr.com.cn/images/8/89/Myimx6l3035_build_3.3.0.2.jpg

编译(compilation)
[*]执行编译
execute compilation
$ make
提示:这里为了提高编译速度,在make后面加了“-j4”。这里编译的Linux主机是双核4线程的,所以“-j”后面用了4,也就是采用4线程编译。“-j”后面的数字可以根据系统资源分配,但是不应该超过编译主机最大支持的线程数。
Tips:To speed up the compilation,add "-j4" after make.The Linux host used to compile is dual-core ,4 threads .So "-j" is followed by 4, which takes 4 threads to compile. The number behind "-j" is allocated based on system resources,but It should not exceed the maximum threads the host support。
http://wiki.myzr.com.cn/images/e/e6/Myimx6l3035_build_3.5.0.1.jpg

[*]编译完成
complete compilation
提示:u-boot编译过程大概需要几分钟时间。
tips:u-boot compilation process will take a few minustes or so。
http://wiki.myzr.com.cn/images/e/e6/Myimx6l3035_build_3.5.0.2.jpg

目标文件(target file)编译完成后通过ls命令即可看到编译得到的目标文件u-boot.bin
you can get the compiled file u-boot.bin with ls command after compilation
$ ls
http://wiki.myzr.com.cn/images/8/80/Myimx6l3035_build_3.6.0.1.jpg

编译内核(compile kernel)进入内核源码目录(enter kernel source directory)$ cd ~/my-imx6/02_source/imx_3.0.35_4.1.0/linux-3.0.35/
http://wiki.myzr.com.cn/images/e/ee/Myimx6l3035_build_4.1.0.1.jpg

使配置文件生效(validate configured file)
[*]执行source命令
execute source command
$ source ~/my-imx6/03_tools/myimx6_3035_build_env
http://wiki.myzr.com.cn/images/2/26/Myimx6l3035_build_4.2.0.1.jpg

[*]查看编译配置
view compiler configuration
$ echo $ARCH
$ echo $CROSS_COMPILE
提示:可看到ARCH和CROSS_COMPILE被设置
tips:you can see that ARCH和CROSS_COMPILE is configured
http://wiki.myzr.com.cn/images/e/ed/Myimx6l3035_build_4.2.0.2.jpg

[*]验证交叉编译工具配置
verify cross compiler tool configuration
$ ${CROSS_COMPILE}gcc –v
提示:执行命令后可以看到终端显示出交叉编译工具的版本信息。如下图:
tips:you can see version information of cross compiler tool shown on terminal after execution of command.as below:
http://wiki.myzr.com.cn/images/0/06/Myimx6l3035_build_4.2.0.3.jpg

准备配置内核(prepare for kernel configuration)
[*]清除内核配置
remove kernel configuration
$ make distclean
http://wiki.myzr.com.cn/images/e/ec/Myimx6l3035_build_4.3.0.1.jpg

[*]生成.config文件
generated.config file
说明:MY-IMX6-EK200系列评估板及MY-IMX6-EK314系列评估板使用的配置文件是myimx6_defconfig
instructions:configuration files used for MY-IMX6-EK200 seires of evaluation board and MY-IMX6-EK314 series of evaluation board is myimx6_defconfig
$ make myimx6_defconfig
http://wiki.myzr.com.cn/images/1/17/Myimx6l3035_build_4.3.0.2.jpg

编译内核(compile kernel)
[*]编译uImage
compile uImage
$ make uImage
说明:截图中使用了4线程编译。
instruction:4 threads compilation is used in the screenshots。
http://wiki.myzr.com.cn/images/f/f6/Myimx6l3035_build_4.4.0.1.jpg

[*]编译完成
complete compilation
http://wiki.myzr.com.cn/images/6/62/Myimx6l3035_build_4.4.0.2.jpg

[*]目标文件
target file
arch/arm/boot/uImage即为编译得到的目标文件,使用ls命令可查看文件信息。
arch/arm/boot/uImage is the target file through compilation,you can view the file information with ls command。
$ ls arch/arm/boot/uImage –la
http://wiki.myzr.com.cn/images/5/58/Myimx6l3035_build_4.4.0.3.jpg

编译模块(compile module)
[*]编译
compile
$ make
说明:截图中使用了4线程编译。
instruction:4 threads compilation is used in the screenshots。
http://wiki.myzr.com.cn/images/1/1d/Myimx6l3035_build_4.5.0.1.jpg

[*]编译完成
complete compilation
http://wiki.myzr.com.cn/images/4/4c/Myimx6l3035_build_4.5.0.2.jpg

[*]目标文件
target file
编译完成后各模块的.ko文件位于代码所在的目录,通过find命令可以找出编译完成的模块,参考命令如下:
.ko file of each module is in the directory where code is located after compilation ,you can find the module compiled with find command after compilation,refering command as below:
$ find -name *.ko
http://wiki.myzr.com.cn/images/a/ad/Myimx6l3035_build_4.5.0.3.jpg

Linux应用程序编译(Linux application compilation)编写应用程序(write application)1) 创建应用程序目录
create application directory
$ mkdir ~/my-imx6/02_source/application/ -p
$ cd ~/my-imx6/02_source/application/
http://wiki.myzr.com.cn/images/a/a1/Myimx6l3035_build_5.1.0.1.jpg
2) 编写应用程序(这里以hello.c为例)

创建 hello.c 文件写入以下代码并保存:


[*]include
int main(int argc, char **argv)
{
   printf("Hello, MYZR!\n");
   
   return;
}
3) 查看代码
$ cat hello.c
http://wiki.myzr.com.cn/images/2/21/Myimx6l3035_build_5.1.0.2.jpg

使编译配置文件生效(validate compiler configured file)
[*]执行source命令

$ source ~/my-imx6/03_tools/myimx6_3035_build_env
http://wiki.myzr.com.cn/images/1/1e/Myimx6l3035_build_5.2.0.1.jpg

[*]查看编译配置

$ echo $ARCH
$ echo $CROSS_COMPILE
提示:可看到ARCH和CROSS_COMPILE被设置

http://wiki.myzr.com.cn/images/8/80/Myimx6l3035_build_5.2.0.2.jpg

[*]验证交叉编译工具配置

$ ${CROSS_COMPILE}gcc –v
提示:执行命令后可以看到终端显示出交叉编译工具的版本信息。如下图:

http://wiki.myzr.com.cn/images/5/52/Myimx6l3035_build_5.2.0.3.jpg

编译应用程序 (compile application)2) 编译

$ ${CROSS_COMPILE}gcc hello.c -o hello.out
注意:上面的命令有包含“$”号,即“${CROSS_COMPILE}gcc”,是引用我们source时产生的环境变量。

http://wiki.myzr.com.cn/images/4/43/Myimx6l3035_build_5.3.0.1.jpg
3) 查看目标文件类型

$ file hello.out
可以看到目标文件 hello.out 的属性。

http://wiki.myzr.com.cn/images/6/68/Myimx6l3035_build_5.3.0.2.jpg

文件系统(file system)文件系统说明(file system instruction)文件系统包位于网盘对应的镜像文件夹中。支持的文件系统类型及下载方式可参照《MY-IMX6 烧录指导》。


解压文件系统到编译主机(decompress file system to compiler host)1)创建文件系统的目录并进入

$ mkdir ~/my-imx6/04_rootfs/ -p
$ cd ~/my-imx6/04_rootfs/
http://wiki.myzr.com.cn/images/1/16/Myimx6l3035_build_6.2.0.1.jpg
2)将文件系统复制到~/my-imx6/04_rootfs/目录

这一步骤自己采取相应的方式进行

3)解压文件系统到指定目录

$ mkdir rootfs
$ sudo tar jxf rootfs-linux.tar.bz2 -C rootfs
http://wiki.myzr.com.cn/images/8/89/Myimx6l3035_build_6.2.0.2.jpg

添加应用到文件系统(add application to file system)$ cp ~/my-imx6/02_source/application/hello.out rootfs/app_test/
http://wiki.myzr.com.cn/images/8/89/Myimx6l3035_build_6.3.0.1.jpg
5)重新打包文件系统

$ rm -rf rootfs-linux.tar.bz2
$ cd rootfs/
$ sudo tar cjf ../rootfs-linux.tar.bz2 *
http://wiki.myzr.com.cn/images/0/02/Myimx6l3035_build_6.3.0.2.jpg

添加模块到文件系统(add module to file system)准备需要模块的.ko文件,其它请参照“添加应用到文件系统”。