Working With Yocto To Build Linux - Embedded Artists

Transcription

Working with Yocto to Build LinuxCopyright 2021 Embedded Artists ABWorking with Yoctoto Build Linux

Working With Yocto to Build LinuxPage 2Embedded Artists ABRundelsgatan 14SE-211 36 t 2021 Embedded Artists AB. All rights reserved.No part of this publication may be reproduced, transmitted, transcribed, stored in a retrieval system, ortranslated into any language or computer language, in any form or by any means, electronic,mechanical, magnetic, optical, chemical, manual or otherwise, without the prior written permission ofEmbedded Artists AB.DisclaimerEmbedded Artists AB makes no representation or warranties with respect to the contents hereof andspecifically disclaim any implied warranties or merchantability or fitness for any particular purpose.Information in this publication is subject to change without notice and does not represent acommitment on the part of Embedded Artists AB.FeedbackWe appreciate any feedback you may have for improvements on this document. Send your commentsby using the contact form: www.embeddedartists.com/contact.TrademarksAll brand and product names mentioned herein are trademarks, services marks, registeredtrademarks, or registered service marks of their respective owners and should be treated as such.Copyright 2021 Embedded Artists ABRev V

Working With Yocto to Build LinuxPage 3Table of Contents1 Document Revision History . 62 Introduction . 82.1Conventions. 83 Linux Host Setup . 93.1Introduction . 93.2Required Packages . 93.3Install the repo tool . 93.4Download Yocto recipes . 104 Building Images . 114.1Available Images . 114.2Machine Configurations. 114.3Initialize Build . 124.3.1Distro configurations . 124.3.2Restart a Build . 124.4Starting the Build . 134.5Bitbake Options . 134.5.1Clean Build for a Specific Image/Recipe . 134.5.2Kernel Configuration . 134.5.3Show Yocto Layer Append Dependencies . 135 Deploying Images . 145.1Download the Tool . 145.1.2Prepare hardware . 145.1.3OTG boot mode – J2 jumper . 155.1.4OTG boot mode – DIP switches . 155.1.5Configurations . 165.1.6Download Your Own Images . 175.1.7Run the Tool . 175.2UUU . 185.2.1Download the Tool . 185.2.2Prepare hardware . 185.2.3OTG boot mode – J2 jumper . 185.2.4OTG boot mode – DIP switches . 185.2.5Configurations . 185.2.6Download Your Own Images . 195.2.7Run the Tool in Ubuntu. 195.2.8Run the Tool in Windows. 205.2.9Troubleshoot . 205.35.3.1Copyright 2021 Embedded Artists ABManufacturing Tool . 145.1.1From within u-boot . 22Find the USB Memory Stick . 22Rev V

Working With Yocto to Build LinuxPage 45.3.25.4Load the Root File System . 23From within Linux . 235.4.1Kernel image and dtb files . 236 Extend Image with Additional Functionality . 256.1Image Features . 256.2Additional Packages . 257 Lubuntu Virtual Machine Setup . 267.1VMware Workstation Player . 267.2Download Installation Media . 267.3Creating the VMware Virtual Machine . 268 Yocto Images. 418.1meta-toolchain . 419 Customization . 429.1Create a layer . 429.2Create a recipe. 439.3Add content or change behavior of existing recipe . 4510 Miscellaneous . 4610.1Root file system on SD card . 4610.2Build Linux kernel from source code . 4710.3Build u-boot from source code . 4810.3.1Extra steps for iMX8 . 4910.4Use devtool to build Linux / u-boot. 5010.5State and download cache in Yocto . 5111 Frequently Asked Questions . 52Copyright 2021 Embedded Artists AB11.1I want to add package XYZ – how do I do this? . 5211.2Which packages are included in my build? . 5211.3Which recipe generated a specific package? . 5211.4Which recipe generated a specific file on the file system? . 5211.5How do I add my own files to the file system? . 5211.6How do I install my own application to the file system? . 5311.7Where are the repositories? . 5311.7.1meta-ea . 5311.7.2Linux kernel . 5411.7.3U-boot bootloader . 5411.8How do I use my own Linux kernel? . 5511.9How do I use my own u-boot?. 5511.10Should I use my own repo manifest and Yocto layer?. 5511.11How can I reduce the build time? . 5511.12Where is the package manager? . 55Rev V

Working With Yocto to Build LinuxPage 511.13Copyright 2021 Embedded Artists ABWhich version of Yocto am I using? . 55Rev V

Working With Yocto to Build LinuxPage 61 Document Revision HistoryRevisionDateDescriptionA2015-09-30First releaseB2015-11-12- Added instructions for iMX6 UltraLite COM Board- Added Section 5.4C2016-01-12- Updated Table 1 with information about new 3.14.52 branch- Updated section 4.3 with new instructionsD2016-02-15- Updated section 5.1E2016-04-06- Added new machine configuration for iMX7 Dual uCOM Board insection 4.2F2016-04-21- Added new machine configuration for iMX6 DualLite COM Board insection 4.2G2016-08-30- Added new machine configuration for iMX7 Dual COM Board insection 4.2H2016-10-20- Linux 4.1.15 is now supported. Removed description of working with3.14.28.I2016-12-21- Added section 8.1 describing how to build and use meta-toolchain.- Added section 10.1 describing how to put the root file system on anSD cardJ2017-05-19- Updated section 3.4 – New distribution is now available. Linuxversion is still 4.1.15. U-boot has been updated to 2016.03.K2018-01-29- Removed chapter ”Ubuntu 14.04 Virtual Machine” since it is outdated. Use instructions in chapter 7 instead.- Updated section 3.4 with 4.9.11 branch (Linux kernel 4.9.11 is nowsupported)- Updated section 8.1- Added sections 10.2 and 10.3L2018-11-20- Linux 4.9.123 and u-boot 2017.03 now supported on ea-yocto-basebranch ea-4.9.123. Section 3.4 updated.M2019-02-06- Linux 4.14.78 and u-boot 2018.03 now supported on ea-yocto-basebranch ea-4.14.78. Added ea-image-base. Sections 2, 3.4, 4.1, 5.1.3updated.N2019-05-03- Added section about uuu (intro in section 5 new section 5.2)O2019-05-08- Added information about iMX8M Quad COMP2019-10-04- Added information about iMX8M Mini uCOM and iMX7ULP uCOMQ2019-11-14- Corrected GCC version command- Added section 9.3.1 about iMX8 and u-boot- Updated example paths to match latest u-boot/Linux branchesR2020-05-06- Added information about iMX8M Nano uCOM- Added chapter 9 about how to customize Yocto- Added section 10.4 about how to use devtool- Added section 10.5 about how to use caching to reduce build times.Copyright 2021 Embedded Artists ABRev V

Working With Yocto to Build LinuxPage 7- Added chapter 11 – Frequently Asked QuestionsS2020-09-17- Linux 5.4.24 and u-boot 2020.04 now supported on ea-yocto-base.Section 3.4 updated.T2021-01-13- Linux 5.4.47 now supported on ea-yocto-base. Section 3.4 updated.U2021-09-21- Linux 5.10.35 and u-boot 2021.04 now supported on ea-yocto-base.Section 3.4 updated.V2021-12-29- Linux 5.10.72 now supported on ea-yocto-base. Section 3.4updated.Copyright 2021 Embedded Artists ABRev V

Working With Yocto to Build LinuxPage 82 IntroductionThis document provides you with step-by-step instructions to setup the Yocto build system, build bootloaders, Linux kernel and file system for the Embedded Artists i.MX6, i.MX7, and i.MX8 based COMboards.Additional documentation you might need is.2.1 NXP Yocto Project User’s Guide – The document is available in the Linux bundle found at thesoftware and tools section on NXP’s website. The Getting Started document for the board you are using. Yocto project overview - https://www.yoctoproject.org/software-overview/ Yocto Project Quick Start Yocto Project Reference Manual Yocto Training – Instructions for using Yocto at the NXP community site Bitbake Cheat Sheet: https://elinux.org/Bitbake Cheat SheetConventionsA number of conventions have been used throughout to help the reader better understand the contentof the document.Constant width text – is used for file system paths and command, utility and tool names. This field illustrates user input in a terminal running on thedevelopment workstation, i.e., on the workstation where you edit,configure and build Linux# This field illustrates user input on the target hardware, i.e.,input given to the terminal attached to the COM BoardThis field is used to illustrate example code or excerp t from adocument.Copyright 2021 Embedded Artists ABRev V

Working With Yocto to Build LinuxPage 93 Linux Host Setup3.1IntroductionThe Yocto build system requires a Linux host machine. You can either run this host as a standalone /native computer or as a virtual machine on, for example, a Microsoft Windows PC. The minimumavailable hard disk space is 50 GB, but it is recommended that the host machine has at least 120 GBto be able to build the largest image / distribution.Several Linux distributions are supported by the Yocto project. Please refer to the Supported LinuxDistributions section in the Yocto reference manual for a complete list.The instructions in this document have been tested on an Ubuntu 14.04 and a Lubuntu 14.04distribution. 3.2Chapter 7 describes how to install and setup Lubuntu 14.04 as a virtual machine. A VMWareappliance is not downloaded in this case. Instead an ISO image of Lubuntu is downloadedand installed into a newly created virtual machine.Required PackagesThe Yocto Project requires several packages to be installed on the host machine. If you are using anyof the distributions in section 3.1 follow the instructions below. If you, however, are using anotherdistribution refer to the Required Packages for the Host Development System section in the Yoctoreference manual. sudo apt-get install gawk wget git-core diffstat unzip texinfogcc-multilib build-essential chrpath socat sudo apt-get install libsdl1.2-dev xterm sed cvs subversioncoreutils texi2html docbook-utils python-pysqlite2 help2man makegcc g desktop-file-utils libgl1-mesa-dev libglu1-mesa-devmercurial autoconf automake groff curl lzop asciidoc sudo apt-get install u-boot-tools3.3Install the repo toolThe repo tool has been developed to make it easier to manage multiple Git repositories. Instead ofdownloading each repository separately the repo tool can download all with one instruction.Download and install the tool by following the instructions below.1. Create a directory for the tool. The example below creates a directory named bin in yourhome folder. mkdir /bin2. Download the tool curl wnloads/repo /bin/repo3. Make the tool executable chmod a x /bin/repoCopyright 2021 Embedded Artists ABRev V

Working With Yocto to Build LinuxPage 104. Add the directory to the PATH variable. The line below could be added to your .bashrc file sothe path is available in each started shell/terminal export PATH /bin: PATH3.4Download Yocto recipesThe Yocto project consists of many recipes used when building an image. These recipes come fromseveral repositories and the repo tool is used to download these repositories.In step 3 below a branch must be selected of the ea-yocto-base repository. The table below lists theavailable branches.Branch nameDescriptionea-5.10.72u-boot: 2021.04. Linux: 5.10.72.ea-5.10.35u-boot: 2021.04. Linux: 5.10.35.ea-5.4.47u-boot: 2020.04. Linux: 5.4.47.ea-5.4.24u-boot: 2020.04. Linux: 5.4.24.ea-4.14.98u-boot: 2018.03. Linux: 4.14.98.ea-4.14.78u-boot: 2018.03. Linux: 4.14.78.ea-4.9.123u-boot: 2017.03. Linux: 4.9.123.ea-4.9.11 1.0.0u-boot: 2016.03. Linux: 4.9.11.ea-4.1.15 2.0.0u-boot: 2016.03. Linux: 4.1.15.Table 1 - ea-yocto-base branches1. Create a directory for the downloaded files (ea-bsp in the example below) mkdir ea-bsp cd ea-bsp2. Configure Git if you haven’t already done so. Change “Your name” to your actual name and“Your e-mail” to your e-mail address. git config --global user.name "Your name" git config --global user.email "Your e-mail"3. Initialize repo. The file containing all needed repositories is downloaded in this step. Change selected branch to a branch name according to Table 1. repo init -u https://github.com/embeddedartists/ea-yocto-base -b selected branch 4. Start to download files repo syncAll files have now been downloaded into the ea-bsp directory. Most of the files will actually beavailable in the sub-directory called sources.Copyright 2021 Embedded Artists ABRev V

Working With Yocto to Build LinuxPage 114 Building ImagesYocto is using the BitBake tool to generate complete Linux images/distributions, that is, all needed toboot and run a Linux system. This is typically boot loader(s), Linux kernel, and root file system withselected utilities and applications.4.1Available ImagesThe recipes that have been downloaded contain many different images. The table below describe onlya few of the images that are available.Image nameDescriptionea-image-baseOnly available on branch ea-4.14.78 and later. Based oncore-image-base and added packages for peripheral testingand verification. This is Embedded Artists default image andthe one included in the pre-build packages onimx.embeddedartsits.com.core-image-minimalA small image allowing a device to bootcore-image-baseA console only image that fully supports the target devicefsl-image-guiBuild an image with GUI support, but without Qt content.Works with X11, DirectFB, frame buffer and Waylandbackends.fsl-image-qt5Build a Qt5 image. Works with X11, Frame buffer, andWayland backends.fsl-image-mfgtool-initramfsBuild u-boot, kernel and file system that can be used byNXP’s Manufacturing tool.meta-toolchainBuilds an installable toolchain (cross-complier)meta-toolchain-qt5Builds toolchain/SDK for Qt5. Can be used when developingQt5 applications.Usually, the name of the file that defines an image contains the string “image”. You can search forsuch files using the find command. Please note that not all images follow this naming convention.The toolchain images are images that doesn’t contain “image” in the name. cd /ea-bsp/sources find -name *image*.bbAn alternative way to find images is to use the bitbake-layers command. bitbake-layers show-recipes grep image4.2Machine ConfigurationsA machine configuration must be specified before a build can be started.The table below contains the machine configurations available for Embedded Artists boards. It is alsopossible to find the configuration files in the directory a-comCopyright 2021 Embedded Artists ABDescriptionMachine configuration for Embedded Artists iMX6 SoloXRev V

Working With Yocto to Build LinuxPage 12COM Board / Kitimx6qea-comMachine configuration for Embedded Artists iMX6 QuadCOM Board / Kitimx6dlea-comMachine configuration for Embedded Artists iMX6 DualLiteCOM Board / Kitimx6ulea-comMachine configuration for Embedded Artists iMX6 UltraLiteCOM Board / Kitimx7dea-ucomMachine configuration for Embedded Artists iMX7 DualuCOM Board / Kitimx7dea-comMachine configuration for Embedded Artists iMX7 Dual COMBoard / Kitimx8mqea-comMachine configuration for Embedded Artists iMX8M QuadCOM Board / Kitimx8mmea-ucomMachine configuration for Embedded Artists iMX8M MiniuCOM Board / Kitimx8mnea-ucomMachine configuration for Embedded Artists iMX8M NanouCOM Board / Kitimx7ulpea-ucomMachine configuration for Embedded Artists iMX7ULP uCOMBoard / Kit4.3Initialize BuildBefore starting the build, it must be initialized. In this step the build directory and local configurationfiles are created.A distribution must be selected when initializing the build, see section 4.3.1 for available distributions.In the example below the machine imx6sxea-com, the build directory build dir and thefsl-imx-fb distribution is selected. DISTRO fsl-imx-fb MACHINE imx6sxea-com source ea-setuprelease.sh -b build dir4.3.1Distro configurationsWhen initializing a build a distribution is specified. Several different are supported as listed in the tablebelow.DISTRODescriptionfsl-imx-fbLinux Frame buffer – no X11 or Wayland. NOTE: Notsupported by iMX8M Quad, iMX8M Mini and iMX8M Nano.fsl-imx-x11Only X11 (X Window System) graphicsfsl-imx-waylandWayland Weston graphicsfsl-imx-xwaylandWayland graphics and X11. X11 applications using EGL arenot supported4.3.2Restart a BuildIf you need to restart a build in a new terminal window or after a restart of the host computer you don’tneed to run the ea-setup-release.sh script again. Instead, you run the setup-Copyright 2021 Embedded Artists ABRev V

Working With Yocto to Build LinuxPage 13environment script. If you don’t run the setup-environment script you won’t have accessto needed tools and utilities, such as bitbake. source setup-environment build dir4.4Starting the BuildEverything has now been setup to start the actual build. The example below shows how the eaimage-base image is being built. Please note that depending on the capabilities of your hostcomputer building an image can take many hours. bitbake ea-image-baseWhen the build has finished the images will be available in the directory specified below. Please notethat this directory will be different if you are using another build directory or machine configuration. /ea-bsp/build dir/tmp/deploy/images/imx6sxea-com.Go to chapter 5 for instructions of how to deploy images to the target hardware.4.5Bitbake OptionsThis section contains a few examples of how to use bitbake. This is by no means a complete list of allavailable bitbake options, but instead a list of examples that you might find useful.4.5.1Clean Build for a Specific Image/RecipeThe “-c” option executes a specific task for an image or recipe. In the example below a previous buildof the u-boot boot loader is cleaned. bitbake -c cleansstate u-boot-eaTo build u-boot after it has been cleaned just specify the image name u-boot-ea. bitbake u-boot-ea4.5.2Kernel ConfigurationIf you would like to check or change the Linux kernel configuration you can start the Linux configurationtool using the option below. bitbake -c menuconfig linux-ea4.5.3Show Yocto Layer Append DependenciesOne nice feature with Yocto is the ability to extend an already existing recipe. This is done by so calledbbappend files. The Embedded Artists layer (meta-ea) is constructed this way, that is, it is appendingto existing recipes such as u-boot (u-boot-imx) and Linux kernel (linux-imx).When creating your own append files it can be useful to get a list of “appends” that are considered tobe active for you build. bitbake-layers show-appendsCopyright 2021 Embedded Artists ABRev V

Working With Yocto to Build LinuxPage 145 Deploying ImagesNXP's Manufacturing Tool currently exists in two versions. MFGTool is the old version and UUU is thenew version.MFGToolUUUMFGTool versionV2V3Actively developedNoYesOS SupportWindows onlyWindows LinuxSource Code AvailableNoYes, GitHubAs of May 2019, Embedded Artists plan to keep MFGTool support for old kernel releases (i.e. prior toLinux 4.14.78). For Linux 4.14.78 there will be a transition time where both MFGTool and UUU zip fileswill be available but at some point, only the UUU zip file will be updated. For all releases after Linux4.14.78, only UUU will be supported.5.1Manufacturing ToolNXP’s Manufacturing Tool (MFGTool) can be used to write images to the board. This tool is sendingfiles and instructions over USB and the board must be set in OTG boot mode for it to work.At the moment the tool is only available for Microsoft Windows and a version which has been preparedfor Embedded Artists boards is available on http://imx.embeddedartists.com/ for the board you areusing.5.1.1Download the ToolDownload the zip file containing the manufacturing tool from http://imx.embeddedartists.com/Unpack this zip file somewhere on your computer running Microsoft Windows. Below is a description ofsome of the content in the zip file.-mfgtool (root): Contains the actual tool as well as vbs files which can be used to run aspecific download configuration.-mfgtool/Document: Contains documentation for the manufacturing tool. Thisdocumentation has been written by NXP.-mfgtool/Profiles/Linux/OS Firmware/ucl2.xml: This file contains theactual download configurations.-mfgtool/Profiles/Linux/OS Firmware/files: Contains pre-compiledversions of images. The tool will look in this directory when selecting images to download tothe board.5.1.2Prepare hardwareBegin by reading the Getting Started document for the board you are using. It shows how to setup theboard and also gives an overview of the hardware.The next step is to put the board into OTG boot mode. If you have an early version of the iMX6 SoloXDeveloper’s Kit, that is, a version with a DIP switch mounted as shown in Figure 3, read section 5.1.4for instructions. Read section 5.1.3 if you have another iMX based developer’s kit or a new version ofthe iMX6 SoloX Developer’s kit.Copyright 2021 Embedded Artists ABRev V

Working With Yocto to Build Linux5.1.3Page 15OTG boot mode – J2 jumperTo download images using the manufacturing tool the board must be put into OTG boot mode.This is accomplished by closing the J2 jumper on the Carrier board; see Figure 1 to locate the jumper.Please note that in the figure the jumper is in open state which means that the COM board will bootfrom eMMC.Figure 1 - J2 jumper (opened state) on COM Carrier Board V1Figure 2 - J2 jumper (opened state) on a COM Carrier Board V25.1.4OTG boot mode – DIP switchesThe first version of the iMX6 SoloX COM boards had boot jumpers (DIP switches) mounted on them,see Figure 3. If you have such a COM board you need to set the boot jumpers as described below toforce it into OTG boot mode instead of closing jumper J2 as described above.Copyright 2021 Embedded Artists ABRev V

Working With Yocto to Build LinuxPage 16Figure 3 - DIP switch on iMX6 SoloX COM board12345678Figure 4 – Boot jumper setting for USB OTG1. Set the boot jumpers in OTG boot mode as shown in Figure 4. First jumper in the up positionand the second jumper in down position. Please note that the orientation of the DIP switchcomponent can be different on different COM boards. Make sure you are changing the correctjumper by looking at the number by the jumper.2. Make sure a USB cable is connected between the board (micro-B connector on carrier board)and your PC3. Reset the boardNote: When you want to boot the software from eMMC you have to reverse the setting, thatis, first jumper in down position and second jumper in up position.5.1.5ConfigurationsSeveral configurations of the tool have been prepared in order to help you download specific images.Shortcuts to these configurations are available as vbs files in the root of the MFGTool directory. All youneed to do is to double-click on one of these files and the manufacturing tool will start.-ea-com-emmc bootloaders.vbs – will install only the bootloaders. This shouldonly be used if you want to restore the bootloaders or download your own bootloaders to theboard.-ea-com-emmc kernel.vbs – will install kernel and dtb files. This should only beused if you want to update the kernel or dtb file.-ea-com-emmc full tar.vbs – will install bootloaders, Linux kernel and root filesystem. The root file system will be installed from a tar.bz2 file.-ea-com-emmc update rootfs.vbs – will only download the root file system (theext3 file) to the board.C

Working With Yocto to Build Linux