mirror of
https://git.yoctoproject.org/poky
synced 2026-05-30 12:29:55 +00:00
getting-started, mega-manual: New content for intro chapter
Created content for "What is the Yocto Project" section. Involved a new figure that had to be shared in the mega-manual figures folder. (From yocto-docs rev: 72c18abd11587f4d78848afb8a71ff7f4a0e76d0) Signed-off-by: Scott Rifenbark <srifenbark@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
31f0dda70b
commit
4b3ebf00dc
@@ -89,7 +89,7 @@ XSLTOPTS = --xinclude
|
|||||||
ALLPREQ = html eclipse tarball
|
ALLPREQ = html eclipse tarball
|
||||||
TARFILES = getting-started-style.css getting-started.html figures/getting-started-title.png \
|
TARFILES = getting-started-style.css getting-started.html figures/getting-started-title.png \
|
||||||
figures/git-workflow.png figures/source-repos.png figures/index-downloads.png \
|
figures/git-workflow.png figures/source-repos.png figures/index-downloads.png \
|
||||||
figures/yp-download.png figures/YP-flow-diagram.png \
|
figures/yp-download.png figures/YP-flow-diagram.png figures/key-dev-elements.png \
|
||||||
eclipse
|
eclipse
|
||||||
MANUALS = $(DOC)/$(DOC).html $(DOC)/eclipse
|
MANUALS = $(DOC)/$(DOC).html $(DOC)/eclipse
|
||||||
FIGURES = figures
|
FIGURES = figures
|
||||||
@@ -270,7 +270,7 @@ TARFILES = mega-manual.html mega-style.css \
|
|||||||
figures/source-fetching.png figures/patching.png \
|
figures/source-fetching.png figures/patching.png \
|
||||||
figures/configuration-compile-autoreconf.png \
|
figures/configuration-compile-autoreconf.png \
|
||||||
figures/analysis-for-package-splitting.png \
|
figures/analysis-for-package-splitting.png \
|
||||||
figures/image-generation.png \
|
figures/image-generation.png figures/key-dev-elements.png\
|
||||||
figures/sdk-generation.png figures/recipe-workflow.png \
|
figures/sdk-generation.png figures/recipe-workflow.png \
|
||||||
figures/build-workspace-directory.png figures/mega-title.png \
|
figures/build-workspace-directory.png figures/mega-title.png \
|
||||||
figures/toaster-title.png figures/hosted-service.png \
|
figures/toaster-title.png figures/hosted-service.png \
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
@@ -8,6 +8,261 @@
|
|||||||
<section id='what-is-the-yocto-project'>
|
<section id='what-is-the-yocto-project'>
|
||||||
<title>What is the Yocto Project?</title>
|
<title>What is the Yocto Project?</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The Yocto Project is an open source collaboration project
|
||||||
|
that helps developers create custom Linux-based systems that are
|
||||||
|
designed for embedded products regardless of the product's hardware
|
||||||
|
architecture.
|
||||||
|
Yocto Project provides a flexible toolset and a development
|
||||||
|
environment that allows embedded device developers across the
|
||||||
|
world to collaborate through shared technologies, software stacks,
|
||||||
|
configurations, and best practices used to create these tailored
|
||||||
|
Linux images.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Thousands of developers worldwide have discovered that Yocto
|
||||||
|
Project provides advantages in both systems and applications
|
||||||
|
development, archival and management benefits, and customizations
|
||||||
|
used for speed, footprint, and memory utilization.
|
||||||
|
The project is a standard when it comes to delivering hardware
|
||||||
|
support and software stacks, allowing software configuration
|
||||||
|
and build interchange, and build and support customizations for
|
||||||
|
multiple hardware platforms and software stacks that can be
|
||||||
|
maintained and scaled.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<mediaobject>
|
||||||
|
<imageobject>
|
||||||
|
<imagedata fileref="figures/key-dev-elements.png"
|
||||||
|
format="PNG" align='center' width="8in"/>
|
||||||
|
</imageobject>
|
||||||
|
</mediaobject>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
For further introductory information on the Yocto Project, you
|
||||||
|
might be interested in this
|
||||||
|
<ulink url='https://www.embedded.com/electronics-blogs/say-what-/4458600/Why-the-Yocto-Project-for-my-IoT-Project-'>article</ulink>
|
||||||
|
by Drew Moseley and in this short introductory
|
||||||
|
<ulink url='https://www.youtube.com/watch?v=utZpKM7i5Z4'>video</ulink>.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The remainder of this section overviews advantages and challenges
|
||||||
|
tied to the Yocto Project.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<section id='gs-features'>
|
||||||
|
<title>Features</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The following list describes features and advantages of the
|
||||||
|
Yocto Project:
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>Widely Adopted Across the Industry:</emphasis>
|
||||||
|
Semiconductor, operating system, software, and
|
||||||
|
service vendors exist whose products and services
|
||||||
|
adopt and support the Yocto Project.
|
||||||
|
For a look at the companies involved with the Yocto
|
||||||
|
Project, see the membership, associate, and
|
||||||
|
participant pages on the Yocto Project home page.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>Architecture Agnostic:</emphasis>
|
||||||
|
Yocto Project supports Intel, ARM, MIPS, AMD, PPC
|
||||||
|
and other architectures.
|
||||||
|
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.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>Images and Code Transfer Easily:</emphasis>
|
||||||
|
Yocto Project output can easily move between
|
||||||
|
architectures without moving to new development
|
||||||
|
environments.
|
||||||
|
Additionally, if you have used the Yocto Project to
|
||||||
|
create an image or application and you find yourself
|
||||||
|
not able to support it, commercial Linux vendors such
|
||||||
|
as Wind River, Mentor Graphics, Timesys, and ENEA could
|
||||||
|
take it and provide ongoing support.
|
||||||
|
These vendors have offerings that are built using
|
||||||
|
the Yocto Project.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>Flexibility:</emphasis>
|
||||||
|
Corporations use the Yocto Project many different ways.
|
||||||
|
One example is to create an internal Linux distribution
|
||||||
|
as a code base the corporation can use across multiple
|
||||||
|
product groups.
|
||||||
|
Through customization and layering, a project group
|
||||||
|
can leverage the base Linux distribution to create
|
||||||
|
a distribution that works for their product needs.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>Ideal for Constrained Embedded and IoT devices:</emphasis>
|
||||||
|
Unlike a full Linux distribution, you can use the
|
||||||
|
Yocto Project to create exactly what you need for
|
||||||
|
embedded devices.
|
||||||
|
You only add the feature support or packages that you
|
||||||
|
absolutely need for the device.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>Comprehensive Toolchain Capabilities:</emphasis>
|
||||||
|
Toolchains for supported architectures satisfy most
|
||||||
|
use cases.
|
||||||
|
However, if your hardware supports features that are
|
||||||
|
not part of a standard toolchain, you can easily
|
||||||
|
customize that toolchain through specification of
|
||||||
|
platform-specific tuning parameters.
|
||||||
|
And, should you need to use a third-party toolchain,
|
||||||
|
mechanisms built into the Yocto Project allow for that.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>Mechanism Rules Over Policy:</emphasis>
|
||||||
|
Focusing on mechanism rather than policy ensures that
|
||||||
|
you are free to set policies based on the needs of your
|
||||||
|
design instead of adopting decisions enforced by some
|
||||||
|
system software provider.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>Uses a Layer Model:</emphasis>
|
||||||
|
The Yocto Project layer infrastructure groups related
|
||||||
|
functionality into separate bundles.
|
||||||
|
You can incrementally add these grouped functionalities
|
||||||
|
to your project as needed.
|
||||||
|
Using layers to isolate and group functionality
|
||||||
|
reduces project complexity and redundancy.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>Supports Partial Builds:</emphasis>
|
||||||
|
You can build and rebuild individual packages as
|
||||||
|
needed.
|
||||||
|
Yocto Project accomplishes this through its
|
||||||
|
shared-state cache (sstate) scheme.
|
||||||
|
Being able to build and debug components individually
|
||||||
|
eases project development.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>Releases According to a Strict Schedule:</emphasis>
|
||||||
|
Major releases occur on a six-month cycle predictably
|
||||||
|
in October and April.
|
||||||
|
The most recent two releases support point releases
|
||||||
|
to address common vulnerabilities and exposures.
|
||||||
|
This predictability is crucial for projects based on
|
||||||
|
the Yocto Project and allows development teams to
|
||||||
|
plan activities.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>Rich Ecosystem of Individuals and Organizations:</emphasis>
|
||||||
|
For open source projects, the value of community is
|
||||||
|
very important.
|
||||||
|
Support forums, expertise, and active developers who
|
||||||
|
continue to push the Yocto Project forward are readily
|
||||||
|
available.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>Binary Reproducibility:</emphasis>
|
||||||
|
The Yocto Project you to be very specific about
|
||||||
|
dependencies and achieves very high percentages of
|
||||||
|
binary reproducibility (e.g. 99.8% for
|
||||||
|
<filename>core-image-minimal</filename>).
|
||||||
|
When distributions are not specific about which
|
||||||
|
packages are pulled in and in what order to support
|
||||||
|
dependencies, other build systems can arbitrarily
|
||||||
|
include packages.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>License Manifest:</emphasis>
|
||||||
|
The Yocto Project provides a license manifest for
|
||||||
|
review by people that need to track the use of open
|
||||||
|
source licenses (e.g.legal teams).
|
||||||
|
</para></listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id='gs-challenges'>
|
||||||
|
<title>Challenges</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The following list presents challenges you might encounter
|
||||||
|
when developing using the Yocto Project:
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>Steep Learning Curve:</emphasis>
|
||||||
|
The Yocto Project has a steep learning curve and has
|
||||||
|
many different ways to accomplish similar tasks.
|
||||||
|
It can be difficult to choose how to proceed when
|
||||||
|
varying methods exist by which to accomplish a given
|
||||||
|
task.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>Understanding What Changes You Need to Make
|
||||||
|
For Your Design Requires Some Research:</emphasis>
|
||||||
|
Beyond the simple tutorial stage, understanding what
|
||||||
|
changes need to be made for your particular design
|
||||||
|
can require a significant amount of research and
|
||||||
|
investigation.
|
||||||
|
For information that helps you transition from
|
||||||
|
trying out the Yocto Project to using it for your
|
||||||
|
project, see the "What I wish I'd Known" and
|
||||||
|
"Transitioning to a Custom Environment for Systems
|
||||||
|
Development" documents on the Yocto Project website.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>Project Workflow Could Be Confusing:</emphasis>
|
||||||
|
The Yocto Project workflow could be confusing if you
|
||||||
|
used to traditional desktop and server software
|
||||||
|
development.
|
||||||
|
In a desktop development environment, mechanisms exist
|
||||||
|
to easily pull and install new packages, which are
|
||||||
|
typically pre-compiled binaries from servers accessible
|
||||||
|
over the Internet.
|
||||||
|
Using the Yocto Project, you must modify your
|
||||||
|
configuration and rebuild to add additional packages.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>Working in a Cross-Build Environment Can
|
||||||
|
Feel Unfamiliar:</emphasis>
|
||||||
|
When developing code to run on a target, compilation,
|
||||||
|
execution, and testing done on the actual target
|
||||||
|
can be faster than running a BitBake build on a
|
||||||
|
development host and then deploying binaries to the
|
||||||
|
target for test.
|
||||||
|
While the Yocto Project does support development tools
|
||||||
|
on the target, the additional step of integrating your
|
||||||
|
changes back into the Yocto Project build environment
|
||||||
|
would be required.
|
||||||
|
Yocto Project supports an intermediate approach that
|
||||||
|
involves making changes on the development system
|
||||||
|
within the BitBake environment and then deploying only
|
||||||
|
the updated packages to the target.</para>
|
||||||
|
|
||||||
|
<para>The Yocto Project OpenEmbedded build system
|
||||||
|
produces packages in standard formats (i.e. RPM,
|
||||||
|
DEB, IPK, and TAR).
|
||||||
|
You can deploy these packages into the running system
|
||||||
|
on the target by using utilities on the target such
|
||||||
|
as <filename>rpm</filename> or
|
||||||
|
<filename>ipk</filename>.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>Initial Build Times Can be Significant:</emphasis>
|
||||||
|
Long initial build times are unfortunately unavoidable
|
||||||
|
due to the large number of packages initially built
|
||||||
|
from scratch for a fully functioning Linux system.
|
||||||
|
Once that initial build is completed, however, the
|
||||||
|
shared-state (sstate) cache mechanism Yocto Project
|
||||||
|
uses keeps the system from rebuilding packages that
|
||||||
|
have not been "touched" since the last build.
|
||||||
|
The sstate mechanism significantly reduces times
|
||||||
|
for successive builds.
|
||||||
|
</para></listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id='what-are-layers'>
|
<section id='what-are-layers'>
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
Reference in New Issue
Block a user