getting-started: Added section on BB workflow

New section called "The OpenEmbedded Build System Workflow".
This section presents the tried and true flow block figure
that shows what happens when you fire off a build.

(From yocto-docs rev: 5b4313ba87a2ccd139f2b980f4cf097700421cf4)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Scott Rifenbark
2018-02-19 15:40:19 -08:00
committed by Richard Purdie
parent 68823387c3
commit 189851f9d6
2 changed files with 72 additions and 123 deletions

View File

@@ -7,8 +7,7 @@
<para>
This chapter takes a look at the Yocto Project development
environment and also provides a detailed look at what goes on during
development in that environment.
environment.
The chapter provides Yocto Project Development environment concepts that
help you understand how work is accomplished in an open source environment,
which is very different as compared to work accomplished in a closed,
@@ -21,123 +20,6 @@
syntax.
</para>
<section id='yp-intro'>
<title>Introduction</title>
<para>
The Yocto Project is an open-source collaboration project whose
focus is for developers of embedded Linux systems.
Among other things, the Yocto Project uses an
<ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded build system</ulink>.
The build system, which is based on the OpenEmbedded (OE) project and
uses the
<ulink url='&YOCTO_DOCS_REF_URL;#bitbake-term'>BitBake</ulink> tool,
constructs complete Linux images for architectures based on ARM, MIPS,
PowerPC, x86 and x86-64.
<note>
Historically, the OpenEmbedded build system, which is the
combination of BitBake and OE components, formed a reference
build host that was known as
"<ulink url='&YOCTO_DOCS_REF_URL;#poky'>Poky</ulink>"
(<emphasis>Pah</emphasis>-kee).
The term "Poky", as used throughout the Yocto Project Documentation
set, can have different meanings.
</note>
The Yocto Project provides various ancillary tools for the embedded
developer and also features the Sato reference User Interface, which
is optimized for stylus-driven, low-resolution screens.
</para>
<mediaobject>
<imageobject>
<imagedata fileref="figures/YP-flow-diagram.png"
format="PNG" align='center' width="8in"/>
</imageobject>
</mediaobject>
<para>
Here are some highlights for the Yocto Project:
</para>
<itemizedlist>
<listitem><para>
Provides a recent Linux kernel along with a set of system
commands and libraries suitable for the embedded
environment.
</para></listitem>
<listitem><para>
Makes available system components such as X11, GTK+, Qt,
Clutter, and SDL (among others) so you can create a rich user
experience on devices that have display hardware.
For devices that do not have a display or where you wish to
use alternative UI frameworks, these components need not be
installed.
</para></listitem>
<listitem><para>
Creates a focused and stable core compatible with the
OpenEmbedded project with which you can easily and reliably
build and develop.
</para></listitem>
<listitem><para>
Fully supports a wide range of hardware and device emulation
through the Quick EMUlator (QEMU).
</para></listitem>
<listitem><para>
Provides a layer mechanism that allows you to easily extend
the system, make customizations, and keep them organized.
</para></listitem>
</itemizedlist>
<para>
You can use the Yocto Project to generate images for many kinds
of devices.
As mentioned earlier, the Yocto Project supports creation of
reference images that you can boot within and emulate using QEMU.
The standard example machines target QEMU full-system
emulation for 32-bit and 64-bit variants of x86, ARM, MIPS, and
PowerPC architectures.
Beyond emulation, you can use the layer mechanism to extend
support to just about any platform that Linux can run on and that
a toolchain can target.
</para>
<para>
Another Yocto Project feature is the Sato reference User
Interface.
This optional UI that is based on GTK+ is intended for devices with
restricted screen sizes and is included as part of the
OpenEmbedded Core layer so that developers can test parts of the
software stack.
</para>
<para>
While the Yocto Project does not provide a strict testing framework,
it does provide or generate for you artifacts that let you perform
target-level and emulated testing and debugging.
Additionally, if you are an
<trademark class='trade'>Eclipse</trademark> IDE user, you can
install an Eclipse Yocto Plug-in to allow you to develop within that
familiar environment.
</para>
<para>
By default, using the Yocto Project to build an image creates a Poky
distribution.
However, you can create your own distribution by providing key
<ulink url='&YOCTO_DOCS_REF_URL;#metadata'>Metadata</ulink>.
A good example is Angstrom, which has had a distribution
based on the Yocto Project since its inception.
Other examples include commercial distributions like
<ulink url='https://www.yoctoproject.org/organization/wind-river-systems'>Wind River Linux</ulink>,
<ulink url='https://www.yoctoproject.org/organization/mentor-graphics'>Mentor Embedded Linux</ulink>,
<ulink url='https://www.yoctoproject.org/organization/enea-ab'>ENEA Linux</ulink>
and <ulink url='https://www.yoctoproject.org/ecosystem/member-organizations'>others</ulink>.
See the "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-your-own-distribution'>Creating Your Own Distribution</ulink>"
section in the Yocto Project Development Tasks Manual for more
information.
</para>
</section>
<section id='open-source-philosophy'>
<title>Open Source Philosophy</title>

View File

@@ -72,7 +72,11 @@
Most ODMs, OSVs, and chip vendors create and supply
BSPs that support their hardware.
If you have custom silicon, you can create a BSP
that supports that architecture.
that supports that architecture.</para>
<para>Aside from lots of architecture support, the
Yocto Project fully supports a wide range of device
emulation through the Quick EMUlator (QEMU).
</para></listitem>
<listitem><para>
<emphasis>Images and Code Transfer Easily:</emphasis>
@@ -104,6 +108,13 @@
embedded devices.
You only add the feature support or packages that you
absolutely need for the device.
For devices that have display hardware, you can use
available system components such as X11, GTK+, Qt,
Clutter, and SDL (among others) to create a rich user
experience.
For devices that do not have a display or where you
want to use alternative UI frameworks, you can choose
to not install these components.
</para></listitem>
<listitem><para>
<emphasis>Comprehensive Toolchain Capabilities:</emphasis>
@@ -130,7 +141,9 @@
You can incrementally add these grouped functionalities
to your project as needed.
Using layers to isolate and group functionality
reduces project complexity and redundancy.
reduces project complexity and redundancy, allows you
to easily extend the system, make customizations,
and keep functionality organized.
</para></listitem>
<listitem><para>
<emphasis>Supports Partial Builds:</emphasis>
@@ -736,6 +749,9 @@
It is a working example of how to build your own custom
Linux distribution from source.
</note>
You can read more about Poky in the
"<link linkend='reference-embedded-distribution'>Reference Embedded Distribution (Poky)</link>"
section.
</para>
</section>
@@ -1071,9 +1087,60 @@
</para>
</section>
<section id='the-yocto-project-workflow'>
<title>The Yocto Project Workflow</title>
<section id='openembedded-build-system-workflow'>
<title>The OpenEmbedded Build System Workflow</title>
<para>
The OpenEmbedded build system uses a "workflow" to accomplish
image and SDK generation.
The following figure overviews that workflow:
<imagedata fileref="figures/YP-flow-diagram.png"
format="PNG" align='center' width="8in"/>
Following is a brief summary of the "workflow":
<orderedlist>
<listitem><para>
Developers specify architecture, policies, patches and
configuration details.
</para></listitem>
<listitem><para>
The build system fetches and downloads the source code
from the specified location.
The build system supports standard methods such as tarballs
or source code repositories systems such as Git.
</para></listitem>
<listitem><para>
Once downloaded, the build system extracts the sources
into a local work area where patches are applied and
common steps for configuring and compiling the software
are run.
</para></listitem>
<listitem><para>
The build system then installs the software into a
temporary staging area where the binary package format you
select (DEB, RPM, or IPK) is used to roll up the software.
</para></listitem>
<listitem><para>
Different QA and sanity checks run throughout entire
build process.
</para></listitem>
<listitem><para>
After the binaries are created, the build system
generates a binary package feed that is used to create
the final root file image.
</para></listitem>
<listitem><para>
The build system generates the file system image and a
customized Extensible SDK (eSDSK) for application
development in parallel.
</para></listitem>
</orderedlist>
</para>
<para>
For a very detailed look at this workflow, see the
"<ulink url='&YOCTO_DOCS_CM_URL;#development-concepts'>Development Concepts</ulink>"
section in the Yocto Project Concepts Manual.
</para>
</section>