IMX8QM开发yocto环境搭建(L4.14.98-2.0.0_ga)

系统环境选择为考虑到编译环境的备份,方便移植等因素。我使用VirtualBox虚拟机的方式搭建ubuntu开发环境。
ubuntu版本:ubuntu-14.04.5-desktop-amd64.iso
下载地址: http://old-releases.ubuntu.com/releases/14.04.5/
硬盘预留空间推荐300G,因为IMX8QM的XWayland QT版本的yocto工程就在200G左右。

安装必须的软件包,终端输入如下指令:
$ 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

$ sudo apt-get install u-boot-tools

注释*其中有个别软件会提示ubuntu的源中,软件版本或者安装名称已经更换了。可以根据终端的提示安装。包口后面yocto在编译的时候,我印象中会有两个提示需要安装python的软件(具体记不清了)也同样可以根据报错的提示,进行apt-get install的安装可以解决。

设置repo下载功能:
这里如果按照i.MX_Yocto_Project_User’s_Guide文档中:
在这里插入图片描述

这样的话,是repo下载是使用Google源。在国内下载肯定会有问题。除非你有很牛的翻墙工具。

我推荐的方式是使用自己repo,将Google源改成清华源。
在这里插入图片描述

注释*我使用的repo会在附件中提供。

https://download.csdn.net/download/gxl798354000/10505161

设置git,执行如下命令:
$ git config --global user.name “Your Name”
$ git config --global user.email “Your Email”
$ git config --list
举例:
$ git config --global user.name gxlfie
$ git config --global user.email 798354000@qq.com
$ git config --list如下:
在这里插入图片描述

repo同步获取yocto工程:
创建工作目录:
mkdir ~/imx8qm/imx-4.14.98-2.0.0_ga/
进入:
cd ~/imx8qm/imx-4.14.98-2.0.0_ga/

将自己的 repo 拷贝到当前目录
cp XX(目录自己确定)/repo ~/imx8qm/imx-4.14.98-2.0.0_ga/

同步:
$ ./repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-sumo -m imx-4.14.98-2.0.0_ga.xml
$ ./repo sync

注释*如果有需要可以将imx-4.14.98-2.0.0_ga/文件夹备份成压缩包,大概300MB。(要用tar zxvf指令压缩,右键压缩会丢失文件)

编译yocto工程。
设置脚本环境,执行命令格式如下:
$ DISTRO= MACHINE= source fsl-setup-release.sh -b

   DISTRO有如下四种设置:

在这里插入图片描述

   fsl-imx-x11
   fsl-imx-wayland
   fsl-imx-xwayland
   fsl-imx-fb
   我选择 fsl-imx-xwayland ,X11不在IMX8上支持,同时请注意nxp不再支持DirectFB。

   MACHINE同样有多种配置:

在这里插入图片描述
在这里插入图片描述

因为我们使用的芯片是imx8qm 板级原理设计参照NXP官方的MEK板,所以选择imx8qmmek

因此我执行的最终命令如下:
$ DISTRO=fsl-imx-xwayland MACHINE=imx8qmmek source fsl-setup-release.sh -b build-xwayland-imx8qmmek-xen
注释* " -b build-xwayland-imx8qmmek-xen" 是配置编译目录名称。

U-Boot配置

默认如果不修改,是SD的启动方式。这里我是没有修改,选择SD的。
如果想要修改启动方式可以参照下表:
在这里插入图片描述

Xen配置支持:
在这里插入图片描述

编译的linux系统如果想要Xen的支持,需要添加此项配置。
输入指令: $ echo “DISTRO_FEATURES_append = " xen”" >> conf/local.conf
或或者gedit直接打开 ~/imx8qm/imx-4.14.98-2.0.0_ga/build-xwayland-imx8qmmek-xen/con/local.conf 在最后一行添加"DISTRO_FEATURES_append = " xen" "。如图:
在这里插入图片描述

执行编译:
这里我选择的是rootfs比较全的带有QT5的版本。执行指令:
$ bitbake fsl-image-qt5-validation-imx

需要其他精简版本可以参考下表,列出当前版本yocto支持的各个rootfs级别。当然选择的rootfs更多,需要下载编译的任务也会更多,时间会久一些,消耗的硬盘内存也会更多。IMX8QM的QT5版本需要200G

在这里插入图片描述

注释*如果编译过程中无意关掉了终端,那么重新打开终端进入imx-4.14.98-2.0.0_ga目录后只需要执行以下命令就可以重新进入编译环境:
$ source setup-environment build-xwayland-imx8qmmek-xen
再次执行编译,即可继续编译:
$ bitbake fsl-image-qt5-validation-imx

编译成功后会在~/imx8qm/imx-4.14.98-2.0.0_ga/build-xwayland-imx8qmmek-xen/tmp/deploy/images/imx8qmmek/目录下生产所有需要用到的镜像包括:boot dtb Image rootfs。

镜像用法
boot烧录 boot-XX-.bin 需要dd到SD卡中。IMX8偏移是32
参考指令:
$ sudo dd if= imx-boot-imx8qmmek-sd.bin of=/dev/sdc seek=32 bs=1k && sync

Image,DTB和XEN直接拷贝到fat区即可。
在这里插入图片描述

rootfs 拷贝到SD卡的ext4分区中。
参考指令:
$ tar -jxvf fsl-image-qt5-validation-imx-imx8qmmek.tar.bz2
$ sudo cp -a * /home/user/
注释* SD卡ext4分区的挂载点
在这里插入图片描述

便捷烧录方式
直接使用DD 指令将 fsl-image-qt5-validation-imx-imx8qmmek.sdcard烧录到SD卡中(会自动分区并且将上述所有需要烧录的内容一并写入SD卡中,唯一缺点不能识别SD快坏,如果使用的SD卡存在坏块可能导致ext4分区无法挂载,需要重新格式化)参考指令:
$ sudo dd if=fsl-image-qt5-validation-imx-imx8qmmek.sdcard of=/dev/sdc bs=1M && sync

详细烧录启动方法请参考烧录手册。

代码的位置

Linux的kernel的源代码在:
~/imx8qm/imx-4.14.98-2.0.0_ga/build-xwayland-imx8qmmek-xen/tmp/work/imx8qmmek-poky-linux/linux-imx/4.14.98-r0/git
git是一个链接文件,实际的源代码在:
~/imx8qm/imx-4.14.98-2.0.0_ga/build-xwayland-imx8qmmek-xen/tmp/work-shared/imx8qmmek/kernel-source

u-boot的源代码的位置在
~/imx8qm/imx-4.14.98-2.0.0_ga/build-xwayland-imx8qmmek-xen/tmp/work/imx8qmmek-poky-linux/u-boot-imx/2018.03-r0

如何单独编译kernel和u-boot:
我们修改了kernel或者u-boot的源代码,直接运行bitbake fsl-image-qt5是不会编译我们修改的源代码的。所以就需要我们单独编译源代码。
重新打开终端需要再次运行环境变量
$ cd ~/imx8qm/imx-4.14.98-2.0.0_ga //进入工程目录
$ source setup-environment build-xwayland-imx8qmmek-xen //加载编译环境

配置menuconfig
$ bitbake -c menuconfig -v linux-imx

单独编译kernel
$ bitbake -c compile -f -v linux-imx
$ bitbake linux-imx -c compile_kernelmodules -f -v
$ bitbake -c deploy -f -v linux-imx
$ bitbake fsl-image-validation-imx

执行上面的命令将重新编译内核、设备树、模块。并且重新生成rootfs 。
实际上我们修改了内核,实际上往往不需要更新rootfs的,而我们 执行bitbake fsl-image-validation-imx时会重新生成rootfs,这个操作会耗费很长的时间。
所以我们也可以只执行
$ bitbake -c compile -f -v linux-imx
$ bitbake linux-imx -c compile_kernelmodules -f -v
$ bitbake -c deploy -f -v linux-imx

执行上面个三个命令编译出来的zImage和设备树在
~/imx8qm/imx-4.14.98-2.0.0_ga/build-xwayland-imx8qmmek-xen/tmp/deploy/images/imx8qmmek

单独编译u-boot
$bitbake -c compile -f -v u-boot-imx
$bitbake -c deploy -f -v u-boot-imx
$bitbake fsl-image-validation-imx
同样单独编译完u-boot,执行bitbake fsl-image-validation-imx时会重新生成rootfs,会耗费很长的时间。
所以我们也可以只执行
$bitbake -c compile -f -v u-boot-imx
$bitbake -c deploy -f -v u-boot-imx
然后把u-boot拷出来

SCFW编译:
需要准备SCFW编译源码 : imx-scfw-porting-kit-1.2.tar.gz
M4单片机核交叉编译器:gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux(GNU Arm Embedded Toolchain).tar.bz2
两部分可以在NXP文档中提供的链接网址去下载,我所使用的也会在附件中提供。
备SCFW编译源码 :https://download.csdn.net/download/gxl798354000/12840263

安装并配置M4核交叉编译器:
解压安装gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux(GNU Arm Embedded Toolchain)
$ mkdir ~/imx8qm/M4
$ cd ~/imx8qm/M4
$ tar -zxvf gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux(GNU Arm Embedded Toolchain).tar.bz2
配置交叉编译工具
$ export TOOLS=/home/ss/imx8qm/M4

解压SFCW源码指令如下:
$ tar zxvf imx-scfw-porting-kit-1.2.tar.gz
$ chmod 777 packages/imx-scfw-porting-kit-1.2.bin
$ ./packages/imx-scfw-porting-kit-1.2.bin
imx-scfw-porting-kit-1.2/src/ scfw_export_mx8qm_b0.tar.gz 是IMX8qm b0版本的SCFW的源码可以拷贝到其他目录使用.
imx-scfw-porting-kit-1.2/doc目录下是SCFW对应的文档。

SCFW imx8qm版本编译:
指令如下:
$ cd scfw_export_mx8qm_b0/ //进入源码工程目录
$ export TOOLS=/home/ss/imx8qm/M4 //M4 gcc导入环境变量
$ make qm R=B0 //编译
make命令行上指定几个选项:
在这里插入图片描述

生产的bin固件在 scfw_export_mx8qm_b0/build_mx8qm_b0/scfw_tcm.bin

imx-mkimage打包固件

如何使用自己生成的scfw_tcm.bin boot 和M4单片机程序打包生成flash.bin

注释* fiash.bin 就是前文提到的imx-boot-imx8qmmek-sd.bin,需要通过imx-mkimage工具打包后才能让imx8执行,imx8烧录的boot其实与imx6的boot内容上有很多差别。组成部分如下。
在这里插入图片描述

imx-mkimage工具可以在NXP文档链接中下载,我使用的可以在附件中提供(我使用的已经把必要内容放到固定目录了)。
imx-mkimage下载地址:https://download.csdn.net/download/gxl798354000/12840269

解压并进入工程目录略:
在这里插入图片描述

添加打包的boot 单片机bin 和SWFC固件需要放入IMX8QM文件夹内
在这里插入图片描述

imx-mkimage执行打包执行指令如下:
make SOC=iMX8QM flash
IMX8QM目录下生成 flash.bin, 可用于DD指令烧录到SD卡中启动。
Make详细配置可以参考:
在这里插入图片描述

编译qt5的交叉编译工具链:
指令如下:
$ cd ~/imx8qm/imx-4.14.98-2.0.0_ga //进入工程目录
$ source setup-environment build-xwayland-imx8qmmek-xen //加载编译环境
$ bitbake meta-toolchain-qt5 // 生成带有qt5的交叉编译工具链
编译完成后会在~/imx8qm/imx-4.14.98-2.0.0_ga/build-xwayland-imx8qmmek-xen/tmp/deploy/sdk目录下生成文件fsl-imx-xwayland-glibc-x86_64-meta-toolchain-qt5-aarch64-toolchain-4.14-sumo.sh。执行如下命令安装qt5的交叉编译工具链:
$ cd ~/imx8qm/imx-4.14.98-2.0.0_ga/build-xwayland-imx8qmmek-xen/tmp/deploy/sdk
$ ./ fsl-imx-xwayland-glibc-x86_64-meta-toolchain-qt5-aarch64-toolchain-4.14-sumo.sh
一般选择默认设置,最终将在/opt/fsl-imx-xwayland/4.14-sumo目录下生成我们所需要的工具链。

如果编译普通linux程序 source environment-setup-aarch64-poky-linux 即可加载交叉编译器需要用的环境,$(CC) 便可以使用交叉编译器编译。详细请参考environment-setup-aarch64-poky-linux脚本原文:
在这里插入图片描述

需要编译QT5程序,可根据自己需求安装qt-creator,并在creator中配置qmake跟gcc即可。
QT Create 构建和运行配置如下:
qmake添加:
在这里插入图片描述

GCC 和G++添加

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值