i.MX Yocto项目用户指南 – 下
5映像构建
本节提供了构建映像的详细信息和过程。
5.1构建配置
i. MX提供了一个脚本fsl-setup-release.sh,它简化了i.MX机器的设置。要使用该脚本,需要指定要为其生成的特定计算机的名称以及所需的图形化后端。该脚本为指定的计算机和后端设置目录和配置文件。
在meta-fsl-bsp-release层中,i.MX提供了覆盖metafreescale机器配置的新的或更新的机器配置。fsl-setup-release.sh脚本将这些文件复制到meta-freescale/conf/machine目录中。以下是可以选择的i.MX机器配置文件。检查最新添加的发行说明或计算机目录。
imx6qpsabreauto
imx6qpsabresd
imx6ulevk
imx6ulz14x14evk
imx6ull14x14evk
imx6ull9x9evk
imx6dlsabreauto
imx6dlsabresd
imx6qsabreauto
imx6qsabresd
imx6slevk
imx6solosabreauto
imx6solosabresd
imx6sxsabresd
imx6sxsabreauto
imx6sllevk
imx7dsabresd
imx7ulpevk
imx8qmmek
imx8qxpmek
imx8mqevk
imx8mmevk
每个生成文件夹的配置方式必须确保它们只使用一个发行版。每次更改变量DISTRO_FEATURES时,都需要一个干净的构建文件夹。每个图形后端帧缓冲区、Wayland、XWayland和X11都有一个发行版配置。如果没有指定发行版文件,xwayland发行版将被设置为默认。版本配置保存在Distro设置的local.conf中,在bitbake运行时显示。在过去的版本中,我们在layer.conf中使用了poky发行版和定制的版本和提供者,但是定制发行版是更好的解决方案。使用默认poky发行版时,将使用默认社区配置。作为一个i.MX版本,我们更希望拥有一组NXP支持并已经测试过的配置。
以下是发行版配置列表。请注意,DirectFB不再受支持,fsl-imx-wayland和fsl-imx-fb在i.MX 8上不被支持。
fsl-imx-x11 - X11图形不支持在i.MX 8.
fsl-imx-wayland - Wayland weston graphics.
fsl-imx-xwayland - Wayland图形和X11。不支持使用EGL的X11应用程序.
fsl-imx-fb - 帧缓冲图形-没有X11或Wayland。在i.MX 8上不支持帧缓冲区.
欢迎用户基于其中之一创建自己的发行版文件,以自定义其环境,而无需更新local.conf以设置首选版本和提供程序。
fsl-setup-release.sh脚本的语法如下所示。
$ DISTRO=<distro name> MACHINE=<machine name> source fsl-setup-release.sh -b <build dir>
DISTRO=是配置构建环境的发行版,它存储在meta-fslbsp-
release/imx/meta-sdk/conf/distro中。
映像构建
MACHINE=<MACHINE configuration name>是指向meta-freescale and meta-fsl-bsp-release中conf/machine中的配置文件的机器名。
-b<build dir>指定由fsl-setup-release.sh脚本创建的生成目录的名称。
当脚本运行时,它会提示用户接受EULA。一旦接受EULA,接受将存储在每个生成文件夹中的local.conf中,并且不再显示该生成文件夹的EULA接受查询。
脚本运行后,工作目录就是脚本刚刚创建的目录,用-b选项指定。将创建一个conf文件夹,其中包含bblayers.conf和local.conf文件。
/conf/bblayers.conf文件包含i.MX Yocto项目版本中使用的所有metalayers。
local.conf文件包含计算机和发行版规范:
MACHINE ??= 'imx7ulpevk'
DISTRO ?= 'fsl-imx-x11'
ACCEPT_FSL_EULA = "1"
如有必要,可以通过编辑此文件来更改机器配置。
local.conf文件中的ACCEPT_FSL_EULA表示您已经接受了EULA的条件。
在meta-fsl-bsp-release层中,为i.MX 6和i.MX 7机器提供了统一的机器配置(imx6qpdlsolox.conf和imx6ul7d.conf)。i. MX使用这些来构建一个公共映像,将所有设备树放在一个映像中进行测试。
请勿将这些机器用于测试以外的任何用途。
5.2选择i.MX Yocto项目映像
Yocto项目提供了一些可以在不同层上使用的映像。Poky提供了一些映像,meta-freescale和meta-freescale-distro提供了其他映像,meta-fsl-bsp-release层提供了额外的映像配方。下表列出了各种关键映像、它们的内容以及提供映像食谱的层。
表1 i. MX Yocto项目映像
5.3构建映像
Yocto项目构建使用bitbake命令。例如,bitbake构建命名组件。
每个组件构建都有多个任务,例如获取、配置、编译、打包和部署到目标rootfs。Bitbake映像构建按每个任务的依赖关系顺序收集映像所需的所有组件。第一个构建是工具链以及构建组件所需的工具。
以下命令是有关如何构建映像的示例:
$ bitbake fsl-image-validation-imx
5.4 Bitbake选项
用于构建映像的bitbake命令是bitbake 。其他参数可用于下面描述的特定活动。Bitbake为开发单个组件提供了各种有用的选项。要使用bitbake参数运行,命令如下所示:
Bitbake <parameter> <component>
是所需的生成包。
下表提供了一些bitbake选项。
表2 Bitbake选项
Bitbake参数描述
-c fetch如果下载状态没有标记为done,则执行fetch。
-c cleanlall清除整个组件生成目录。生成目录中的所有更改都将丢失。组件的rootfs和状态也被清除。组件也是已从下载目录中删除。
-c deploy将映像或组件部署到rootfs。
-即使发生构建中断,k也会继续构建组件。
-c compile-f不建议直接更改tmp目录下的源代码,但是如果是这样的话,除非使用这个选项,否则Yocto项目可能不会重建它。使用此选项可以在部署映像后强制重新编译。
-g列出图像或组件的依赖树。
-DDD开启调试3级。每个D添加另一个调试级别。
5.5 U-Boot配置
U-Boot配置在主计算机配置文件中定义。该配置通过UBOOT_CONFIG设置指定。这需要在local.conf中设置UBOOT_CONFIG。否则,U-Boot构建默认使用SD boot。
可以通过使用以下命令(将MACHINE更改为正确的目标)分别构建它们。
5.6构建场景
以下是针对各种配置的构建设置场景。
设置清单并使用以下命令填充YOTO项目层源:
$ mkdir imx-yocto-bsp
$ cd imx-yocto-bsp
$ 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
以下各节给出了一些具体的例子。替换指定用于自定义命令的机器名称和后端。
5.6.1 i.MX 6Quad SABRE-SD上X-11的映像
$ DISTRO=fsl-imx-x11 MACHINE=imx6qsabresd source fsl-setup-release.sh -b build-x11
$ bitbake fsl-image-validation-imx
这将构建一个没有qt5的X11映像。要使用qt5构建,请使用fsl-image-qt5-validation-imx。
5.6.2 i.MX 6Quaddlus SABRE-AI上的帧缓冲映像
$ DISTRO=fsl-imx-fb MACHINE=imx6qpsabreauto source fsl-setup-release.sh –b build-fb
$ bitbake fsl-image-qt5-validation-imx
这将在帧缓冲区后端构建qt5。要构建不使用qt5,请使用fsl-image-validation-imx。
5.6.3 i.MX 8QuadXPlus MEK上的XWayland图像
$ DISTRO=fsl-imx-xwayland MACHINE=imx8qxpmek source fsl-setup-release.sh -b build-xwayland
$ bitbake fsl-image-qt5-validation-imx
这将使用qt5构建XWayland图像。要构建不使用qt5,请使用fsl-image-validation-imx。
5.6.4 i.MX 8M Quad EVK上Wayland映像
$ DISTRO=fsl-imx-wayland MACHINE=imx8mqevk source fsl-setup-release.sh -b build-wayland
$ bitbake fsl-image-qt5-validation-imx x
这将构建一个QT5 Weston Wayland图像。要构建不使用qt5,请使用fsl-image-validation-imx。
5.6.5重新启动构建环境
如果在设置了生成目录后打开了新的终端窗口或重新启动计算机,则应使用安装环境脚本设置环境变量并再次运行生成。不需要完整的fsl-setup-release.sh。
$ source setup-environment <build-dir>
5.6.6 X11、XWayland和Wayland上的Chromium浏览器
Yocto项目社区有用于X11、XWayland和Wayland版本Chromium浏览器与GPU硬件的i.MX SoC。请注意,NXP不支持或测试来自社区的补丁。本节介绍如何将铬集成到rootfs中,并启用WebGL的硬件加速渲染。Chromium浏览器需要自动添加到fsl-release-setup.sh脚本中的其他层,例如元浏览器。
在local.conf中,您可以执行以下操作:
对于带GPU 的MX6上X11,将Chromium添加到映像中。
CORE_IMAGE_EXTRA_INSTALL += "chromium-x11"
对于XWayland或Wayland,在您的映像中添加Chromium。
CORE_IMAGE_EXTRA_INSTALL += "chromium-ozone-wayland"
5.6.7 Qt 5和QtWebEngine浏览器
qt5既有商业许可证,也有开源许可证。在Yocto项目中构建时,默认为开放源代码许可证。确保了解这些许可证之间的差异,并适当选择。在开源许可证上启动自定义Qt5开发之后,它不能与商业许可证一起使用。与法律人员了解这些许可证之间的差异。
有四个Qt5浏览器可用。QtWebEngine浏览器可在以下位置找到:
/usr/share/qt5/examples/webenginewidgets/StyleSheetbrowser
/usr/share/qt5/examples/webenginewidgets/Simplebrowser
/usr/share/qt5/examples/webenginewidgets/Cookiebrowser
/usr/share/qt5/examples/webengine/quicknanobrowser
所有三个浏览器都可以通过访问上面的目录并运行在那里找到的可执行文件来运行。可以通过将参数-plugin evdevtouch:/dev/input/event0添加到可执行文件中来启用触摸屏。X11发行版的显示变量可能需要在环境中设置,然后才能开始:
export DISPLAY=:0.0
命令行可能看起来像以下其中之一:
./quicknanobrowser -plugin evdevtouch:/dev/input/event0
QtWebengine只在带GPU图形硬件的SoC上工作,在i.MX 6、i.MX 7和i.MX 8上。
要在映像中包含Qtwebengine,请将以下内容放入local.conf或image recipe中。
IMAGE_INSTALL_append = "packagegroup-qt5-webengine"
5.6.8 Systemd
Systemd已启用为默认初始化管理器。要禁用systemd作为默认设置,请转到fsl-imx-preferred-env.inc,并注释systemd部分。
5.6.9多库启用
对于i.mx8,可以使用multilib配置支持在64位操作系统上构建32位应用程序。Multilib提供了构建具有不同目标优化或架构格式的库的能力,并将它们合并到一个系统映像中。通过向您的local.conf文件。MULTILIBS声明通常是lib32或lib64,需要在MULTILIB_GLOBAL_VARIANTS变量中定义,如下所示。
MULTILIBS = "multilib:lib32"
DEFAULTTUNE必须是此可选库类型的AVAILTUNES值之一,如下所示。
DEFAULTTUNE_virtclass-multilib-lib32 = "armv7athf-neon"
映像安装将添加到映像中,特定应用程序所需的32位库如下所示:
IMAGE_INSTALL_append += "lib32-bash"
对于i.mx8,构建32位应用程序支持需要local.conf中的以下语句。此配置将64位计算机指定为主机类型并添加multilib:lib32,其中这些库使用“armv7athf-neon”调优编译,然后将lib32-packages包含到所有映像中。
MACHINE = imx8mqevk
#定义多库目标
需要conf/multilib.conf
MULTILIBS = "multilib:lib32"
DEFAULTTUNE_virtclass-multilib-lib32 = "armv7athf-neon"
#将multilib包添加到映像
IMAGE_INSTALL_append = "lib32-glibc lib32-libgcc lib32-libstdc++"
5.6.10 OP-TEE启用
OP-TEE需要三个组件:optee_os, optee-client, and optee-test。另外,内核和U-Boot都有配置。optee_os驻留在引导加载程序中,而OP-TEE客户端和测试驻留在rootfs中。
OP-TEE在此版本中默认启用。要禁用OP-TEE,请转到meta-fsl-bsp-release/imx/meta-bsp/conf/layer.conf文件,注释掉OP-TEE的DISTRO_FEATURES_append并取消注释删除的行。
5.6.11 编译Xen
Xen项目在i.MX 8QuadMax/QuadXPlus板上受支持,提供的服务允许多个操作系统在具有硬件虚拟化功能的同一硬件上执行。
要启用Xen构建,请将以下命令行添加到local.conf:
DISTRO_FEATURES_append = " xen"
要引导两个Yocto操作系统,请在SD卡上创建三个分区(不小于16GB)。第一个分区是FAT,用于保存Xen、image和fsl-imx8qm-mek-dom0.dtb。第二和第三个分区用于保存Yocto rootfs。
在U-Boot阶段:
要从SD卡引导,请运行xenmmcboot。
要从网络引导,请运行xennetboot。
启动第一个Linux操作系统后,请执行以下步骤:
1将映像和fsl-imx8qm-mek-domu.dtb复制到/home/root/xen。
2创建一个名为domu.cfg的新文件。然后,运行xl 创建 domu.cfg。
3使用xl list查看正在运行的域。
4使用xl控制台DomU连接到DomU的控制台。
5按ctrl+]退出DomU控制台。
有关Xen xl的详细用法,请参阅https://xenbits.xen.org/docs/unstable/man/xl.cfg.5.html.
5.6.12构建Jailhouse
Jailhouse是一个基于Linux操作系统的静态分区管理程序。它在i.MX 8M Quad EVK and i.MX 8M Mini EVK板上受支持。
要启用Jailhouse build,请将以下行添加到local.conf:
DISTRO_FEATURES_append = " jailhouse"
在U-Boot中,运行run jh_netboot
或 jh_mmcboot
。它加载专用DTB供Jailhouse使用。以i.MX 8M Quad为例,Linux操作系统启动后:
#insmod jailhouse.ko
#./jailhouse enable imx8mq.cell
有关i.MX 8上的Jailhouse的更多详细信息,请参阅i.MX Linux?用户指南(IMXLUG)。
6映像部署
生成完成后,创建的映像驻留在/tmp/deploy/images中。在大多数情况下,映像特定于环境设置中的机器集。每个映像构建都会创建一个U-Boot、一个内核和一个基于机器配置文件中定义的image_fstype的映像类型。大多数机器配置都提供SD卡片映像(.sdcard),一个ext3和tar.bz2。ext3仅是根文件系统。.sdcard映像包含U-Boot、内核和rootfs,它们已经完全设置好,可以在SD卡上使用。
6.1 Flashing an SD card映像
SD卡映像提供了使用U-boot和内核引导的完整系统。要刷新SD卡映像,请运行以下命令
命令:
$ bunzip2 -dk -f <image_name>.sdcard.bz2
$ sudo dd if=<image name>.sdcard of=/dev/sd<partition> bs=1M conv=fsync
有关闪存的更多信息,请参阅i.MX Linux?用户指南(IMXLUG)中的“准备要引导的SD/MMC卡”部分。
7定制
在i.MX Linux操作系统上有三种场景可供构建和自定义:
构建i.MX Yocto项目BSP并在i.MX参考板上验证。本文档中的说明详细描述了此方法。
定制内核和创建一个自定义板和设备树与内核和U-Boot。有关如何在Yocto项目构建环境之外构建SDK和设置主机以仅构建内核和U-Boot的更多详细信息,请参阅i.MX用户指南(IMXLUG)中的第4.5.12章“如何在独立环境中构建U-Boot和内核”。
通过创建一个自定义的Yocto项目层,从为i.MX Linux版本提供的BSP中添加或删除包来定制发行版。i. MX提供了多个演示示例,展示了在i.MX BSP发行版上使用AGL、Genivi、IOT Gateway和XBMC在codearora论坛的i.mxgit存储库上的自定义层。本文档的其余部分提供了创建自定义发行版和主板配置的说明。
7.1创建自定义发行版
自定义发行版可以配置自定义构建环境。发布的发行版文件fsl-imx-x11、fsl-imx-wayland、fslimx-xwayland和fsl-imx-fb都显示了特定图形后端的配置。发行版还可以用于配置其他参数,如kernel、uboot和gstreamer。i.MX发行版文件被设置为创建自定义构建测试我们的i.MX Linux OS BSP版本所需的环境。
建议每个客户创建自己的发行版文件,并使用该文件为其构建环境设置提供程序、版本和自定义配置。发行版是通过复制现有发行版文件,或者包括poky.conf文件和添加其他更改来创建的,或者包括一个i.MX发行版,并以此作为起点。
7.2创建自定义板配置
正在开发参考板的供应商可能希望将他们的板添加到FSL Community BSP。有了FSL Community BSP支持的新机器,可以很容易地与社区共享源代码,并允许来自社区的反馈。
Yocto项目使创建和共享新的基于i.MX的板的BSP变得更加容易。当Linux操作系统内核和引导加载程序正在为该机器工作和测试时,应该启动升级过程。在机器配置文件中,必须有一个稳定的Linux内核和引导加载程序(例如U-Boot),作为该计算机的默认内核和引导程序,这是非常重要的。
另一个重要步骤是确定新机器的维护人员。维护人员负责使主包集在该板上工作。机器维护人员应该更新内核和引导加载程序,并为该机器测试用户空间包。有关机器维护者角色的更多信息,请参见FSL Community BSP Release Notes 2.4文档。
所需步骤如下所示。
1根据需要自定义内核配置文件。内核配置文件位于arch/arm/configs中,供应商内核配方应该自定义通过内核配方加载的版本。
2根据需要定制U-Boot。有关此问题的详细信息,请参阅i.MX BSP移植指南(IMXBSPG)。
3指派某人担任单板的维护人员。此人员确保文件根据需要更新,以便构建始终有效。有关详细信息,请参阅FSL社区BSP发行说明2.4文档。
4按照YOTO项目社区说明中的说明设置YOTO项目构建,如下所示。使用社区主分支。
a.根据主机Linux OS发行版,从Yocto项目快速启动下载所需的主机包。
b.使用以下命令下载repo:
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
C.创建一个目录,以将所有内容保存在其中。可以使用任何目录名。本文档使用fslcommunity-bsp。
$ mkdir fsl-community-bsp
d. $ cd fsl-community-bsp
e.使用存储库的主分支初始化repo。
$ repo init -u https://github.com/Freescale/fsl-community-bsp-platform -b master
f.获取将用于构建的配方。
$ repo sync
g.设置环境:
$ source setup-environment build
5在fsl社区fsl-community-bsp/sources/meta-freescale-3rdparty/conf/machine中选择类似的计算机文件,并使用指示您的板的名称复制它。编辑新的板文件,并包含有关您的板的信息。至少更改名称和描述。添加MACHINE_FEATURE. www.yoctoproject.org/docs/2.1/ref-manual/ref-manual.html#reffeatures-machine。
6使用最新的社区主分支测试您的更改,确保所有内容都正常工作。至少使用coreimage-
minimal。
$ bitbake core-image-minimal
7准备补丁。遵循“样式”指南www.openembedded.org/wiki/Styleguide and git.yoctoproject.org/cgit/cgit.cgi/meta-freescale/tree/README,标题为“贡献”。
8上游进入meta-freescale-3rdparty。向上游发送补丁到meta-freescale@yoctoproject.org.
附录A常见问题
A、 1快速启动
本节总结了如何在Linux机器上设置Yocto项目并构建映像。详细说明见上面的章节。
安装repo
utility:
要获得BSP,您需要安装“repo”。这只需要做一次。
$: mkdir ~/bin
$: curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$: chmod a+x ~/bin/repo
$: PATH=${PATH}:~/bin
下载BSP YOTO项目环境。
使用正确的名称来获得repo init的-b选项中所需的版本。这需要为每个版本执行一次,并为第一步中创建的目录设置分发。可以运行repo sync,以将源下的配方更新到最新版本。
$: mkdir imx-yocto-bsp
$: cd imx-yocto-bsp
$: 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
注意:
https://source.codeaurora.org/external/imx/imx-manifest/tree/?h=imx-linux-sumo 提供了这个版本中支持的所有清单文件的列表。
不支持特定后端MX8帧缓冲区和X11发行版的设置。仅用于MX6和MX7 SoC。
X11的设置
$: DISTRO=fsl-imx-X11 MACHINE=<machine name> source fsl-setup-release.sh -b build-x11
FB设置
$: DISTRO=fsl-imx-fb MACHINE=<machine name> source fsl-setup-release.sh -b build-fb
Wayland设置
$: DISTRO=fsl-imx-wayland MACHINE=<machine name> source fsl-setup-release.sh -b build-wayland
XWayland的设置
$: DISTRO=fsl-imx-xwayland MACHINE=<machine name> source fsl-setup-release.sh -b buildxwayland
为所有后端构建
不带Qt的构建
$: bitbake fsl-image-validation-imx
使用Qt 5构建
$: bitbake fsl-image-qt5-validation-imx
A.2本地配置调整
一个Yocto项目构建在时间和磁盘使用上都会占用大量的构建资源,尤其是在多个构建目录中构建时。有一些方法可以对此进行优化,例如,使用共享sstate缓存(缓存生成的状态)和downloads目录(保存下载的包)。通过添加如下语句,可以将它们设置在local.conf文件中的任何位置:
DL_DIR="/opt/freescale/yocto/imx/download"
SSTATE_DIR="/opt/freescale/yocto/imx/sstate-cache"
目录必须已经存在并且具有适当的权限。当设置了多个构建目录时,shared sstate会有所帮助,每个目录都使用一个共享缓存来最小化构建时间。共享下载目录使获取时间最小化。如果没有这些设置,Yocto项目默认为sstate缓存和下载的build目录。
在DL_DIR目录中下载的每个包都用标记。如果您的网络在获取包时遇到问题,您可以手动将包的备份版本复制到DL_DIR目录,并使用touch命令创建<package_name>.done文件。然后运行bitbake命令:bitbake 。
有关更多信息,请参阅Yocto项目参考手册。
A.3配方
每个组件都是通过使用一个配方来构建的。对于新组件,必须创建一个菜谱来指向源(SRC_URI)并指定补丁(如果适用)。Yocto项目环境从配方中SRC_URI指定位置的makefile构建。当从自动工具建立构建时,配方应该继承autotools 和 pkgconfig。
Makefiles必须允许CC被交叉编译工具覆盖,以获得使用Yocto项目生成的包。
有些组件有配方,但需要额外的补丁或更新。这可以通过使用bbappend配方来实现。这将附加到有关已更新源的现有配方详细信息。例如,包含新补丁程序的bbappend配方应包含以下内容:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += file://<patch name>.patch
FILESEXTRAPATHS_prepend告诉Yocto Project在列出的目录中查找SRC_URI中列出的补丁程序。
注意
如果没有选取bbappend配方,请查看工作文件夹下的fetch日志文件(log.do_fetch),以检查是否包含相关补丁程序。有时,使用配方的git版本,而不是bbappend文件中的版本。
A.4如何选择附加包
如果提供了一个包的配方,那么可以将其他包添加到映像中。社区提供的食谱的可搜索列表可以在layers.openembedded.org/上找到。您可以搜索查看应用程序是否已经有Yocto项目配方,并找到从何处下载它。
A.4.1更新映像
映像是一组包和环境配置。
映像文件(如fsl-image-gui.bb)定义了文件系统中的包。根文件系统、内核、模块和U-Boot二进制文件在build/tmp/deploy/images/中可用。
注意
您可以构建包而不将其包含在映像中,但是如果希望将包自动安装在rootfs上,则必须重新构建映像。
A.4.2包组
包组是可以包含在任何映像中的一组包。
包组可以包含一组包。例如,多媒体任务可以根据机器确定是否构建VPU包,因此可以针对BSP支持的每个板自动选择多媒体包,并且映像中仅包括多媒体包。
可以通过在/local.conf中添加以下行来安装其他软件包。
CORE_IMAGE_EXTRA_INSTALL += "<package_name1 package_name2>"
有许多包组。它们位于名为"packagegroup" 或 "packagegroups"的子目录中。
A.4.3首选版本
首选版本用于指定用于特定成分的配方的首选版本。一个组件可能在不同的层中有多个配方,首选版本指向要使用的特定版本。
在meta-fsl-bsp-release层的layer.conf中,为所有配方设置了首选版本,以便为生产环境提供静态系统。这些首选版本设置用于正式的i.MX版本,但对于未来的开发不是必需的。
当以前的版本可能会导致对应该使用哪种配方的混淆时,首选版本也会有所帮助。例如,以前的imx-test and imx-lib配方使用了一年一个月的版本控制,该版本控制已更改为版本控制。
如果没有首选版本,可能会选择旧版本。除非设置了首选版本,否则具有git版本的菜谱通常会选择其他菜谱。要设置首选版本,请将以下内容放在local.conf中。
PREFERRED_VERSION_<component>_<soc family> = "<version>"
例如,imx-lib将是:
PREFERRED_VERSION_imx-lib_mx6 = “”
有关使用首选版本的更多信息,请参阅Yocto项目手册。
A.4.4首选供应商
首选提供程序用于指定特定组件的首选提供程序。一个组件可以有多个提供者。例如,Linux内核可以由i.MX或kernel.org提供,首选提供者声明要使用的提供者。例如,U-Boot由社区通过denx.de和i.MX提供。社区提供程序由uboot-fslc指定。i.MX提供程序是由u-boot-imx指定的。要说明首选提供程序,请在local.conf中输入以下内容:
PREFERRED_PROVIDER_<component>_<soc family> = "<provider>"
PREFERRED_PROVIDER_u-boot_mx6 = "u-boot-imx"
A.4.5 SoC系列
SoC系列记录了适用于一组特定系统芯片的一类变化。在每个机器配置文件中,列出了具有特定SoC系列的机器。例如,i.MX 6DualLite Sabre SD列在i.MX 6和i.MX 6DualLite SoC系列下。i. MX 6Solo Sabre auto列在i.MX 6和i.MX 6Solo SoC系列下。某些更改可以针对local.conf中的特定SoC系列,以覆盖机器配置文件中的更改。下面是对mx6dlsabresd内核设置进行更改的示例。
KERNEL_DEVICETREE_mx6dl = "imx6dl-sabresd.dts"
SoC系列在进行仅针对一类硬件的更改时非常有用。例如,i.MX 28 EVK没有视频处理单元(VPU),因此VPU的所有设置都应使用i.MX 5或i.MX 6,以特定于正确的芯片类别。
A.4.6 Bitbake日志
Bitbake将构建和打包过程记录在tmp/work///temp的temp目录中。
如果组件无法获取包,则显示错误的日志位于log.do_fetch文件中。
如果组件未能编译,则显示错误的日志位于log.do_compile文件中。有时组件不会按预期部署。检查build component目录下的目录(tmp/work//)。检查每个配方的package、packages-split和sysroot*目录,以查看文件是否放置在那里(在复制到deploy目录之前,这些文件处于暂存位置)。
附录B参考文献
有关引导开关的详细信息,请参阅i.MX Linux用户指南(IMXLUG)中的“如何引导i.MX板”一节。
有关如何使用U-Boot下载映像,请参阅i.MX Linux用户指南(IMXLUG)中的“使用U-Boot下载映像”一节。
有关如何设置SD/MMC卡的信息,请参阅i.MX Linux用户指南(IMXLUG)中的“准备要引导的SD/MMC卡”一节。