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

news/2025/2/16 1:40:40/

系统环境选择为考虑到编译环境的备份,方便移植等因素。我使用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-x11fsl-imx-waylandfsl-imx-xwaylandfsl-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++添加

在这里插入图片描述

在这里插入图片描述


http://www.ppmy.cn/news/867382.html

相关文章

Serv-U数据库用户

安装环境: ODBC 32位,5.3unicodeServ-U Windows-v15.1.2MySql 5.7.21(WAMP安装)操作系统 Windows 10 / Windows Server 2008ODBC介绍: 开放数据库连接(Open Database Connectivity&…

状态机 | 如何从零开始构建一个QM项目

关注、星标公众号,直达精彩内容 来源:技术让梦想更伟大 作者:李肖遥 QM简介以及打开方式 QM建模工具可用于两种操作模式:交互式GUI模式和命令行模式。同时也支持windows、Linux、MaxOS操作系统上运行,其两种操作模式都是一样的,我将在windows上演示。 windows上运行QM直接…

imx8qm Linux L4.9.51 BETA2源码下载及编译环境搭建

1.编译配置 $ DISTRO<distro name> MACHINE<machine name> source fsl-setup-release.sh -b <build dir> DISTRO如下&#xff1a; MACHINEimx8qmmek -b imx8-build编译生成文件路径 $ DISTROfsl-imx-x11 MACHINEimx8qmmek source ./fsl-setup-release.sh -b…

intel笔记本cpu型号后缀详解(M,U,QM,MQ,HQ,XM)

M&#xff1a;笔记本专用CPU&#xff0c;一般为双核&#xff0c;M前面一位数字是0&#xff0c;意味着是标准电压处理器&#xff0c;如果是7&#xff0c;则是低电压处理器。 U&#xff1a;笔记本专用低电压CPU&#xff0c;一般为双核&#xff0c;U前面一位数字为8&#xff0c;则…

华硕 ASUS QM1 电脑棒安装 Ubuntu Linux 系统

最近买了一个华硕 QM1 电脑棒, 预装的是 win8 home 版本, 用起来不爽正好需要一个 Linux 测试环境, 于是动手改造一番 在网上找注意事项, 但是找了半天都没有找到一个介绍怎么安装系统, 其他文章也很少涉及, 估计QM1销量不怎样吧 首先百度得知 QM1 信息: QM1 CPU x64 的 Boot M…

imx8qm HDMI-TX调试

HDMI 参考资料 chipset: DS90UB929-Q1iMX8M HDMIHDMI之HPDLinux/DS90UB929-Q1: DS90UB929 HDMI HPD signal is always low HDMI PIN 无引脚复用 驱动信息 HDP HDMI DisplayPort/home/zengjf/imx8src/imx8qm_android/p9.0.0.0/vendor/nxp-opensource/kernel_imx/drivers…

imx8qm android8.1.0源码下载教程

1.env config $ sudo apt-get install uuid uuid-dev zlib1g-dev liblz-dev liblzo2-2 liblzo2-dev lzop git-core curl u-boot-tools mtd-utils android-tools-fsutils openjdk-8-jdk device-tree-compiler gdisk 2.修改repo (1).按照官方Users Guider里面步骤如下操作&#x…

imx8qm xen 虚拟网卡

几经周折,终于可以在这里写下这篇文章,记录一下在imx8qm中使用xen启动Linux和Android系统,并使用网络进行通信,参考了下面这篇文章https://blog.csdn.net/u011784994/article/details/106767143 在参考的这篇文章中,我按照他的步骤完成linux网络的配置,他在配置Android网络的时…