IMX6-CB336核心板有336个引脚金手指,采用的是BGA链接方式叉编译工具文件(cross compiler tool file)Linux程序交叉编译工具:gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz
Linux program cross compiler tool:gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz
Linux交叉编译工具配置文件:gcc-linaro-arm-linux-gnueabihf-492-env
Linux cross compiler tool configuration file:gcc-linaro-arm-linux-gnueabihf-492-env
QT5程序交叉编译工具:fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-vfp-neon-toolchain-3.14.52-1.1.0.sh
QT5 program compiler tool:fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-vfp-neon-toolchain-3.14.52-1.1.0.sh
创建工作目录(creat working directory)1)源码目录
source code directory
$ mkdir ~/my-imx6/02_source –p
2)工具目录
tool directory
$ mkdir ~/my-imx6/03_tools –p
3)镜像目录
image directory
$ mkdir ~/my-imx6/04_image –p
$ mkdir ~/my-imx6/04_image/image-linux-31452 –p
4)应用程序目录
application diretory
$ mkdir ~/my-demo
安装交叉编译工具链(install cross compiler tool chain)
安装Linux交叉编译工具链(install Linux cross compiler tool chain)1)进入交叉编译工具链目录
enter cross compiler tool chain diretory
$ cd ~/my-imx6/03_tools/
2)复制Linux交叉编译工具到目录
copy Linux cross compiler tool to directory
将gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz复制到“~/my-imx6/03_tools”,这一步自己采取相应的方式完成。
3)解压Linux交叉编译工具
copy gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz to“~/my-imx6/03_tools”,complete this step by yourself in a proper way。
$ tar xf gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz
4)复制交叉编译工具配置文件
copy cross compiler tool configuration file
将gcc-linaro-arm-linux-gnueabihf-492-env复制到“~/my-imx6/03_tools”,这一步自己采取相应的方式完成。
copy gcc-linaro-arm-linux-gnueabihf-492-env to“~/my-imx6/03_tools”,complete this step by yourself in a proper way。
5)检查安装
check installation
$ source gcc-linaro-arm-linux-gnueabihf-492-env
$ ${CROSS_COMPILE}gcc –v
安装QT5交叉编译工具(install QT5 cross compiler tool)1)进入交叉编译工具链目录
enter cross compiler tool chain directory
$ cd ~/my-imx6/03_tools/
2)执行安装命令
execute installation command
$ sh fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-vfp-neon-toolchain-3.14.52-1.1.0.sh
3)选择安装路径
choose installation path
执行安装命令后会出现如下提示信息:
after execution of installation command,there will be a following prompt message:
Enter target directory for SDK (default: /opt/fsl-imx-x11/3.14.52-1.1.0):
这时按“回车(Enter)”键,我们保持默认的安装路径。
then press“Enter”key,let's keep defauted installation path。
4)确认安装路径
confirm installation path
之后,会提示如下信息:
afterwards,there will be a following prompt message:
You are about to install the SDK to "/opt/fsl-imx-x11/3.14.52-1.1.0". Proceed[Y/n]? 这时输入“Y”并按“回车(Enter)”键表示确认。
then enter“Y”and press“Enter”key for confirmation。
5)等待安装完成
wait untill installation is completed
提示:安装过程大概需要几分钟的时间。 tips:installation will take a few minutes。
6) 检查安装
check installation
查看交叉编译工具链的版本信息以验证交叉编译工具链安装正常。
check the version information of cross compiler tool chain to verify the normality of installation
$ source /opt/fsl-imx-x11/3.14.52-1.1.0/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
$ qmake -v
执行命令后会也出现类似如下的信息:
after execution of command,there will be following message:
U-Boot编译(U-Boot compilation)
准备编译(prepare compilation)复制源码包到开发主机中(copy source code package to development host)将下载的“u-boot源码”复制到Linux开发主机的“~/my-imx6/02_source”。
copy“u-boot source code”downloaded to “~/my-imx6/02_source”of Linux development host。
这一步自己采取相应的方式完成。
complete this step by yourself in a proper way。
解压u-boot源码包(decompress u-boot source code package)$ cd ~/my-imx6/02_source/
$ tar xf u-boot-2015.04.tar.xz
编译(compilation)使编译配置文件生效(validate compiler configuration file)$ source ~/my-imx6/03_tools/gcc-linaro-arm-linux-gnueabihf-492-env
进入u-boot源码目录(enter u-boot source code directory)$ cd ~/my-imx6/02_source/u-boot-2015.04
清除u-boot临时文件 (remove u-boot temporary files)$ make distclean
配置u-boot(configure u-boot)configuration of development and its corresponding compiler:
评估板主型号
(development board main model) | CPU类型-内存容量
(CPU type-memory capacity ) | 处理器架构
(architeture of processor) | 对应的u-boot配置
(corresponding u-boot configuration) |
MY-IMX6-EK200 | i.MX 6QuadPlus - 1G | Cortex-A9 | myimx6ek200-6qp_config |
i.MX 6QuadPlus - 2G | Cortex-A9 | myimx6ek200-6qp-2g_config |
i.MX6 Quad - 1G | Cortex-A9 | myimx6ek200-6q_config |
i.MX6 Quad - 2G | Cortex-A9 | myimx6ek200-6q-2g_config |
i.MX6 DualLite - 1G | Cortex-A9 | myimx6ek200-6u_config |
i.MX 6Solo - 512M | Cortex-A9 | myimx6ek200-6s_config |
i.MX 6Solo - 1G | Cortex-A9 | myimx6ek200-6s-1g_config |
MY-IMX6-EK314 | i.MX 6QuadPlus - 1G | Cortex-A9 | myimx6ek200-6qp_config |
i.MX 6QuadPlus - 2G | Cortex-A9 | myimx6ek200-6qp-2g_config |
i.MX6 Quad- 1G | Cortex-A9 | myimx6ek314-6q_config |
i.MX6 Quad- 2G | Cortex-A9 | myimx6ek314-6q-2g_config |
i.MX6 DualLite - 1G | Cortex-A9 | myimx6ek314-6u_config |
MY-IMX6-EK336 | i.MX 6QuadPlus - 1G | Cortex-A9 | myimx6ek336-6qp_config |
i.MX 6QuadPlus - 2G | Cortex-A9 | myimx6ek336-6qp-2g_config |
i.MX6 Quad- 1G | Cortex-A9 | myimx6ek336-6q_config |
i.MX6 Quad- 2G | Cortex-A9 | myimx6ek336-6q-2g_config |
MY-IMX6-EK140 | i.MX 6UltraLite-256M | Cortex-A7 | myimx6ek140-6g_config |
i.MX 6UltraLite-512M | Cortex-A7 | myimx6ek140-6g-512m_config |
i.MX 6UltraLite Full - 256M | Cortex-A7 | myimx6ek140p-6g_defconfig |
i.MX 6UltraLite Full - 512M | Cortex-A7 | myimx6ek140p-6g-512m_defconfig |
MYIMX6EK200-6Q-1G configuration example:
$ make myimx6ek200-6q_config
执行编译(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.
complete compilation
提示:u-boot编译过程大概需要一、两分钟时间。
Tips: u-boot compiling process may take one or two minutes。
目标文件(target file)compile file
编译完成后通过ls命令即可看到编译得到的文件u-boot.imx
you can get the compiled file u-boot .imx with ls command after compilation.
$ ls
target file
MY-IMX6系列评估板的u-boot配置对应的目标文件名见下表:
The corresponding target file name for u-boot configuration of MY-IMX6 series evaluation board is shown in the table below:
u-boot配置
(u-boot configuration) | 目标文件
(target file) |
myimx6ek200-6qp_config | uboot-myimx6ek200-6qp.imx |
myimx6ek200-6qp-2g_config | uboot-myimx6ek200-6qp-2g.imx |
myimx6ek200-6q_config | uboot-myimx6ek200-6q.imx |
myimx6ek200-6q-2g_config | uboot-myimx6ek200-6q-2g.imx |
myimx6ek200-6u_config | uboot-myimx6ek200-6u.imx |
myimx6ek200-6s_config | uboot-myimx6ek200-6s.imx |
myimx6ek200-6s-1g_config | uboot-myimx6ek200-6s-1g.imx |
|
myimx6ek314-6qp_config | uboot-myimx6ek314-6qp.imx |
myimx6ek314-6qp-2g_config | uboot-myimx6ek314-6qp-2g.imx |
myimx6ek314-6q_config | uboot-myimx6ek314-6q.imx |
myimx6ek314-6q-2g_config | uboot-myimx6ek314-6q-2g.imx |
myimx6ek314-6u_config | uboot-myimx6ek314-6u.imx |
|
myimx6ek336-6qp_config | uboot-myimx6ek336-6qp.imx |
myimx6ek336-6qp-2g_config | uboot-myimx6ek336-6qp-2g.imx |
myimx6ek336-6q_config | uboot-myimx6ek336-6q.imx |
myimx6ek336-6q-2g_config | uboot-myimx6ek336-6q-2g.imx |
|
myimx6ek140-6g_config | uboot-myimx6ek140-6g.imx |
myimx6ek140-6g-512m_config | uboot-myimx6ek140-6g-512m.imx |
myimx6ek140p-6g_defconfig | uboot-myimx6ek140p-6g.imx |
myimx6ek140p-6g-512m_defconfig | uboot-myimx6ek140p-6g-512m.imx |
我们需要将编译得到的u-boot.imx复制为我们的目标文件名。
We need to copy the compilied file u-boot.imx as our target file name.:
这里以MY-IMX6-EK200-6Q为例(把配置myimx6ek200-6q_config编译生成的u-boot.imx复制为目标文件):
Copy the generated file u-boot.imx from the compilation of myimx6ek200-6q_config as target file.):
$ cp u-boot.imx ~/my-imx6/04_image/image-linux-31452/uboot-myimx6ek200-6q.imx
编译内核(compile kernel)
准备编译(prepare compilation)复制源码包到开发主机中(copy source code package to development host)将下载的“linux源码”复制到Linux开发主机的“~/my-imx6/02_source”。
copy “linux source code”downloaded to “~/my-imx6/02_source”of Linux development host。
这一步自己采取相应的方式完成。
complete this step by yourself in a proper way。
解压linux源码包(decompress linux source code package)$ cd ~/my-imx6/02_source/
$ tar xf linux-3.14.52.tar.xz
内核编译配置(kernel compilation configuration)使编译配置文件生效(validate compilfer configuration file)$ source ~/my-imx6/03_tools/gcc-linaro-arm-linux-gnueabihf-492-env
清除内核临时文件(remove kernel temporary file)enter linux source code directory
$ cd ~/my-imx6/02_source/linux-3.14.52
remove temporary file
$ make distclean
内核配置(kernel configuration)kernel configuration file
评估板型号
(evaluation board model) | 配置文件
(configuration file) |
MY-IMX6-EK200 | myimx6_defconfig |
MY-IMX6-EK314 |
MY-IMX6-EK336 |
MY-IMX6-EK140 | myimx6ul_defconfig |
$ make myimx6_defconfig
如果是编译 MY-IMX6-EK140 的内核,请使用 $ make myimx6ul_defconfig
if what compified is kernel of MY-IMX6-EK140,please use $ make myimx6ul_defconfig
这里以 myimx6_defconfig 为例。
take myimx6_defconfig as an example。
编译内核(compife kernel)execute compilation
$ make zImage
complete compilation
target file
arch/arm/boot/zImage即为编译得到的内核文件,使用ls命令可查看文件信息。
arch/arm/boot/zImage is the kernel file compifed,you can check file information with ls command。
$ ls arch/arm/boot/zImage -la
注意:我们烧录及启动的内核文件名为“zImage-myimx6”,所以我们需要把zImage复制为zImage-myimx6。
Note: The kernel file name which is going to be programed and started is “zImage-myimx6”, So we should Copy zImage as zImage-myimx6
$ cp arch/arm/boot/zImage ~/my-imx6/04_image/image-linux-31452/zImage-myimx6
编译设备树(compife device tree)评估板型号规格与设备树文件对应关系见下表:
The correspondence between the type of evaluation board and device tree is shown below:
评估板主型号
(development main model) | CPU类型-内存容量
(CPU type-memory capacity) | 对应的设备树文件
(corresponding device tree file) |
MY-IMX6-EK200 | i.MX 6QuadPlus - 1G | myimx6ek200-6qp.dtb |
i.MX 6QuadPlus - 2G | myimx6ek200-6qp-2g.dtb |
i.MX6 Quad - 1G | myimx6ek200-6q.dtb |
i.MX6 Quad - 2G | myimx6ek200-6q-2g.dtb |
i.MX6 DualLite - 1G | myimx6ek200-6u.dtb |
i.MX 6Solo - 512M | myimx6ek200-6s.dtb |
i.MX 6Solo - 1G | myimx6ek200-6s-1g.dtb |
MY-IMX6-EK314 | i.MX 6QuadPlus - 1G | myimx6ek314-6qp.dtb |
i.MX 6QuadPlus - 2G | myimx6ek314-6qp-2g.dtb |
i.MX6 Quad - 1G | myimx6ek314-6q.dtb |
i.MX6 Quad - 2G | myimx6ek314-6q-2g.dtb |
i.MX6 DualLite - 1G | myimx6ek314-6u.dtb |
MY-IMX6-EK336 | i.MX 6QuadPlus - 1G | myimx6ek336-6qp.dtb |
i.MX 6QuadPlus - 2G | myimx6ek336-6qp-2g.dtb |
i.MX6 Quad - 1G | myimx6ek336-6q.dtb |
i.MX6 Quad - 2G | myimx6ek336-6q-2g.dtb |
MY-IMX6-EK140 | i.MX 6UltraLite-256M | myimx6ek140-6g.dtb |
i.MX 6UltraLite-512M | myimx6ek140-6g-512m.dtb |
i.MX 6UltraLite Full - 256M (2eth) | myimx6ek140p-6g.dtb |
i.MX 6UltraLite Full - 256M (8uart) | myimx6ek140p-6g-8uart.dtb |
i.MX 6UltraLite Full - 512M (2eth) | myimx6ek140p-6g-512m.dtb |
i.MX 6UltraLite Full - 512M (8uart) | myimx6ek140p-6g-512m-8uart.dtb |
take MY-IMX6-EK200-6Q-1G as example
$ make myimx6ek200-6q.dtb
target file
使用ls命令可查看编译得到的目标设备树文件信息:
You can browse the target device tree file information from compilation with ls command:
$ ls arch/arm/boot/dts/myimx6ek*.dtb
复制设备树文件到镜像目录
Copy device tree file to image directory
$ cp arch/arm/boot/dts/myimx6ek*.dtb ~/my-imx6/04_image/image-linux-31452/
编译模块 (compife module)compile module command
$ make modules
Install module to the specified directory
$ make modules_install INSTALL_MOD_PATH=./modules
- $ cp ../modules.tar.bz2 ~/my-imx6/04_image/image-linux-31452/kernel-modules-myimx6.tar.bz2
注意:如果是编译内核时配置文件使用的是 myimx6_defconfig,在这里要把 modules.tar.bz2 复制为 kernel-modules-myimx6.tar.bz2;如果是编译内核时配置文件使用的是 myimx6ul_defconfig,在这里要把 modules.tar.bz2 复制为 kernel-modules-myimx6g.tar.bz2
Note:when you compile the Kernel If the configuration file you use is myimx6_defconfig, here you should Copy modules.tar.bz2 as kernel-modules-myimx6.tar.bz2.If the configuration file is myimx6ul_defconfig,you should Copy modules.tar.bz2 as kernel-modules-myimx6g.tar.bz2.
应用程序编译(application compilation)
Linux应用程序编译(Linux application compilation)编写应用程序(write an application)- 创建应用程序的源码目录和Linux-3.14.52的可执行程序目录
Create application source code directory and Linux-3.14.52 executable program directory
$ mkdir ~/my-demo/source_code -p
$ mkdir ~/my-demo/bin-l31452 -p
write source code
$ cd ~/my-demo/source_code
$ vi hello.c
写入以下代码并保存
write following code and save
#include
int main(int argc, char **argv)
{
printf("Hello, MYZR!n");
return;
}
view code
$ cat hello.c
编译应用程序(compife application)Configure environment variables
$ source ~/my-imx6/03_tools/gcc-linaro-arm-linux-gnueabihf-492-env
compife
$ ${CROSS_COMPILE}gcc hello.c -o hello.out
注意:上面的命令有包含“$”号,即“${CROSS_COMPILE}gcc”,是引用我们source时产生的环境变量。
Note:The above command contains “$”,which is “${CROSS_COMPILE}gcc”. It is the environment variable generated when referring to our source.。
target file
$ file hello.out
可以看到目标文件 hello.out 的属性。
you can see the property of target file hello.out。
保存目标可执行文件(save target executable file)$ mv hello.out ~/my-demo/bin-l31452/
QT应用程序编译 (QT application compife)准备QT5程序代码(prepare QT5 program code)提示:这里我们使用“Qt5_NMap_CarouselDemo_1.0.tgz”进行演示。
Tips:Here We demonstrate with “Qt5_NMap_CarouselDemo_1.0.tgz".
1)将代码包复制到Linux开发主机
copy code package to Linux development host
将代码包“Qt5_NMap_CarouselDemo_1.0.tgz”复制到“~/my-demo/source_code”。
copy code package“Qt5_NMap_CarouselDemo_1.0.tgz”to“~/my-demo/source_code”。
这一步自己采取相应的操作完成。
complete this step by yourself in a proper way。
2)解压代码包
decompress code package
$ cd ~/my-demo/source_code
$ tar zxf Qt5_NMap_CarouselDemo_1.0.tgz
编译QT5程序(compile QT5 application)提示:我们将使用命令行编译。
Tips: We compile with commands。
1)进入代码目录
enter code directory
提示:我们前面将代码包“Qt5_NMap_CarouselDemo_1.0.tgz”解压在“~/my-demo/source_code”。
tips:first we decompress code package“Qt5_NMap_CarouselDemo_1.0.tgz”to“~/my-demo/source_code”。
$ cd ~/my-demo/source_code/Qt5_NMap_CarouselDemo_1.0/
2)检查QMake
check QMake
$ qmake –v
如果执行命令后当前终端有输出“QMake version 3.0”,则表示交叉编译工具配置正常。 If the current terminal output has “QMake version 3.0” after the execution of command,that means cross compiler is Configured normally..
否则需要执行下面的命令:
Otherwise you need to execute the command below:
$ source /opt/fsl-imx-x11/3.14.52-1.1.0/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
3)生成Makefile文件
creat Makefile
$ qmake
执行qmake后通过ls可以看到多了Makefile文件
you can see an extra Makefile with ls after execution of qmake
4)编译
compile
$ make
5)目标文件
target file
target file
$ file Qt5_NMap_CarouselDemo
source file
QT5程序的运行需要对应的qml文件和content
Running QT5 needs the corresponding qml file and content
保存目标可执行文件(save target executable file)由于QT5程序的运行需要对应的qml文件和content文件,这里我们为了操作的简洁,直接将整个目录复制到目标目录
Because running QT5 program requires qml file and content file, here We copy the entire directory to the target directory for simplicity.
$ cp ../Qt5_NMap_CarouselDemo_1.0 ~/my-demo/bin-l31452/ -a
应用程序打包(package application)说明(instruction)烧录工具支持烧录“my-demo.tar.xz”的文件包到评估板。所以在这里我们把我们需要的应用程序打包为“my-demo.tar.xz”。至于“my-demo.tar.xz”会被烧录到哪个位置,请看《烧录手册》。
Programming tool supports to program “my-demo.tar.xz” file package to evaluation board.So We package applications We need as “my-demo.tar.xz”.while where “my-demo.tar.xz” will be programmed ,refer to 《burning manual》。
烧录系统之后,对评估板重新上电,登录系统后并执行以下命令。
After the burning, supply power for evaluation board,login system and execute commands below.
- /home/root/my-demo/bin-l31452/hello.out
- export DISPLAY=:0
- /home/root/my-demo/bin-l31452/Qt5_NMap_CarouselDemo_1.0/Qt5_NMap_CarouselDemo
附:文件系统编译(Appendix:file system compilation)注意及说明:
notes and instructions:
1)原始编译的过程中的下载量会超过4G。(提示:可以使用我们下载好的一些文件,以减少下载量,节约时间,在7.4中会说到)。
The download of the original compilation exceed 4G。(tips:you can use files we have downloaded in order to reduce downloads and save time,which is going to be mentioned in 7.4)。
2)编译主机的网络连接最好使用能访问www.fackbook.com 的网络,不然可能会受到境内防火墙的限制而无法下载编译需要的软件包。
The network of the compilation host is good to access to www.fackbook.com .Otherwise It may be subject to the condition of the domestic firewall and It is unable to download the software for compilation.
3)初次编译需要的时间根据网络状态及编译主机的配置需要2小时到无限时间(经粗略统计除去下载时间,在16核CPU、16G内存的主机上编译QT5系统用了大约100分钟。)
The initial compilation may take 2 hours to unlimited time.It depends on the network state and the configuration of the host.(After a rough statistics, It took about 100 minutes to compile QT5 system on the 16-core CPU 16 G memory host except download time。)
客户请根据实际情况决定是否自行编译文件系统或使用我们提供的文件系统。如果我们提供的文件系统能够满足需求,建议不要自行编译,因为编译过程可能会出现很多错误。
Customer may decide whether to compile the file system or use the file system We provide based on the actual situation. If the file system we provide meets the requirements, you had better not to compile by yourself. Since It may be a lot of errors during compilation.
准备编译 (Prepare for compilation)安装软件包(install software package)说明,Yocto编译依赖一些软件包,所以需要在开发主机上进行安装。
instruction,Yocto compilation relies on some software package. So you need to Install them on the host。
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo
gcc-multilib build-essential chrpath socat