最近才开始玩imx6,本来是不打算搞yocto的,毕竟有官方渠道可以下载uboot和kernel(下面会说到),为什么要干这种吃力不讨好的事情?然而当我玩到了qt5移植的时候,却发现网上各种imx6移植qt5的方法都不好(移植都是成功的,包括OpenGL,然而却跑不了eglfs)。折腾了几天之后我就死心了,决定搭建yocto环境,记录如下: 1,准备搭建yocto环境。 1.1,安装ubuntu14.04LTS(千万记得一定要分配足够的硬盘空间,imx6官方推荐不少于120G): 1.1.1,32位或64位:我选择的是32位系统(缺点是qt官方没提供32系统的qt5.6及以上版本的安装环境)。 1.1.2,ubuntu版本:当然可以选择ubuntu12.04或者ubuntu16.04,选择ubuntu12.04的同学们要注意imx6的yocto环境要求的git版本最低是1.8.3的,而ubuntu12.04的git版本只能到1.7.9。怎么办?有个取巧的办法就是把ubuntu12.04的源临时换成14.04的源,只更新git(命令:sudo apt-get install git)后把源改回来以达到我们的目的(亲测可以在ubuntu12.04上完成yocto环境搭建)。 1.2,安装搭建yocto环境所需要的软件包,非root用户执行以下指令(注意不要用root用户去搭建yocto环境): 1.2.1,安装必须软件包,执行如下指令: $ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential \ chrpath socat libsdl1.2-dev $ sudo apt-get install libsdl1.2-dev xterm sed cvs subversion coreutils texi2html docbook-utils \ python-pysqlite2 help2man make gcc g++ desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev \ mercurial autoconf automake groff curl lzop asciidoc 1.2.2,ubuntu12.04安装uboot-mkimage,执行如下命令: $ sudo apt-get install uboot-mkimage ubuntu14.04安装u-boot-tools,执行如下命令: $ sudo apt-get install u-boot-tools 2,设置repo下载功能。 2.1,在opt目录下用创建yocto目录(一定要记得非root用户),执行如下命令: $ cd /opt $ sudo mkdir yocto 2.2,非root用户下修改yocto目录的拥有者,执行如下命令(我的当前用户是tsinglee): $ sudo chown tsinglee: yocto 2.3,获取repo,执行如下命令: $ mkdir yocto/bin $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > /opt/yocto/bin/repo $ chmod a+x /opt/yocto/bin/repo 注意:第二条指令需要访问google,这就意味着要翻墙(还好我有个牛逼的梯子),那不能翻墙的同学怎么办?网上提供了另外一种办法,命令如下: $ curl http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo > /opt/yocto/bin/repo 2.4,添加执行路径,执行如下命令: $ export PATH=/opt/yocto/bin:$PATH 3,设置yocto工程。 3.1,设置git,执行如下命令: $ git config --global user.name "Your Name" $ git config --global user.email "Your Email" $ git config --list 举例: $ git config --global user.name test $ git config --global user.email test@163.com 3.2,repo同步,执行如下指令: $ cd /opt/yocto $ mkdir fsl-release-bsp $ cd fsl-release-bsp $ repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-4.1-krogoth $ repo sync 然后等待同步完成,如果同步过程出错,可以用ctrl+c中断执行,并重新执行repo sync直到同步成功。 4,编译yocto工程。 4.1,设置脚本环境,执行命令格式如下: $ DISTRO=<distro name> MACHINE=<machine name> source fsl-setup-release.sh -b <build dir> DISTRO有如下四种设置: fsl-imx-x11 fsl-imx-wayland fsl-imx-xwayland fsl-imx-fb 我选择fsl-imx-fb,不过建议大家选择fsl-imx-x11,同时请注意nxp不再支持DirectFB。 MACHINE同样有多种配置: imx6qpsabreauto imx6qpsabresd imx6ulevk imx6ull14x14evk imx6ull9x9evk imx6dlsabreauto imx6dlsabresd imx6qsabreauto imx6qsabresd imx6slevk imx6solosabreauto imx6solosabresd imx6sxsabresd imx6sxsabreauto imx7dsabresd 我选择imx6qsabresd。因此我执行的最终命令如下: $ DISTRO=fsl-imx-fb MACHINE=imx6qsabresd source fsl-setup-release.sh -b build 4.2,编译镜像文件,执行如下命令: $ bitbake fsl-image-qt5 同样的bitbake可以编译以下多种镜像: core-image-minimal core-image-base core-image-sato fsl-image-machine-test fsl-image-gui fsl-image-qt5 编译fsl-image-qt5的时间非常长,在网速飞快的情况下也需要十六个小时(我的网速是100M的),如果编译中途出错,可以ctrl+c中断后重新执行命令: $ bitbake fsl-image-qt5 如果编译过程中无意关掉了终端,那么重新打开终端进入fsl-release-bsp目录后只需要执行以下命令就可以重新进入编译环境: $ source setup-environment build 注意:编译完成后占用的硬盘空间接近70G。 4.3,编译qt5的交叉编译工具链,执行如下命令: $ bitbake meta-toolchain-qt5 编译完成后会在/opt/yocto/fsl-release-bsp/build/tmp/deploy/sdk目录下生成文件fsl-imx-fb-glibc-i686-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.0.0.sh。执行如下命令安装qt5的交叉编译工具链: $ cd /opt/yocto/fsl-release-bsp/build/tmp/deploy/sdk $ ./fsl-imx-fb-glibc-i686-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.0.0.sh 一路选择默认设置,最终将在/opt/fsl-imx-fb/4.1.15-2.0.0/目录下生成我们所需要的工具链。 至此,我们所需要的所有文件均已生成,包含了uboot,kernel,rootfs以及交叉编译qt应用程序的交叉编译工具。相对应的软件版本如下: uboot:v2016.03 kernel:v4.1.15 qt版本:qt5.6.2 当然最重要的是yocto编译生成的rootfs中包括了imx6所需要的各种库,特别是有我们所需要的能完整的支持imx6的gpu性能的qt5.6.2库,而且经过测试是支持eglfs的。功夫不负有心人,这也正是我的目的所在。 最后,如果不使用yocto中的uboot和kernel源码,那么我们应该如何获得对应版本的uboot和kernel源码呢?有两种办法: 第一种是直接去官网下载相对应版本的软件源码,网址如下: http://git.freescale.com/git/ 第二种是通过git clone命令下载软件源码,在终端下执行如下指令: 下载uboot : git clone http://git.freescale.com/git/cgit.cgi/imx/uboot-imx.git -b imx_v2016.03_4.1.15_2.0.0_ga 下载kernel: git clone http://git.freescale.com/git/cgit.cgi/imx/linux-imx.git -b imx_4.1.15_2.0.0_ga 后记:在使用fsl-imx-fb生成的qt来运行qml程序的时候发现其对部分qml程序在性能上的支持并不好,简直就是浪费了imx6的性能,因此最终我还是编译出了一个fsl-imx-x11的版本来运行qml程序,所以建议大家不要去编译fb版本的文件系统了。
imx6开发环境搭建之yocto全记录(L4.1.15_2.0.0)
最新推荐文章于 2025-03-01 10:39:08 发布