NXP

imx6开发环境搭建之yocto全记录(L4.1.15_2.0.0)

2019-07-12 13:39发布

最近才开始玩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= MACHINE= source fsl-setup-release.sh -b
       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版本的文件系统了。
--------------------- 
作者:拖杀猪刀的 
来源:CSDN 
原文:https://blog.csdn.net/cking0906/article/details/76099025 
版权声明:本文为博主原创文章,转载请附上博文链接!