2011-07-15 19:54:29 +00:00
|
|
|
|
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
2012-03-09 19:40:39 +00:00
|
|
|
|
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
|
|
|
|
|
[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
|
2011-07-15 19:54:29 +00:00
|
|
|
|
|
|
|
|
|
<chapter id='dev-manual-model'>
|
|
|
|
|
|
|
|
|
|
<title>Common Development Models</title>
|
|
|
|
|
|
2011-07-27 19:47:59 +00:00
|
|
|
|
<para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Many development models exist for which you can use the Yocto Project.
|
|
|
|
|
This chapter overviews simple methods that use tools provided by the
|
2012-10-09 13:32:34 +00:00
|
|
|
|
Yocto Project:
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<itemizedlist>
|
|
|
|
|
<listitem><para><emphasis>System Development:</emphasis>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
System Development covers Board Support Package (BSP) development and kernel
|
2012-06-12 14:48:52 +00:00
|
|
|
|
modification or configuration.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
For an example on how to create a BSP, see the
|
2012-10-03 20:20:12 +00:00
|
|
|
|
"<ulink url='&YOCTO_DOCS_BSP_URL;#creating-a-new-bsp-layer-using-the-yocto-bsp-script'>Creating a New BSP Layer Using the yocto-bsp Script</ulink>"
|
|
|
|
|
section in the Yocto Project Board Support Package (BSP) Developer's Guide.
|
2013-01-25 20:18:23 +00:00
|
|
|
|
For more complete information on how to work with the kernel, see the
|
|
|
|
|
<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;'>Yocto Project Linux Kernel
|
|
|
|
|
Development Manual</ulink>.
|
2012-06-12 14:48:52 +00:00
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para><emphasis>User Application Development:</emphasis>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
User Application Development covers development of applications that you intend
|
2013-04-10 17:34:39 +00:00
|
|
|
|
to run on target hardware.
|
2012-10-01 14:57:50 +00:00
|
|
|
|
For information on how to set up your host development system for user-space
|
2012-12-07 23:23:56 +00:00
|
|
|
|
application development, see the
|
2012-08-22 01:00:45 +00:00
|
|
|
|
<ulink url='&YOCTO_DOCS_ADT_URL;'>Yocto Project Application Developer's Guide</ulink>.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
For a simple example of user-space application development using the
|
|
|
|
|
<trademark class='trade'>Eclipse</trademark> IDE, see the
|
|
|
|
|
"<link linkend='application-development-workflow'>Application
|
2012-10-01 14:57:50 +00:00
|
|
|
|
Development Workflow</link>" section.
|
2012-06-12 14:48:52 +00:00
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para><emphasis>Temporary Source Code Modification:</emphasis>
|
|
|
|
|
Direct modification of temporary source code is a convenient development model
|
|
|
|
|
to quickly iterate and develop towards a solution.
|
2013-04-10 17:34:39 +00:00
|
|
|
|
Once you implement the solution, you should of course take steps to
|
2012-06-12 14:48:52 +00:00
|
|
|
|
get the changes upstream and applied in the affected recipes.</para></listitem>
|
|
|
|
|
<listitem><para><emphasis>Image Development using Hob:</emphasis>
|
2013-04-10 17:34:39 +00:00
|
|
|
|
You can use the <ulink url='&YOCTO_HOME_URL;/tools-resources/projects/hob'>Hob</ulink> to build
|
2012-07-02 16:59:11 +00:00
|
|
|
|
custom operating system images within the build environment.
|
|
|
|
|
Hob provides an efficient interface to the OpenEmbedded build system.</para></listitem>
|
2012-07-13 20:43:30 +00:00
|
|
|
|
<listitem><para><emphasis>Using a Development Shell:</emphasis>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
You can use a <filename>devshell</filename> to efficiently debug commands or simply
|
2012-07-13 20:43:30 +00:00
|
|
|
|
edit packages.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Working inside a development shell is a quick way to set up the OpenEmbedded build
|
2012-07-13 20:43:30 +00:00
|
|
|
|
environment to work on parts of a project.</para></listitem>
|
2012-06-12 14:48:52 +00:00
|
|
|
|
</itemizedlist>
|
2012-03-22 20:58:20 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
2011-07-27 19:47:59 +00:00
|
|
|
|
<section id='system-development-model'>
|
2012-03-22 21:09:03 +00:00
|
|
|
|
<title>System Development Workflow</title>
|
2011-07-15 20:17:07 +00:00
|
|
|
|
|
|
|
|
|
<para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
System development involves modification or creation of an image that you want to run on
|
|
|
|
|
a specific hardware target.
|
|
|
|
|
Usually, when you want to create an image that runs on embedded hardware, the image does
|
2011-11-02 20:37:32 +00:00
|
|
|
|
not require the same number of features that a full-fledged Linux distribution provides.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Thus, you can create a much smaller image that is designed to use only the
|
2011-07-27 19:47:59 +00:00
|
|
|
|
features for your particular hardware.
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
To help you understand how system development works in the Yocto Project, this section
|
|
|
|
|
covers two types of image development: BSP creation and kernel modification or
|
2011-09-20 17:26:58 +00:00
|
|
|
|
configuration.
|
2011-07-15 20:17:07 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
2011-07-27 19:59:59 +00:00
|
|
|
|
<section id='developing-a-board-support-package-bsp'>
|
2011-07-27 19:10:25 +00:00
|
|
|
|
<title>Developing a Board Support Package (BSP)</title>
|
2011-07-15 20:17:07 +00:00
|
|
|
|
|
2011-07-27 19:10:25 +00:00
|
|
|
|
<para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
A BSP is a package of recipes that, when applied during a build, results in
|
|
|
|
|
an image that you can run on a particular board.
|
|
|
|
|
Thus, the package when compiled into the new image, supports the operation of the board.
|
2011-07-27 19:10:25 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<note>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
For a brief list of terms used when describing the development process in the Yocto Project,
|
2011-09-20 17:26:58 +00:00
|
|
|
|
see the "<link linkend='yocto-project-terms'>Yocto Project Terms</link>" section.
|
2011-07-27 19:10:25 +00:00
|
|
|
|
</note>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-01-29 20:00:17 +00:00
|
|
|
|
The remainder of this section presents the basic
|
|
|
|
|
steps used to create a BSP using the Yocto Project's
|
2012-10-03 20:20:12 +00:00
|
|
|
|
<ulink url='&YOCTO_DOCS_BSP_URL;#using-the-yocto-projects-bsp-tools'>BSP Tools</ulink>.
|
2013-01-29 20:00:17 +00:00
|
|
|
|
Although not required for BSP creation, the
|
|
|
|
|
<filename>meta-intel</filename> repository, which contains
|
|
|
|
|
many BSPs supported by the Yocto Project, is part of the example.
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2012-10-03 20:20:12 +00:00
|
|
|
|
For an example that shows how to create a new layer using the tools, see the
|
|
|
|
|
"<ulink url='&YOCTO_DOCS_BSP_URL;#creating-a-new-bsp-layer-using-the-yocto-bsp-script'>Creating a New BSP Layer Using the yocto-bsp Script</ulink>"
|
|
|
|
|
section in the Yocto Project Board Support Package (BSP) Developer's Guide.
|
2011-07-27 19:10:25 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
2011-07-27 22:04:14 +00:00
|
|
|
|
<para>
|
2011-09-20 17:26:58 +00:00
|
|
|
|
The following illustration and list summarize the BSP creation general workflow.
|
2011-07-27 22:04:14 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2011-08-10 21:42:29 +00:00
|
|
|
|
<imagedata fileref="figures/bsp-dev-flow.png" width="6in" depth="7in" align="center" scalefit="1" />
|
2011-07-27 22:04:14 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
2011-07-27 19:10:25 +00:00
|
|
|
|
<para>
|
|
|
|
|
<orderedlist>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para><emphasis>Set up your host development system to support
|
2011-09-20 17:26:58 +00:00
|
|
|
|
development using the Yocto Project</emphasis>: See the
|
2013-02-01 22:30:12 +00:00
|
|
|
|
"<ulink url='&YOCTO_DOCS_QS_URL;#the-linux-distro'>The Linux Distribution</ulink>"
|
2012-12-07 23:23:56 +00:00
|
|
|
|
and the
|
2012-03-09 19:40:39 +00:00
|
|
|
|
"<ulink url='&YOCTO_DOCS_QS_URL;#packages'>The Packages</ulink>" sections both
|
2011-08-02 20:00:48 +00:00
|
|
|
|
in the Yocto Project Quick Start for requirements.</para></listitem>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para><emphasis>Establish a local copy of the project files on your
|
|
|
|
|
system</emphasis>: You need this <link linkend='source-directory'>Source
|
|
|
|
|
Directory</link> available on your host system.
|
2012-07-02 16:59:11 +00:00
|
|
|
|
Having these files on your system gives you access to the build
|
2011-11-10 21:28:32 +00:00
|
|
|
|
process and to the tools you need.
|
2013-04-10 17:47:12 +00:00
|
|
|
|
For information on how to set up the Source Directory,
|
|
|
|
|
see the
|
|
|
|
|
"<link linkend='getting-setup'>Getting Set Up</link>" section.</para></listitem>
|
2012-10-03 20:20:12 +00:00
|
|
|
|
<listitem><para><emphasis>Establish the <filename>meta-intel</filename>
|
2013-01-29 20:00:17 +00:00
|
|
|
|
repository on your system</emphasis>: Having local copies
|
|
|
|
|
of these supported BSP layers on your system gives you
|
|
|
|
|
access to layers you might be able to build on or modify
|
|
|
|
|
to create your BSP.
|
2011-09-20 17:26:58 +00:00
|
|
|
|
For information on how to get these files, see the
|
2013-04-10 17:47:12 +00:00
|
|
|
|
"<link linkend='getting-setup'>Getting Set Up</link>" section.</para></listitem>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para><emphasis>Create your own BSP layer using the
|
|
|
|
|
<ulink url='&YOCTO_DOCS_BSP_URL;#creating-a-new-bsp-layer-using-the-yocto-bsp-script'><filename>yocto-bsp</filename></ulink> script</emphasis>:
|
|
|
|
|
Layers are ideal for
|
|
|
|
|
isolating and storing work for a given piece of hardware.
|
2013-09-19 20:16:53 +00:00
|
|
|
|
A layer is really just a location or area in which you place
|
2013-04-10 17:47:12 +00:00
|
|
|
|
the recipes and configurations for your BSP.
|
2012-10-03 20:20:12 +00:00
|
|
|
|
In fact, a BSP is, in itself, a special type of layer.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
The simplest way to create a new BSP layer that is compliant with the
|
|
|
|
|
Yocto Project is to use the <filename>yocto-bsp</filename> script.
|
|
|
|
|
For information about that script, see the
|
|
|
|
|
"<ulink url='&YOCTO_DOCS_BSP_URL;#creating-a-new-bsp-layer-using-the-yocto-bsp-script'>Creating a New BSP Layer Using the yocto-bsp Script</ulink>"
|
|
|
|
|
section in the Yocto Project Board Support (BSP) Developer's Guide.
|
2012-04-26 14:01:25 +00:00
|
|
|
|
</para>
|
|
|
|
|
<para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Another example that illustrates a layer is an application.
|
|
|
|
|
Suppose you are creating an application that has library or other dependencies in
|
|
|
|
|
order for it to compile and run.
|
|
|
|
|
The layer, in this case, would be where all the recipes that define those dependencies
|
|
|
|
|
are kept.
|
|
|
|
|
The key point for a layer is that it is an isolated area that contains
|
|
|
|
|
all the relevant information for the project that the OpenEmbedded build
|
2012-04-26 14:01:25 +00:00
|
|
|
|
system knows about.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
For more information on layers, see the
|
2012-04-26 14:01:25 +00:00
|
|
|
|
"<link linkend='understanding-and-creating-layers'>Understanding and Creating Layers</link>"
|
|
|
|
|
section.
|
|
|
|
|
For more information on BSP layers, see the
|
2012-12-07 23:23:56 +00:00
|
|
|
|
"<ulink url='&YOCTO_DOCS_BSP_URL;#bsp-layers'>BSP Layers</ulink>" section in the
|
2012-04-26 14:01:25 +00:00
|
|
|
|
Yocto Project Board Support Package (BSP) Developer's Guide.</para>
|
2013-11-11 18:55:21 +00:00
|
|
|
|
<note>Five BSPs exist that are part of the
|
|
|
|
|
Yocto Project release: <filename>genericx86</filename>, <filename>genericx86-64</filename>,
|
|
|
|
|
<filename>beagleboard</filename>,
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<filename>mpc8315e</filename>, and <filename>routerstationpro</filename>.
|
2013-11-11 18:55:21 +00:00
|
|
|
|
The recipes and configurations for these five BSPs are located and dispersed
|
2012-10-01 15:51:21 +00:00
|
|
|
|
within the <link linkend='source-directory'>Source Directory</link>.
|
2013-04-15 20:52:00 +00:00
|
|
|
|
On the other hand, BSP layers for Chief River, Crown Bay,
|
|
|
|
|
Crystal Forest, Emenlow, Fish River Island 2, Jasper Forest, N450, NUC DC3217IYE,
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Romley, sys940x, Sugar Bay, and tlk exist in their own separate layers
|
2012-10-01 15:10:38 +00:00
|
|
|
|
within the larger <filename>meta-intel</filename> layer.</note>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<para>When you set up a layer for a new BSP, you should follow a standard layout.
|
2013-09-19 20:16:53 +00:00
|
|
|
|
This layout is described in the
|
2012-03-09 19:40:39 +00:00
|
|
|
|
"<ulink url='&YOCTO_DOCS_BSP_URL;#bsp-filelayout'>Example Filesystem Layout</ulink>"
|
2012-12-07 23:23:56 +00:00
|
|
|
|
section of the Board Support Package (BSP) Development Guide.
|
|
|
|
|
In the standard layout, you will notice a suggested structure for recipes and
|
|
|
|
|
configuration information.
|
|
|
|
|
You can see the standard layout for a BSP by examining
|
2012-10-03 20:20:12 +00:00
|
|
|
|
any supported BSP found in the <filename>meta-intel</filename> layer inside
|
|
|
|
|
the Source Directory.</para></listitem>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para><emphasis>Make configuration changes to your new BSP
|
|
|
|
|
layer</emphasis>: The standard BSP layer structure organizes the files you need
|
2012-03-09 19:40:39 +00:00
|
|
|
|
to edit in <filename>conf</filename> and several <filename>recipes-*</filename>
|
|
|
|
|
directories within the BSP layer.
|
2011-08-01 21:39:35 +00:00
|
|
|
|
Configuration changes identify where your new layer is on the local system
|
2011-07-27 19:10:25 +00:00
|
|
|
|
and identify which kernel you are going to use.
|
2013-04-10 17:47:12 +00:00
|
|
|
|
When you run the <filename>yocto-bsp</filename> script, you are able to interactively
|
2012-10-03 20:20:12 +00:00
|
|
|
|
configure many things for the BSP (e.g. keyboard, touchscreen, and so forth).
|
2011-08-01 21:39:35 +00:00
|
|
|
|
</para></listitem>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para><emphasis>Make recipe changes to your new BSP layer</emphasis>: Recipe
|
|
|
|
|
changes include altering recipes (<filename>.bb</filename> files), removing
|
|
|
|
|
recipes you don't use, and adding new recipes or append files
|
2012-10-03 20:20:12 +00:00
|
|
|
|
(<filename>.bbappend</filename>) that you need to support your hardware.
|
2011-07-27 19:10:25 +00:00
|
|
|
|
</para></listitem>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para><emphasis>Prepare for the build</emphasis>: Once you have made all the
|
|
|
|
|
changes to your BSP layer, there remains a few things
|
|
|
|
|
you need to do for the OpenEmbedded build system in order for it to create your image.
|
|
|
|
|
You need to get the build environment ready by sourcing an environment setup script
|
2012-10-03 20:20:12 +00:00
|
|
|
|
and you need to be sure two key configuration files are configured appropriately:
|
2012-12-07 23:23:56 +00:00
|
|
|
|
the <filename>conf/local.conf</filename> and the
|
2012-10-03 20:20:12 +00:00
|
|
|
|
<filename>conf/bblayers.conf</filename> file.
|
|
|
|
|
You must make the OpenEmbedded build system aware of your new layer.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
See the
|
2012-10-03 20:20:12 +00:00
|
|
|
|
"<link linkend='enabling-your-layer'>Enabling Your Layer</link>" section
|
|
|
|
|
for information on how to let the build system know about your new layer.</para>
|
2011-09-20 17:26:58 +00:00
|
|
|
|
<para>The entire process for building an image is overviewed in the section
|
2012-12-07 23:23:56 +00:00
|
|
|
|
"<ulink url='&YOCTO_DOCS_QS_URL;#building-image'>Building an Image</ulink>" section
|
|
|
|
|
of the Yocto Project Quick Start.
|
2011-07-27 19:10:25 +00:00
|
|
|
|
You might want to reference this information.</para></listitem>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para><emphasis>Build the image</emphasis>: The OpenEmbedded build system
|
|
|
|
|
uses the BitBake tool to build images based on the type of image you want to create.
|
|
|
|
|
You can find more information about BitBake in the user manual, which is found in the
|
|
|
|
|
<filename>bitbake/doc/manual</filename> directory of the
|
2012-09-04 19:05:21 +00:00
|
|
|
|
<link linkend='source-directory'>Source Directory</link>.</para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<para>The build process supports several types of images to satisfy different needs.
|
|
|
|
|
See the
|
|
|
|
|
"<ulink url='&YOCTO_DOCS_REF_URL;#ref-images'>Images</ulink>" chapter
|
|
|
|
|
in the Yocto Project Reference Manual for information on
|
2012-01-11 16:08:13 +00:00
|
|
|
|
supported images.</para></listitem>
|
2011-07-27 19:10:25 +00:00
|
|
|
|
</orderedlist>
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2011-08-16 16:17:55 +00:00
|
|
|
|
You can view a video presentation on "Building Custom Embedded Images with Yocto"
|
2012-12-07 23:23:56 +00:00
|
|
|
|
at <ulink url='http://free-electrons.com/blog/elc-2011-videos'>Free Electrons</ulink>.
|
2013-11-11 18:55:21 +00:00
|
|
|
|
You can also find supplemental information in the
|
2012-03-09 19:40:39 +00:00
|
|
|
|
<ulink url='&YOCTO_DOCS_BSP_URL;'>
|
2013-11-11 18:55:21 +00:00
|
|
|
|
Yocto Project Board Support Package (BSP) Developer's Guide</ulink>.
|
|
|
|
|
Finally, there is a wiki page write up of the example also located
|
2012-03-09 19:40:39 +00:00
|
|
|
|
<ulink url='&YOCTO_WIKI_URL;/wiki/Transcript:_creating_one_generic_Atom_BSP_from_another'>
|
2011-09-20 17:26:58 +00:00
|
|
|
|
here</ulink> that you might find helpful.
|
2011-07-27 19:47:59 +00:00
|
|
|
|
</para>
|
2011-07-27 19:10:25 +00:00
|
|
|
|
</section>
|
|
|
|
|
|
2011-07-28 13:21:28 +00:00
|
|
|
|
<section id='modifying-the-kernel'>
|
|
|
|
|
<title><anchor id='kernel-spot' />Modifying the Kernel</title>
|
2011-07-27 19:10:25 +00:00
|
|
|
|
|
|
|
|
|
<para>
|
2012-07-02 17:19:10 +00:00
|
|
|
|
Kernel modification involves changing the Yocto Project kernel, which could involve changing
|
2012-12-07 23:23:56 +00:00
|
|
|
|
configuration options as well as adding new kernel recipes.
|
2011-08-01 21:39:35 +00:00
|
|
|
|
Configuration changes can be added in the form of configuration fragments, while recipe
|
|
|
|
|
modification comes through the kernel's <filename>recipes-kernel</filename> area
|
|
|
|
|
in a kernel layer you create.
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2012-07-02 17:19:10 +00:00
|
|
|
|
The remainder of this section presents a high-level overview of the Yocto Project
|
|
|
|
|
kernel architecture and the steps to modify the kernel.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
You can reference the
|
2012-10-08 17:14:58 +00:00
|
|
|
|
"<link linkend='patching-the-kernel'>Patching the Kernel</link>" section
|
|
|
|
|
for an example that changes the source code of the kernel.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
For information on how to configure the kernel, see the
|
2012-10-22 20:16:49 +00:00
|
|
|
|
"<link linkend='configuring-the-kernel'>Configuring the Kernel</link>" section.
|
2013-01-25 20:18:23 +00:00
|
|
|
|
For more information on the kernel and on modifying the kernel, see the
|
|
|
|
|
<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;'>Yocto Project Linux Kernel Development Manual</ulink>.
|
2011-07-27 19:10:25 +00:00
|
|
|
|
</para>
|
2011-08-01 21:39:35 +00:00
|
|
|
|
|
|
|
|
|
<section id='kernel-overview'>
|
|
|
|
|
<title>Kernel Overview</title>
|
|
|
|
|
|
|
|
|
|
<para>
|
2011-10-20 17:38:05 +00:00
|
|
|
|
Traditionally, when one thinks of a patched kernel, they think of a base kernel
|
2011-11-02 20:37:32 +00:00
|
|
|
|
source tree and a fixed structure that contains kernel patches.
|
2013-02-01 22:30:12 +00:00
|
|
|
|
The Yocto Project, however, employs mechanisms that, in a sense, result in a kernel source
|
2011-08-01 21:39:35 +00:00
|
|
|
|
generator.
|
2011-09-20 17:26:58 +00:00
|
|
|
|
By the end of this section, this analogy will become clearer.
|
2011-08-01 21:39:35 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2012-07-02 17:19:10 +00:00
|
|
|
|
You can find a web interface to the Yocto Project kernel source repositories at
|
2012-03-09 19:40:39 +00:00
|
|
|
|
<ulink url='&YOCTO_GIT_URL;'></ulink>.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
If you look at the interface, you will see to the left a grouping of
|
|
|
|
|
Git repositories titled "Yocto Linux Kernel."
|
|
|
|
|
Within this group, you will find several kernels supported by
|
2011-08-31 13:46:23 +00:00
|
|
|
|
the Yocto Project:
|
|
|
|
|
<itemizedlist>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para><emphasis><filename>linux-yocto-3.4</filename></emphasis> - The
|
|
|
|
|
stable Yocto Project kernel to use with the Yocto Project Release 1.3. This kernel
|
2012-10-01 15:20:46 +00:00
|
|
|
|
is based on the Linux 3.4 released kernel.</para></listitem>
|
2013-04-15 20:52:00 +00:00
|
|
|
|
<listitem><para><emphasis><filename>linux-yocto-3.8</filename></emphasis> - The
|
2013-04-10 18:40:07 +00:00
|
|
|
|
stable Yocto Project kernel to use with the Yocto Project Release 1.4. This kernel
|
|
|
|
|
is based on the Linux 3.8 released kernel.</para></listitem>
|
2013-09-23 20:23:00 +00:00
|
|
|
|
<listitem><para><emphasis><filename>linux-yocto-3.10</filename></emphasis> - The
|
|
|
|
|
stable Yocto Project kernel to use with the Yocto Project Release 1.5. This kernel
|
|
|
|
|
is based on the Linux 3.10 released kernel.</para></listitem>
|
2011-08-31 13:46:23 +00:00
|
|
|
|
<listitem><para><emphasis><filename>linux-yocto-dev</filename></emphasis> - A development
|
|
|
|
|
kernel based on the latest upstream release candidate available.</para></listitem>
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2011-10-20 17:38:05 +00:00
|
|
|
|
The kernels are maintained using the Git revision control system
|
|
|
|
|
that structures them using the familiar "tree", "branch", and "leaf" scheme.
|
2011-08-31 13:46:23 +00:00
|
|
|
|
Branches represent diversions from general code to more specific code, while leaves
|
2013-04-10 18:40:07 +00:00
|
|
|
|
represent the end-points for a complete and unique kernel whose source files,
|
|
|
|
|
when gathered from the root of the tree to the leaf, accumulate to create the files
|
2011-08-31 13:46:23 +00:00
|
|
|
|
necessary for a specific piece of hardware and its features.
|
|
|
|
|
The following figure displays this concept:
|
|
|
|
|
<para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<imagedata fileref="figures/kernel-overview-1.png"
|
2011-08-31 13:46:23 +00:00
|
|
|
|
width="6in" depth="6in" align="center" scale="100" />
|
2012-12-07 23:23:56 +00:00
|
|
|
|
</para>
|
2011-08-31 13:46:23 +00:00
|
|
|
|
|
|
|
|
|
<para>
|
|
|
|
|
Within the figure, the "Kernel.org Branch Point" represents the point in the tree
|
2011-10-20 17:38:05 +00:00
|
|
|
|
where a supported base kernel is modified from the Linux kernel.
|
2013-04-10 18:40:07 +00:00
|
|
|
|
For example, this could be the branch point for the <filename>linux-yocto-3.4</filename>
|
2011-08-31 13:46:23 +00:00
|
|
|
|
kernel.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Thus, everything further to the right in the structure is based on the
|
2013-04-10 18:40:07 +00:00
|
|
|
|
<filename>linux-yocto-3.4</filename> kernel.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Branch points to right in the figure represent where the
|
2013-04-10 18:40:07 +00:00
|
|
|
|
<filename>linux-yocto-3.4</filename> kernel is modified for specific hardware
|
2011-08-31 13:46:23 +00:00
|
|
|
|
or types of kernels, such as real-time kernels.
|
|
|
|
|
Each leaf thus represents the end-point for a kernel designed to run on a specific
|
|
|
|
|
targeted device.
|
2011-08-01 21:39:35 +00:00
|
|
|
|
</para>
|
2011-08-31 13:46:23 +00:00
|
|
|
|
|
2011-08-01 21:39:35 +00:00
|
|
|
|
<para>
|
2011-08-31 13:46:23 +00:00
|
|
|
|
The overall result is a Git-maintained repository from which all the supported
|
2012-07-02 16:59:11 +00:00
|
|
|
|
kernel types can be derived for all the supported devices.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
A big advantage to this scheme is the sharing of common features by keeping them in
|
|
|
|
|
"larger" branches within the tree.
|
2011-08-01 21:39:35 +00:00
|
|
|
|
This practice eliminates redundant storage of similar features shared among kernels.
|
|
|
|
|
</para>
|
|
|
|
|
|
2011-08-31 13:46:23 +00:00
|
|
|
|
<note>
|
2012-07-02 17:19:10 +00:00
|
|
|
|
Keep in mind the figure does not take into account all the supported Yocto
|
|
|
|
|
Project kernel types, but rather shows a single generic kernel just for conceptual purposes.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Also keep in mind that this structure represents the Yocto Project source repositories
|
2011-08-31 13:46:23 +00:00
|
|
|
|
that are either pulled from during the build or established on the host development system
|
2012-12-07 23:23:56 +00:00
|
|
|
|
prior to the build by either cloning a particular kernel's Git repository or by
|
2011-08-31 13:46:23 +00:00
|
|
|
|
downloading and unpacking a tarball.
|
|
|
|
|
</note>
|
|
|
|
|
|
|
|
|
|
<para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Upstream storage of all the available kernel source code is one thing, while
|
|
|
|
|
representing and using the code on your host development system is another.
|
|
|
|
|
Conceptually, you can think of the kernel source repositories as all the
|
|
|
|
|
source files necessary for all the supported kernels.
|
|
|
|
|
As a developer, you are just interested in the source files for the kernel on
|
2013-02-01 22:30:12 +00:00
|
|
|
|
which you are working.
|
2011-08-31 13:46:23 +00:00
|
|
|
|
And, furthermore, you need them available on your host system.
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2012-10-09 13:32:34 +00:00
|
|
|
|
Kernel source code is available on your host system a couple of different
|
|
|
|
|
ways.
|
|
|
|
|
If you are working in the kernel all the time, you probably would want
|
|
|
|
|
to set up your own local Git repository of the kernel tree.
|
2013-04-10 18:40:07 +00:00
|
|
|
|
If you just need to make some patches to the kernel, you can access
|
2013-09-19 20:16:53 +00:00
|
|
|
|
temporary kernel source files that were extracted and used
|
2013-04-10 18:40:07 +00:00
|
|
|
|
during a build.
|
2012-10-09 13:32:34 +00:00
|
|
|
|
We will just talk about working with the temporary source code.
|
2013-09-19 20:16:53 +00:00
|
|
|
|
For more information on how to get kernel source code onto your
|
2013-04-10 18:40:07 +00:00
|
|
|
|
host system, see the
|
|
|
|
|
"<link linkend='local-kernel-files'>Yocto Project Kernel</link>"
|
|
|
|
|
bulleted item earlier in the manual.
|
2011-08-31 13:46:23 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
What happens during the build?
|
2012-10-01 15:33:31 +00:00
|
|
|
|
When you build the kernel on your development system, all files needed for the build
|
2012-12-07 23:23:56 +00:00
|
|
|
|
are taken from the source repositories pointed to by the
|
|
|
|
|
<ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink> variable
|
2012-10-22 20:16:49 +00:00
|
|
|
|
and gathered in a temporary work area
|
2011-08-01 21:39:35 +00:00
|
|
|
|
where they are subsequently used to create the unique kernel.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Thus, in a sense, the process constructs a local source tree specific to your
|
2011-08-01 21:39:35 +00:00
|
|
|
|
kernel to generate the new kernel image - a source generator if you will.
|
|
|
|
|
</para>
|
2011-08-31 13:46:23 +00:00
|
|
|
|
The following figure shows the temporary file structure
|
2012-12-07 23:23:56 +00:00
|
|
|
|
created on your host system when the build occurs.
|
|
|
|
|
This
|
|
|
|
|
<link linkend='build-directory'>Build Directory</link> contains all the
|
2012-10-04 15:52:13 +00:00
|
|
|
|
source files used during the build.
|
2011-08-02 20:00:48 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<imagedata fileref="figures/kernel-overview-2-generic.png"
|
2011-08-31 13:46:23 +00:00
|
|
|
|
width="6in" depth="5in" align="center" scale="100" />
|
2012-12-07 23:23:56 +00:00
|
|
|
|
</para>
|
2011-08-02 14:48:52 +00:00
|
|
|
|
|
2011-08-01 21:39:35 +00:00
|
|
|
|
<para>
|
2013-01-25 20:18:23 +00:00
|
|
|
|
Again, for additional information the Yocto Project kernel's
|
|
|
|
|
architecture and its branching strategy, see the
|
|
|
|
|
<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;'>Yocto Project Linux Kernel Development Manual</ulink>.
|
2012-04-26 15:05:38 +00:00
|
|
|
|
You can also reference the
|
2012-10-08 17:14:58 +00:00
|
|
|
|
"<link linkend='patching-the-kernel'>Patching the Kernel</link>"
|
2012-04-26 15:05:38 +00:00
|
|
|
|
section for a detailed example that modifies the kernel.
|
2011-08-01 21:39:35 +00:00
|
|
|
|
</para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
</section>
|
2011-08-01 21:39:35 +00:00
|
|
|
|
|
|
|
|
|
<section id='kernel-modification-workflow'>
|
|
|
|
|
<title>Kernel Modification Workflow</title>
|
|
|
|
|
|
|
|
|
|
<para>
|
|
|
|
|
This illustration and the following list summarizes the kernel modification general workflow.
|
|
|
|
|
</para>
|
|
|
|
|
|
2011-08-11 17:18:38 +00:00
|
|
|
|
<para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<imagedata fileref="figures/kernel-dev-flow.png"
|
2012-10-09 13:32:34 +00:00
|
|
|
|
width="6in" depth="5in" align="center" scalefit="1" />
|
2012-12-07 23:23:56 +00:00
|
|
|
|
</para>
|
2011-08-01 21:39:35 +00:00
|
|
|
|
|
|
|
|
|
<para>
|
|
|
|
|
<orderedlist>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para><emphasis>Set up your host development system to support
|
|
|
|
|
development using the Yocto Project</emphasis>: See
|
2013-02-01 22:30:12 +00:00
|
|
|
|
"<ulink url='&YOCTO_DOCS_QS_URL;#the-linux-distro'>The Linux Distribution</ulink>" and
|
2012-03-09 19:40:39 +00:00
|
|
|
|
"<ulink url='&YOCTO_DOCS_QS_URL;#packages'>The Packages</ulink>" sections both
|
2011-08-02 20:00:48 +00:00
|
|
|
|
in the Yocto Project Quick Start for requirements.</para></listitem>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para><emphasis>Establish a local copy of project files on your
|
2012-10-22 20:16:49 +00:00
|
|
|
|
system</emphasis>: Having the <link linkend='source-directory'>Source
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Directory</link> on your system gives you access to the build process and tools
|
2012-07-02 16:59:11 +00:00
|
|
|
|
you need.
|
2011-08-01 21:39:35 +00:00
|
|
|
|
For information on how to get these files, see the bulleted item
|
2011-09-20 17:26:58 +00:00
|
|
|
|
"<link linkend='local-yp-release'>Yocto Project Release</link>" earlier in this manual.
|
2011-08-01 21:39:35 +00:00
|
|
|
|
</para></listitem>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para><emphasis>Establish the temporary kernel source files</emphasis>:
|
2013-09-19 20:16:53 +00:00
|
|
|
|
Temporary kernel source files are kept in the
|
2013-04-10 19:24:30 +00:00
|
|
|
|
<link linkend='build-directory'>Build Directory</link>
|
|
|
|
|
created by the
|
2012-10-09 13:32:34 +00:00
|
|
|
|
OpenEmbedded build system when you run BitBake.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
If you have never built the kernel you are interested in, you need to run
|
2012-10-09 13:32:34 +00:00
|
|
|
|
an initial build to establish local kernel source files.</para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<para>If you are building an image for the first time, you need to get the build
|
2013-10-29 18:27:38 +00:00
|
|
|
|
environment ready by sourcing an environment setup script
|
|
|
|
|
(e.g. <filename>oe-init-build-env</filename> or
|
|
|
|
|
<filename>oe-init-build-env-memres</filename>).
|
2012-12-07 23:23:56 +00:00
|
|
|
|
You also need to be sure two key configuration files
|
2012-10-09 13:32:34 +00:00
|
|
|
|
(<filename>local.conf</filename> and <filename>bblayers.conf</filename>)
|
|
|
|
|
are configured appropriately.</para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<para>The entire process for building an image is overviewed in the
|
|
|
|
|
"<ulink url='&YOCTO_DOCS_QS_URL;#building-image'>Building an Image</ulink>"
|
|
|
|
|
section of the Yocto Project Quick Start.
|
2012-10-09 13:32:34 +00:00
|
|
|
|
You might want to reference this information.
|
|
|
|
|
You can find more information on BitBake in the user manual, which is found in the
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<filename>bitbake/doc/manual</filename> directory of the
|
2013-04-10 19:24:30 +00:00
|
|
|
|
Source Directory.</para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<para>The build process supports several types of images to satisfy different needs.
|
|
|
|
|
See the "<ulink url='&YOCTO_DOCS_REF_URL;#ref-images'>Images</ulink>" chapter in
|
2012-10-09 13:32:34 +00:00
|
|
|
|
the Yocto Project Reference Manual for information on supported images.
|
|
|
|
|
</para></listitem>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para><emphasis>Make changes to the kernel source code if
|
2011-08-10 23:27:45 +00:00
|
|
|
|
applicable</emphasis>: Modifying the kernel does not always mean directly
|
2012-12-07 23:23:56 +00:00
|
|
|
|
changing source files.
|
|
|
|
|
However, if you have to do this, you make the changes to the files in the
|
|
|
|
|
Build directory.</para></listitem>
|
2011-08-02 14:48:52 +00:00
|
|
|
|
<listitem><para><emphasis>Make kernel configuration changes
|
2012-12-07 23:23:56 +00:00
|
|
|
|
if applicable</emphasis>:
|
|
|
|
|
If your situation calls for changing the kernel's configuration, you can
|
2012-10-09 13:32:34 +00:00
|
|
|
|
use the <filename>yocto-kernel</filename> script or <filename>menuconfig</filename>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
to enable and disable kernel configurations.
|
2012-10-09 13:32:34 +00:00
|
|
|
|
Using the script lets you interactively set up kernel configurations.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Using <filename>menuconfig</filename> allows you to interactively develop and test the
|
2011-09-20 17:26:58 +00:00
|
|
|
|
configuration changes you are making to the kernel.
|
|
|
|
|
When saved, changes using <filename>menuconfig</filename> update the kernel's
|
2013-04-10 19:24:30 +00:00
|
|
|
|
<filename>.config</filename> file.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Try to resist the temptation of directly editing the <filename>.config</filename>
|
2013-04-10 19:24:30 +00:00
|
|
|
|
file found in the Build Directory at
|
2011-10-20 17:38:05 +00:00
|
|
|
|
<filename>tmp/sysroots/<machine-name>/kernel</filename>.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Doing so, can produce unexpected results when the OpenEmbedded build system
|
2011-10-20 17:38:05 +00:00
|
|
|
|
regenerates the configuration file.</para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<para>Once you are satisfied with the configuration changes made using
|
2013-02-01 22:30:12 +00:00
|
|
|
|
<filename>menuconfig</filename>, you can directly compare the
|
2011-10-20 17:38:05 +00:00
|
|
|
|
<filename>.config</filename> file against a saved original and gather those
|
2012-12-07 23:23:56 +00:00
|
|
|
|
changes into a config fragment to be referenced from within the kernel's
|
|
|
|
|
<filename>.bbappend</filename> file.</para></listitem>
|
|
|
|
|
<listitem><para><emphasis>Rebuild the kernel image with your changes</emphasis>:
|
2012-10-09 13:32:34 +00:00
|
|
|
|
Rebuilding the kernel image applies your changes.</para></listitem>
|
2011-08-01 21:39:35 +00:00
|
|
|
|
</orderedlist>
|
|
|
|
|
</para>
|
|
|
|
|
</section>
|
2011-07-27 19:10:25 +00:00
|
|
|
|
</section>
|
2011-07-15 20:17:07 +00:00
|
|
|
|
</section>
|
|
|
|
|
|
2012-07-02 16:59:11 +00:00
|
|
|
|
<section id='application-development-workflow'>
|
2011-09-20 20:02:34 +00:00
|
|
|
|
<title>Application Development Workflow</title>
|
2011-07-27 19:47:59 +00:00
|
|
|
|
|
|
|
|
|
<para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Application development involves creating an application that you want
|
|
|
|
|
to run on your target hardware, which is running a kernel image created using the
|
2012-07-23 17:05:44 +00:00
|
|
|
|
OpenEmbedded build system.
|
2013-09-19 20:16:53 +00:00
|
|
|
|
The Yocto Project provides an
|
2013-04-10 19:36:16 +00:00
|
|
|
|
<ulink url='&YOCTO_DOCS_ADT_URL;#adt-intro-section'>Application Development Toolkit (ADT)</ulink>
|
|
|
|
|
and stand-alone
|
|
|
|
|
<ulink url='&YOCTO_DOCS_ADT_URL;#the-cross-development-toolchain'>cross-development toolchains</ulink>
|
|
|
|
|
that facilitate quick development and integration of your application into its runtime environment.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Using the ADT and toolchains, you can compile and link your application.
|
2011-09-23 15:07:41 +00:00
|
|
|
|
You can then deploy your application to the actual hardware or to the QEMU emulator for testing.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
If you are familiar with the popular <trademark class='trade'>Eclipse</trademark> IDE,
|
|
|
|
|
you can use an Eclipse Yocto Plug-in to
|
2011-09-23 15:07:41 +00:00
|
|
|
|
allow you to develop, deploy, and test your application all from within Eclipse.
|
2011-09-20 20:02:34 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
While we strongly suggest using the ADT to develop your application, this option might not
|
|
|
|
|
be best for you.
|
|
|
|
|
If this is the case, you can still use pieces of the Yocto Project for your development process.
|
2011-09-23 15:07:41 +00:00
|
|
|
|
However, because the process can vary greatly, this manual does not provide detail on the process.
|
2011-09-20 20:02:34 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
2011-09-23 15:07:41 +00:00
|
|
|
|
<section id='workflow-using-the-adt-and-eclipse'>
|
|
|
|
|
<title>Workflow Using the ADT and <trademark class='trade'>Eclipse</trademark></title>
|
2011-09-20 20:02:34 +00:00
|
|
|
|
|
2011-09-23 15:07:41 +00:00
|
|
|
|
<para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
To help you understand how application development works using the ADT, this section
|
|
|
|
|
provides an overview of the general development process and a detailed example of the process
|
2012-07-23 17:05:44 +00:00
|
|
|
|
as it is used from within the Eclipse IDE.
|
2011-09-23 15:07:41 +00:00
|
|
|
|
</para>
|
2011-09-20 20:02:34 +00:00
|
|
|
|
|
2011-09-23 15:07:41 +00:00
|
|
|
|
<para>
|
2012-07-02 16:59:11 +00:00
|
|
|
|
The following illustration and list summarize the application development general workflow.
|
2011-09-23 15:07:41 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<imagedata fileref="figures/app-dev-flow.png"
|
2011-09-23 15:07:41 +00:00
|
|
|
|
width="7in" depth="8in" align="center" scale="100" />
|
2012-12-07 23:23:56 +00:00
|
|
|
|
</para>
|
2011-09-23 15:07:41 +00:00
|
|
|
|
|
|
|
|
|
<para>
|
|
|
|
|
<orderedlist>
|
2013-04-10 19:45:18 +00:00
|
|
|
|
<listitem><para><emphasis>Prepare the host system for the Yocto Project</emphasis>:
|
2012-12-07 23:23:56 +00:00
|
|
|
|
See
|
2013-02-01 22:30:12 +00:00
|
|
|
|
"<ulink url='&YOCTO_DOCS_QS_URL;#the-linux-distro'>The Linux Distribution</ulink>" and
|
2012-03-09 19:40:39 +00:00
|
|
|
|
"<ulink url='&YOCTO_DOCS_QS_URL;#packages'>The Packages</ulink>" sections both
|
2011-09-23 15:07:41 +00:00
|
|
|
|
in the Yocto Project Quick Start for requirements.</para></listitem>
|
2013-04-10 19:45:18 +00:00
|
|
|
|
<listitem><para><emphasis>Secure the Yocto Project kernel target image</emphasis>:
|
2013-02-01 22:30:12 +00:00
|
|
|
|
You must have a target kernel image that has been built using the OpenEmbedded
|
2012-07-02 16:59:11 +00:00
|
|
|
|
build system.</para>
|
2011-09-23 15:07:41 +00:00
|
|
|
|
<para>Depending on whether the Yocto Project has a pre-built image that matches your target
|
|
|
|
|
architecture and where you are going to run the image while you develop your application
|
2012-04-26 15:16:52 +00:00
|
|
|
|
(QEMU or real hardware), the area from which you get the image differs.
|
2011-09-23 15:07:41 +00:00
|
|
|
|
<itemizedlist>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para>Download the image from
|
2012-10-01 18:09:25 +00:00
|
|
|
|
<ulink url='&YOCTO_MACHINES_DL_URL;'><filename>machines</filename></ulink>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
if your target architecture is supported and you are going to develop
|
2012-10-01 18:09:25 +00:00
|
|
|
|
and test your application on actual hardware.</para></listitem>
|
2013-02-01 22:30:12 +00:00
|
|
|
|
<listitem><para>Download the image from
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<ulink url='&YOCTO_QEMU_DL_URL;'>
|
2011-09-23 15:07:41 +00:00
|
|
|
|
<filename>machines/qemu</filename></ulink> if your target architecture is supported
|
2012-12-07 23:23:56 +00:00
|
|
|
|
and you are going to develop and test your application using the QEMU
|
2011-09-23 15:07:41 +00:00
|
|
|
|
emulator.</para></listitem>
|
|
|
|
|
<listitem><para>Build your image if you cannot find a pre-built image that matches
|
|
|
|
|
your target architecture.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
If your target architecture is similar to a supported architecture, you can
|
2011-09-23 15:07:41 +00:00
|
|
|
|
modify the kernel image before you build it.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
See the
|
2012-10-08 17:14:58 +00:00
|
|
|
|
"<link linkend='patching-the-kernel'>Patching the Kernel</link>"
|
|
|
|
|
section for an example.</para></listitem>
|
2011-09-23 15:07:41 +00:00
|
|
|
|
</itemizedlist></para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<para>For information on pre-built kernel image naming schemes for images
|
2011-09-23 15:07:41 +00:00
|
|
|
|
that can run on the QEMU emulator, see the
|
2012-08-14 20:36:32 +00:00
|
|
|
|
"<ulink url='&YOCTO_DOCS_QS_URL;#downloading-the-pre-built-linux-kernel'>Downloading the Pre-Built Linux Kernel</ulink>"
|
2012-03-09 19:40:39 +00:00
|
|
|
|
section in the Yocto Project Quick Start.</para></listitem>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para><emphasis>Install the ADT</emphasis>:
|
2011-09-23 15:07:41 +00:00
|
|
|
|
The ADT provides a target-specific cross-development toolchain, the root filesystem,
|
|
|
|
|
the QEMU emulator, and other tools that can help you develop your application.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
While it is possible to get these pieces separately, the ADT Installer provides an
|
2013-04-10 19:45:18 +00:00
|
|
|
|
easy, inclusive method.
|
2011-09-23 15:07:41 +00:00
|
|
|
|
You can get these pieces by running an ADT installer script, which is configurable.
|
|
|
|
|
For information on how to install the ADT, see the
|
2012-03-09 19:40:39 +00:00
|
|
|
|
"<ulink url='&YOCTO_DOCS_ADT_URL;#using-the-adt-installer'>Using the ADT Installer</ulink>"
|
2012-12-07 23:23:56 +00:00
|
|
|
|
section
|
2012-07-23 17:05:44 +00:00
|
|
|
|
in the Yocto Project Application Developer's Guide.</para></listitem>
|
2013-04-10 19:45:18 +00:00
|
|
|
|
<listitem><para><emphasis>If applicable, secure the target root filesystem
|
|
|
|
|
and the Cross-development toolchain</emphasis>:
|
2011-09-23 15:07:41 +00:00
|
|
|
|
If you choose not to install the ADT using the ADT Installer,
|
2012-12-07 23:23:56 +00:00
|
|
|
|
you need to find and download the appropriate root filesystem and
|
2012-10-01 18:09:25 +00:00
|
|
|
|
the cross-development toolchain.</para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<para>You can find the tarballs for the root filesystem in the same area used
|
2012-10-01 18:09:25 +00:00
|
|
|
|
for the kernel image.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Depending on the type of image you are running, the root filesystem you need differs.
|
|
|
|
|
For example, if you are developing an application that runs on an image that
|
2013-04-10 19:45:18 +00:00
|
|
|
|
supports Sato, you need to get a root filesystem that supports Sato.</para>
|
2012-10-01 18:09:25 +00:00
|
|
|
|
<para>You can find the cross-development toolchains at
|
|
|
|
|
<ulink url='&YOCTO_TOOLCHAIN_DL_URL;'><filename>toolchains</filename></ulink>.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Be sure to get the correct toolchain for your development host and your
|
2012-10-01 18:09:25 +00:00
|
|
|
|
target architecture.
|
|
|
|
|
See the "<ulink url='&YOCTO_DOCS_ADT_URL;#using-an-existing-toolchain-tarball'>Using a Cross-Toolchain Tarball</ulink>"
|
2012-12-07 23:23:56 +00:00
|
|
|
|
section in the Yocto Project Application Developer's Guide for information
|
|
|
|
|
and the
|
2012-10-01 18:09:25 +00:00
|
|
|
|
"<ulink url='&YOCTO_DOCS_QS_URL;#installing-the-toolchain'>Installing the Toolchain</ulink>"
|
2012-12-07 23:23:56 +00:00
|
|
|
|
in the Yocto Project Quick Start for information on finding and installing
|
2012-10-01 18:09:25 +00:00
|
|
|
|
the correct toolchain based on your host development system and your target
|
|
|
|
|
architecture.
|
2011-09-23 15:07:41 +00:00
|
|
|
|
</para></listitem>
|
2013-04-10 19:45:18 +00:00
|
|
|
|
<listitem><para><emphasis>Create and build your application</emphasis>:
|
2011-09-23 15:07:41 +00:00
|
|
|
|
At this point, you need to have source files for your application.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Once you have the files, you can use the Eclipse IDE to import them and build the
|
|
|
|
|
project.
|
|
|
|
|
If you are not using Eclipse, you need to use the cross-development tools you have
|
|
|
|
|
installed to create the image.</para></listitem>
|
2013-04-10 19:45:18 +00:00
|
|
|
|
<listitem><para><emphasis>Deploy the image with the application</emphasis>:
|
2012-12-07 23:23:56 +00:00
|
|
|
|
If you are using the Eclipse IDE, you can deploy your image to the hardware or to
|
|
|
|
|
QEMU through the project's preferences.
|
|
|
|
|
If you are not using the Eclipse IDE, then you need to deploy the application
|
2012-10-01 18:27:07 +00:00
|
|
|
|
to the hardware using other methods.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Or, if you are using QEMU, you need to use that tool and load your image in for testing.
|
|
|
|
|
</para></listitem>
|
2013-04-10 19:45:18 +00:00
|
|
|
|
<listitem><para><emphasis>Test and debug the application</emphasis>:
|
2011-09-23 15:07:41 +00:00
|
|
|
|
Once your application is deployed, you need to test it.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Within the Eclipse IDE, you can use the debugging environment along with the
|
|
|
|
|
set of user-space tools installed along with the ADT to debug your application.
|
2012-08-14 20:36:32 +00:00
|
|
|
|
Of course, the same user-space tools are available separately if you choose
|
2011-09-23 15:07:41 +00:00
|
|
|
|
not to use the Eclipse IDE.</para></listitem>
|
|
|
|
|
</orderedlist>
|
|
|
|
|
</para>
|
|
|
|
|
</section>
|
|
|
|
|
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<section id='adt-eclipse'>
|
|
|
|
|
<title>Working Within Eclipse</title>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
The Eclipse IDE is a popular development environment and it fully
|
|
|
|
|
supports development using the Yocto Project.
|
|
|
|
|
<note>
|
|
|
|
|
This release of the Yocto Project supports both the Kepler
|
|
|
|
|
and Juno versions of the Eclipse IDE.
|
|
|
|
|
Thus, the following information provides setup information for
|
|
|
|
|
both versions.
|
2012-08-14 20:36:32 +00:00
|
|
|
|
</note>
|
|
|
|
|
</para>
|
|
|
|
|
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
When you install and configure the Eclipse Yocto Project Plug-in
|
|
|
|
|
into the Eclipse IDE, you maximize your Yocto Project experience.
|
|
|
|
|
Installing and configuring the Plug-in results in an environment
|
|
|
|
|
that has extensions specifically designed to let you more easily
|
|
|
|
|
develop software.
|
|
|
|
|
These extensions allow for cross-compilation, deployment, and
|
|
|
|
|
execution of your output into a QEMU emulation session as well as
|
|
|
|
|
actual target hardware.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
You can also perform cross-debugging and profiling.
|
2013-09-19 20:16:53 +00:00
|
|
|
|
The environment also supports a suite of tools that allows you
|
|
|
|
|
to perform remote profiling, tracing, collection of power data,
|
|
|
|
|
collection of latency data, and collection of performance data.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
This section describes how to install and configure the Eclipse IDE
|
2012-07-23 18:23:56 +00:00
|
|
|
|
Yocto Plug-in and how to use it to develop your application.
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<section id='setting-up-the-eclipse-ide'>
|
|
|
|
|
<title>Setting Up the Eclipse IDE</title>
|
|
|
|
|
|
|
|
|
|
<para>
|
|
|
|
|
To develop within the Eclipse IDE, you need to do the following:
|
|
|
|
|
<orderedlist>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Install the optimal version of the Eclipse
|
|
|
|
|
IDE.</para></listitem>
|
|
|
|
|
<listitem><para>Configure the Eclipse IDE.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Install the Eclipse Yocto Plug-in.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Configure the Eclipse Yocto Plug-in.
|
|
|
|
|
</para></listitem>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</orderedlist>
|
|
|
|
|
<note>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
Do not install Eclipse from your distribution's package
|
|
|
|
|
repository.
|
|
|
|
|
Be sure to install Eclipse from the official Eclipse
|
|
|
|
|
download site as directed in the next section.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</note>
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<section id='installing-eclipse-ide'>
|
|
|
|
|
<title>Installing the Eclipse IDE</title>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
It is recommended that you have the Kepler 4.3 version of
|
|
|
|
|
the Eclipse IDE installed on your development system.
|
|
|
|
|
However, if you currently have the Juno 4.2 version
|
|
|
|
|
installed and you do not want to upgrade the IDE, you can
|
|
|
|
|
configure Juno to work with the Yocto Project.
|
2012-08-14 20:36:32 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
If you do not have the Kepler 4.3 Eclipse IDE installed, you
|
|
|
|
|
can find the tarball at
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<ulink url='&ECLIPSE_MAIN_URL;'></ulink>.
|
2013-09-19 20:16:53 +00:00
|
|
|
|
From that site, choose the Eclipse Standard 4.3 version
|
|
|
|
|
particular to your development host.
|
|
|
|
|
This version contains the Eclipse Platform, the Java
|
|
|
|
|
Development Tools (JDT), and the Plug-in Development
|
|
|
|
|
Environment.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
Once you have downloaded the tarball, extract it into a
|
|
|
|
|
clean directory.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
For example, the following commands unpack and install the
|
|
|
|
|
downloaded Eclipse IDE tarball into a clean directory
|
2012-10-01 18:27:07 +00:00
|
|
|
|
using the default name <filename>eclipse</filename>:
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<literallayout class='monospaced'>
|
|
|
|
|
$ cd ~
|
2013-09-19 20:16:53 +00:00
|
|
|
|
$ tar -xzvf ~/Downloads/eclipse-standard-kepler-R-linux-gtk-x86_64.tar.gz
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</literallayout>
|
|
|
|
|
</para>
|
|
|
|
|
</section>
|
|
|
|
|
|
2013-09-20 05:29:37 +00:00
|
|
|
|
<section id='configuring-the-eclipse-ide'>
|
|
|
|
|
<title>Configuring the Eclipse IDE</title>
|
2012-08-14 20:36:32 +00:00
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
This section presents the steps needed to configure the
|
2013-09-20 05:29:37 +00:00
|
|
|
|
Eclipse IDE.
|
2012-08-14 20:36:32 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
Before installing and configuring the Eclipse Yocto Plug-in,
|
2013-09-20 05:29:37 +00:00
|
|
|
|
you need to configure the Eclipse IDE.
|
2012-08-14 20:36:32 +00:00
|
|
|
|
Follow these general steps:
|
|
|
|
|
<orderedlist>
|
|
|
|
|
<listitem><para>Start the Eclipse IDE.</para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Make sure you are in your Workbench and
|
|
|
|
|
select "Install New Software" from the "Help"
|
|
|
|
|
pull-down menu.</para></listitem>
|
|
|
|
|
<listitem><para>Select
|
2013-09-20 05:29:37 +00:00
|
|
|
|
<filename>Kepler - &ECLIPSE_KEPLER_URL;</filename>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
from the "Work with:" pull-down menu.
|
2013-09-20 05:29:37 +00:00
|
|
|
|
<note>
|
|
|
|
|
For Juno, select
|
|
|
|
|
<filename>Juno - &ECLIPSE_JUNO_URL;</filename>
|
|
|
|
|
</note>
|
2012-08-14 20:36:32 +00:00
|
|
|
|
</para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Expand the box next to "Linux Tools"
|
|
|
|
|
and select the
|
|
|
|
|
<filename>LTTng - Linux Tracing Toolkit</filename>
|
|
|
|
|
boxes.</para></listitem>
|
|
|
|
|
<listitem><para>Expand the box next to "Mobile and
|
|
|
|
|
Device Development" and select the following boxes:
|
2012-08-14 20:36:32 +00:00
|
|
|
|
<itemizedlist>
|
|
|
|
|
<listitem><para><filename>C/C++ Remote Launch</filename></para></listitem>
|
|
|
|
|
<listitem><para><filename>Remote System Explorer End-user Runtime</filename></para></listitem>
|
|
|
|
|
<listitem><para><filename>Remote System Explorer User Actions</filename></para></listitem>
|
|
|
|
|
<listitem><para><filename>Target Management Terminal</filename></para></listitem>
|
|
|
|
|
<listitem><para><filename>TCF Remote System Explorer add-in</filename></para></listitem>
|
|
|
|
|
<listitem><para><filename>TCF Target Explorer</filename></para></listitem>
|
|
|
|
|
</itemizedlist></para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Expand the box next to "Programming
|
|
|
|
|
Languages" and select the
|
|
|
|
|
<filename>Autotools Support for CDT</filename>
|
|
|
|
|
and <filename>C/C++ Development Tools</filename>
|
|
|
|
|
boxes.</para></listitem>
|
|
|
|
|
<listitem><para>Complete the installation and restart
|
|
|
|
|
the Eclipse IDE.</para></listitem>
|
2012-08-14 20:36:32 +00:00
|
|
|
|
</orderedlist>
|
|
|
|
|
</para>
|
|
|
|
|
</section>
|
|
|
|
|
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<section id='installing-the-eclipse-yocto-plug-in'>
|
|
|
|
|
<title>Installing or Accessing the Eclipse Yocto Plug-in</title>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
You can install the Eclipse Yocto Plug-in into the Eclipse
|
|
|
|
|
IDE one of two ways: use the Yocto Project's Eclipse
|
2013-09-26 20:39:27 +00:00
|
|
|
|
Update site to install the pre-built plug-in or build and
|
2013-09-19 20:16:53 +00:00
|
|
|
|
install the plug-in from the latest source code.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<section id='new-software'>
|
|
|
|
|
<title>Installing the Pre-built Plug-in from the Yocto Project Eclipse Update Site</title>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
To install the Eclipse Yocto Plug-in from the update
|
|
|
|
|
site, follow these steps:
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<orderedlist>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Start up the Eclipse IDE.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>In Eclipse, select "Install New
|
|
|
|
|
Software" from the "Help" menu.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Click "Add..." in the "Work with:"
|
|
|
|
|
area.</para></listitem>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para>Enter
|
2013-09-20 05:29:37 +00:00
|
|
|
|
<filename>&ECLIPSE_DL_PLUGIN_URL;/kepler</filename>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
in the URL field and provide a meaningful name
|
2013-09-20 05:29:37 +00:00
|
|
|
|
in the "Name" field.
|
|
|
|
|
<note>
|
|
|
|
|
If you are using Juno, use
|
|
|
|
|
<filename>&ECLIPSE_DL_PLUGIN_URL;/juno</filename>
|
|
|
|
|
in the URL field.
|
|
|
|
|
</note></para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Click "OK" to have the entry added
|
|
|
|
|
to the "Work with:" drop-down list.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Select the entry for the plug-in
|
|
|
|
|
from the "Work with:" drop-down list.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</para></listitem>
|
2013-09-20 05:29:37 +00:00
|
|
|
|
<listitem><para>Check the boxes next to
|
|
|
|
|
<filename>Yocto Project ADT Plug-in</filename>,
|
|
|
|
|
<filename>Yocto Project Bitbake Commander Plug-in</filename>,
|
|
|
|
|
and
|
|
|
|
|
<filename>Yocto Project Documentation plug-in</filename>.
|
2013-09-19 20:16:53 +00:00
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Complete the remaining software
|
|
|
|
|
installation steps and then restart the Eclipse
|
|
|
|
|
IDE to finish the installation of the plug-in.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</para></listitem>
|
|
|
|
|
</orderedlist>
|
|
|
|
|
</para>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section id='zip-file-method'>
|
|
|
|
|
<title>Installing the Plug-in Using the Latest Source Code</title>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
To install the Eclipse Yocto Plug-in from the latest
|
|
|
|
|
source code, follow these steps:
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<orderedlist>
|
2013-09-26 20:39:27 +00:00
|
|
|
|
<listitem><para>Be sure your development system
|
|
|
|
|
is not using OpenJDK to build the plug-in
|
|
|
|
|
by doing the following:
|
|
|
|
|
<orderedlist>
|
|
|
|
|
<listitem><para>Use the Oracle JDK.
|
2013-10-04 23:33:33 +00:00
|
|
|
|
If you don't have that, go to
|
2013-09-26 20:39:27 +00:00
|
|
|
|
<ulink url='http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html'></ulink>
|
|
|
|
|
and download the appropriate tarball
|
2013-10-04 23:33:33 +00:00
|
|
|
|
for your development system and
|
2013-09-26 20:39:27 +00:00
|
|
|
|
extract it into your home directory.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>In the shell you are going
|
2013-10-04 23:33:33 +00:00
|
|
|
|
to do your work, export the location of
|
2013-09-26 20:39:27 +00:00
|
|
|
|
the Oracle Java as follows:
|
|
|
|
|
<literallayout class='monospaced'>
|
|
|
|
|
export PATH=~/jdk1.7.0_40/bin:$PATH
|
|
|
|
|
</literallayout></para></listitem>
|
2013-10-04 23:33:33 +00:00
|
|
|
|
</orderedlist></para></listitem>
|
2013-09-26 20:39:27 +00:00
|
|
|
|
<listitem><para>In the same shell, create a Git
|
2013-09-19 20:16:53 +00:00
|
|
|
|
repository with:
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<literallayout class='monospaced'>
|
2013-09-26 20:39:27 +00:00
|
|
|
|
$ cd ~
|
|
|
|
|
$ git clone git://git.yoctoproject.org/eclipse-poky-kepler
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</literallayout>
|
2013-09-20 05:29:37 +00:00
|
|
|
|
<note>
|
|
|
|
|
If you are using Juno, the repository is
|
|
|
|
|
located at
|
|
|
|
|
<filename>git://git.yoctoproject.org/eclipse-poky-juno</filename>.
|
|
|
|
|
</note>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
For this example, the repository is named
|
2013-09-26 20:39:27 +00:00
|
|
|
|
<filename>~/eclipse-poky-kepler</filename>.
|
2013-09-19 20:16:53 +00:00
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Change to the directory where you
|
|
|
|
|
set up the Git repository:
|
2012-11-28 00:55:56 +00:00
|
|
|
|
<literallayout class='monospaced'>
|
2013-09-26 20:39:27 +00:00
|
|
|
|
$ cd ~/eclipse-poky-kepler
|
2012-11-28 00:55:56 +00:00
|
|
|
|
</literallayout></para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Be sure you are in the right branch
|
|
|
|
|
for your Git repository.
|
|
|
|
|
For this release set the branch to
|
|
|
|
|
<filename>&DISTRO_NAME;</filename>:
|
2012-09-07 15:58:36 +00:00
|
|
|
|
<literallayout class='monospaced'>
|
2013-09-26 20:39:27 +00:00
|
|
|
|
$ git checkout &DISTRO_NAME;
|
2012-09-07 15:58:36 +00:00
|
|
|
|
</literallayout></para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Change to the
|
|
|
|
|
<filename>scripts</filename>
|
2012-11-28 00:55:56 +00:00
|
|
|
|
directory within the Git repository:
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<literallayout class='monospaced'>
|
2012-11-28 00:55:56 +00:00
|
|
|
|
$ cd scripts
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</literallayout></para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Set up the local build environment
|
|
|
|
|
by running the setup script:
|
2012-09-07 15:58:36 +00:00
|
|
|
|
<literallayout class='monospaced'>
|
2012-11-28 00:55:56 +00:00
|
|
|
|
$ ./setup.sh
|
2012-09-07 15:58:36 +00:00
|
|
|
|
</literallayout></para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>When the script finishes execution,
|
|
|
|
|
it prompts you with instructions on how to run
|
|
|
|
|
the <filename>build.sh</filename> script, which
|
|
|
|
|
is also in the <filename>scripts</filename> of
|
|
|
|
|
the Git repository created earlier.
|
2012-11-28 00:55:56 +00:00
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Run the <filename>build.sh</filename> script
|
2012-12-07 23:23:56 +00:00
|
|
|
|
as directed.
|
2013-09-19 20:16:53 +00:00
|
|
|
|
Be sure to provide the name of the Git branch
|
|
|
|
|
along with the Yocto Project release you are
|
|
|
|
|
using.
|
|
|
|
|
Here is an example that uses the
|
|
|
|
|
<filename>&DISTRO_NAME;</filename> branch:
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<literallayout class='monospaced'>
|
2013-09-26 20:39:27 +00:00
|
|
|
|
$ ECLIPSE_HOME=/home/scottrif/eclipse-poky-kepler/scripts/eclipse ./build.sh &DISTRO_NAME; &DISTRO_NAME;
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</literallayout>
|
|
|
|
|
After running the script, the file
|
|
|
|
|
<filename>org.yocto.sdk-<release>-<date>-archive.zip</filename>
|
|
|
|
|
is in the current directory.</para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>If necessary, start the Eclipse IDE
|
|
|
|
|
and be sure you are in the Workbench.
|
|
|
|
|
</para></listitem>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<listitem><para>Select "Install New Software" from the "Help" pull-down menu.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Click "Add".</para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Provide anything you want in the
|
|
|
|
|
"Name" field.</para></listitem>
|
|
|
|
|
<listitem><para>Click "Archive" and browse to the
|
|
|
|
|
ZIP file you built in step seven.
|
|
|
|
|
This ZIP file should not be "unzipped", and must
|
|
|
|
|
be the <filename>*archive.zip</filename> file
|
|
|
|
|
created by running the
|
|
|
|
|
<filename>build.sh</filename> script.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Click through the "Okay" buttons.
|
|
|
|
|
</para></listitem>
|
2013-10-04 23:33:33 +00:00
|
|
|
|
<listitem><para>Check the boxes
|
2013-09-19 20:16:53 +00:00
|
|
|
|
in the installation window and complete
|
|
|
|
|
the installation.</para></listitem>
|
|
|
|
|
<listitem><para>Restart the Eclipse IDE if
|
|
|
|
|
necessary.</para></listitem>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</orderedlist>
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
At this point you should be able to configure the
|
|
|
|
|
Eclipse Yocto Plug-in as described in the
|
2012-07-23 18:23:56 +00:00
|
|
|
|
"<link linkend='configuring-the-eclipse-yocto-plug-in'>Configuring the Eclipse Yocto Plug-in</link>"
|
|
|
|
|
section.</para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
</section>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section id='configuring-the-eclipse-yocto-plug-in'>
|
|
|
|
|
<title>Configuring the Eclipse Yocto Plug-in</title>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
Configuring the Eclipse Yocto Plug-in involves setting the
|
|
|
|
|
Cross Compiler options and the Target options.
|
|
|
|
|
The configurations you choose become the default settings
|
|
|
|
|
for all projects.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
You do have opportunities to change them later when
|
|
|
|
|
you configure the project (see the following section).
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
To start, you need to do the following from within the
|
|
|
|
|
Eclipse IDE:
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<itemizedlist>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Choose "Preferences" from the
|
|
|
|
|
"Windows" menu to display the Preferences Dialog.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Click "Yocto Project ADT".
|
|
|
|
|
</para></listitem>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</itemizedlist>
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<section id='configuring-the-cross-compiler-options'>
|
|
|
|
|
<title>Configuring the Cross-Compiler Options</title>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
To configure the Cross Compiler Options, you must select
|
|
|
|
|
the type of toolchain, point to the toolchain, specify
|
|
|
|
|
the sysroot location, and select the target
|
|
|
|
|
architecture.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<itemizedlist>
|
|
|
|
|
<listitem><para><emphasis>Selecting the Toolchain Type:</emphasis>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
Choose between
|
|
|
|
|
<filename>Standalone pre-built toolchain</filename>
|
|
|
|
|
and
|
|
|
|
|
<filename>Build system derived toolchain</filename>
|
|
|
|
|
for Cross Compiler Options.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<itemizedlist>
|
|
|
|
|
<listitem><para><emphasis>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<filename>Standalone Pre-built Toolchain:</filename></emphasis>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
Select this mode when you are using
|
|
|
|
|
a stand-alone cross-toolchain.
|
|
|
|
|
For example, suppose you are an
|
|
|
|
|
application developer and do not
|
2012-07-23 18:23:56 +00:00
|
|
|
|
need to build a target image.
|
2013-09-19 20:16:53 +00:00
|
|
|
|
Instead, you just want to use an
|
|
|
|
|
architecture-specific toolchain on
|
|
|
|
|
an existing kernel and target root
|
|
|
|
|
filesystem.</para></listitem>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<listitem><para><emphasis>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<filename>Build System Derived Toolchain:</filename></emphasis>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
Select this mode if the
|
|
|
|
|
cross-toolchain has been installed
|
|
|
|
|
and built as part of the
|
2013-04-10 20:20:35 +00:00
|
|
|
|
<link linkend='build-directory'>Build Directory</link>.
|
2013-09-19 20:16:53 +00:00
|
|
|
|
When you select
|
|
|
|
|
<filename>Build system derived toolchain</filename>,
|
2012-12-07 23:23:56 +00:00
|
|
|
|
you are using the toolchain bundled
|
2012-10-22 20:16:49 +00:00
|
|
|
|
inside the Build Directory.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</para></listitem>
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para><emphasis>Point to the Toolchain:</emphasis>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
If you are using a stand-alone pre-built
|
|
|
|
|
toolchain, you should be pointing to where it is
|
|
|
|
|
installed.
|
|
|
|
|
If you used the ADT Installer script and
|
|
|
|
|
accepted the default installation directory, the
|
|
|
|
|
toolchain will be installed in the
|
|
|
|
|
<filename>&YOCTO_ADTPATH_DIR;</filename>
|
|
|
|
|
directory.
|
|
|
|
|
Sections "<ulink url='&YOCTO_DOCS_ADT_URL;#configuring-and-running-the-adt-installer-script'>Configuring and Running the ADT Installer Script</ulink>"
|
|
|
|
|
and
|
2012-12-07 23:23:56 +00:00
|
|
|
|
"<ulink url='&YOCTO_DOCS_ADT_URL;#using-an-existing-toolchain-tarball'>Using a Cross-Toolchain Tarball</ulink>"
|
2013-09-19 20:16:53 +00:00
|
|
|
|
in the Yocto Project Application Developer's
|
|
|
|
|
Guide describe how to install a stand-alone
|
|
|
|
|
cross-toolchain.</para>
|
|
|
|
|
<para>If you are using a system-derived
|
|
|
|
|
toolchain, the path you provide for the
|
|
|
|
|
<filename>Toolchain Root Location</filename>
|
|
|
|
|
field is the
|
|
|
|
|
<link linkend='build-directory'>Build Directory</link>.
|
|
|
|
|
See the
|
|
|
|
|
"<ulink url='&YOCTO_DOCS_ADT_URL;#using-the-toolchain-from-within-the-build-tree'>Using BitBake and the Build Directory</ulink>"
|
|
|
|
|
section in the Yocto Project Application
|
|
|
|
|
Developer's Guide for information on how to
|
|
|
|
|
install the toolchain into the Build
|
|
|
|
|
Directory.</para></listitem>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<listitem><para><emphasis>Specify the Sysroot Location:</emphasis>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
This location is where the root filesystem for
|
|
|
|
|
the target hardware resides.
|
|
|
|
|
If you used the ADT Installer script and
|
|
|
|
|
accepted the default installation directory,
|
|
|
|
|
then the location is
|
2012-09-13 21:01:58 +00:00
|
|
|
|
<filename>/opt/poky/<release></filename>.
|
2013-09-19 20:16:53 +00:00
|
|
|
|
Additionally, when you use the ADT Installer
|
|
|
|
|
script, the same location is used for the QEMU
|
|
|
|
|
user-space tools and the NFS boot process.
|
|
|
|
|
</para>
|
|
|
|
|
<para>If you used either of the other two
|
|
|
|
|
methods to install the toolchain or did not
|
|
|
|
|
accept the ADT Installer script's default
|
|
|
|
|
installation directory, then the location of
|
|
|
|
|
the sysroot filesystem depends on where you
|
|
|
|
|
separately extracted and installed the
|
|
|
|
|
filesystem.</para>
|
|
|
|
|
<para>For information on how to install the
|
|
|
|
|
toolchain and on how to extract and install the
|
|
|
|
|
sysroot filesystem, see the
|
2012-09-13 21:01:58 +00:00
|
|
|
|
"<ulink url='&YOCTO_DOCS_ADT_URL;#installing-the-adt'>Installing the ADT and Toolchains</ulink>" section.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para><emphasis>Select the Target Architecture:</emphasis>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
The target architecture is the type of hardware
|
|
|
|
|
you are going to use or emulate.
|
|
|
|
|
Use the pull-down
|
|
|
|
|
<filename>Target Architecture</filename> menu
|
|
|
|
|
to make your selection.
|
|
|
|
|
The pull-down menu should have the supported
|
|
|
|
|
architectures.
|
|
|
|
|
If the architecture you need is not listed in
|
|
|
|
|
the menu, you will need to build the image.
|
|
|
|
|
See the
|
|
|
|
|
"<ulink url='&YOCTO_DOCS_QS_URL;#building-image'>Building an Image</ulink>"
|
|
|
|
|
section of the Yocto Project Quick Start for
|
|
|
|
|
more information.</para></listitem>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</itemizedlist>
|
|
|
|
|
</para>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section id='configuring-the-target-options'>
|
|
|
|
|
<title>Configuring the Target Options</title>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
You can choose to emulate hardware using the QEMU
|
|
|
|
|
emulator, or you can choose to run your image on actual
|
|
|
|
|
hardware.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<itemizedlist>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para><emphasis><filename>QEMU:</filename></emphasis>
|
|
|
|
|
Select this option if you will be using the
|
|
|
|
|
QEMU emulator.
|
|
|
|
|
If you are using the emulator, you also need to
|
|
|
|
|
locate the kernel and specify any custom
|
|
|
|
|
options.</para>
|
|
|
|
|
<para>If you selected
|
|
|
|
|
<filename>Build system derived toolchain</filename>,
|
|
|
|
|
the target kernel you built will be located in
|
|
|
|
|
the Build Directory in
|
2013-09-20 05:29:37 +00:00
|
|
|
|
<filename>tmp/deploy/images/<machine></filename>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
directory.
|
|
|
|
|
If you selected
|
|
|
|
|
<filename>Standalone pre-built toolchain</filename>,
|
|
|
|
|
the pre-built image you downloaded is located
|
|
|
|
|
in the directory you specified when you
|
|
|
|
|
downloaded the image.</para>
|
|
|
|
|
<para>Most custom options are for advanced QEMU
|
|
|
|
|
users to further customize their QEMU instance.
|
|
|
|
|
These options are specified between paired
|
|
|
|
|
angled brackets.
|
|
|
|
|
Some options must be specified outside the
|
|
|
|
|
brackets.
|
|
|
|
|
In particular, the options
|
|
|
|
|
<filename>serial</filename>,
|
|
|
|
|
<filename>nographic</filename>, and
|
|
|
|
|
<filename>kvm</filename> must all be outside the
|
|
|
|
|
brackets.
|
|
|
|
|
Use the <filename>man qemu</filename> command
|
|
|
|
|
to get help on all the options and their use.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
The following is an example:
|
|
|
|
|
<literallayout class='monospaced'>
|
|
|
|
|
serial ‘<-m 256 -full-screen>’
|
|
|
|
|
</literallayout></para>
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
Regardless of the mode, Sysroot is already
|
|
|
|
|
defined as part of the Cross-Compiler Options
|
|
|
|
|
configuration in the
|
|
|
|
|
<filename>Sysroot Location:</filename> field.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para><emphasis><filename>External HW:</filename></emphasis>
|
|
|
|
|
Select this option if you will be using actual
|
|
|
|
|
hardware.</para></listitem>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</itemizedlist>
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-04-10 20:23:31 +00:00
|
|
|
|
Click the "OK" to save your plug-in configurations.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</para>
|
|
|
|
|
</section>
|
|
|
|
|
</section>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section id='creating-the-project'>
|
|
|
|
|
<title>Creating the Project</title>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
You can create two types of projects: Autotools-based, or
|
|
|
|
|
Makefile-based.
|
|
|
|
|
This section describes how to create Autotools-based projects
|
|
|
|
|
from within the Eclipse IDE.
|
|
|
|
|
For information on creating Makefile-based projects in a
|
|
|
|
|
terminal window, see the section
|
2012-07-23 18:23:56 +00:00
|
|
|
|
"<ulink url='&YOCTO_DOCS_ADT_URL;#using-the-command-line'>Using the Command Line</ulink>"
|
|
|
|
|
in the Yocto Project Application Developer's Guide.
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
To create a project based on a Yocto template and then display
|
|
|
|
|
the source code, follow these steps:
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<orderedlist>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Select "Project" from the "File -> New" menu.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Double click <filename>CC++</filename>.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Double click <filename>C Project</filename>
|
|
|
|
|
to create the project.</para></listitem>
|
|
|
|
|
<listitem><para>Expand <filename>Yocto Project ADT Project</filename>.
|
|
|
|
|
</para></listitem>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para>Select <filename>Hello World ANSI C Autotools Project</filename>.
|
2013-09-19 20:16:53 +00:00
|
|
|
|
This is an Autotools-based project based on a Yocto
|
|
|
|
|
template.</para></listitem>
|
|
|
|
|
<listitem><para>Put a name in the <filename>Project name:</filename>
|
|
|
|
|
field.
|
|
|
|
|
Do not use hyphens as part of the name.
|
|
|
|
|
</para></listitem>
|
2013-04-10 20:26:39 +00:00
|
|
|
|
<listitem><para>Click "Next".</para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Add information in the
|
|
|
|
|
<filename>Author</filename> and
|
|
|
|
|
<filename>Copyright notice</filename> fields.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Be sure the <filename>License</filename>
|
|
|
|
|
field is correct.</para></listitem>
|
2013-04-10 20:26:39 +00:00
|
|
|
|
<listitem><para>Click "Finish".</para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>If the "open perspective" prompt appears,
|
|
|
|
|
click "Yes" so that you in the C/C++ perspective.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>The left-hand navigation pane shows your
|
|
|
|
|
project.
|
|
|
|
|
You can display your source by double clicking the
|
|
|
|
|
project's source file.</para></listitem>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</orderedlist>
|
|
|
|
|
</para>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section id='configuring-the-cross-toolchains'>
|
|
|
|
|
<title>Configuring the Cross-Toolchains</title>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
The earlier section,
|
|
|
|
|
"<link linkend='configuring-the-eclipse-yocto-plug-in'>Configuring the Eclipse Yocto Plug-in</link>",
|
|
|
|
|
sets up the default project configurations.
|
|
|
|
|
You can override these settings for a given project by following
|
|
|
|
|
these steps:
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<orderedlist>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Select "Change Yocto Project Settings" from
|
|
|
|
|
the "Project" menu.
|
|
|
|
|
This selection brings up the Yocto Project Settings
|
|
|
|
|
Dialog and allows you to make changes specific to an
|
|
|
|
|
individual project.</para>
|
|
|
|
|
<para>By default, the Cross Compiler Options and Target
|
|
|
|
|
Options for a project are inherited from settings you
|
|
|
|
|
provide using the Preferences Dialog as described
|
|
|
|
|
earlier in the
|
|
|
|
|
"<link linkend='configuring-the-eclipse-yocto-plug-in'>Configuring the Eclipse Yocto Plug-in</link>" section.
|
|
|
|
|
The Yocto Project Settings Dialog allows you to override
|
|
|
|
|
those default settings for a given project.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Make your configurations for the project
|
|
|
|
|
and click "OK".
|
|
|
|
|
If you are running the Juno version of Eclipse, you can
|
|
|
|
|
skip down to the next section where you build the
|
|
|
|
|
project.
|
|
|
|
|
If you are not working with Juno, you need to reconfigure the
|
|
|
|
|
project as described in the next step.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Select "Reconfigure Project" from the
|
2013-04-10 20:31:17 +00:00
|
|
|
|
"Project" menu.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
This selection reconfigures the project by running
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<filename>autogen.sh</filename> in the workspace for
|
|
|
|
|
your project.
|
|
|
|
|
The script also runs <filename>libtoolize</filename>,
|
|
|
|
|
<filename>aclocal</filename>,
|
|
|
|
|
<filename>autoconf</filename>,
|
|
|
|
|
<filename>autoheader</filename>,
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<filename>automake --a</filename>, and
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<filename>./configure</filename>.
|
2013-04-10 20:31:17 +00:00
|
|
|
|
Click on the "Console" tab beneath your source code to
|
2013-09-19 20:16:53 +00:00
|
|
|
|
see the results of reconfiguring your project.
|
|
|
|
|
</para></listitem>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</orderedlist>
|
|
|
|
|
</para>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section id='building-the-project'>
|
|
|
|
|
<title>Building the Project</title>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
To build the project in Juno, right click on the project in
|
|
|
|
|
the navigator pane and select "Build Project".
|
|
|
|
|
If you are not running Juno, select "Build Project" from the
|
2013-04-10 20:33:01 +00:00
|
|
|
|
"Project" menu.
|
2013-09-19 20:16:53 +00:00
|
|
|
|
The console should update and you can note the cross-compiler
|
|
|
|
|
you are using.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</para>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section id='starting-qemu-in-user-space-nfs-mode'>
|
2013-04-10 21:07:31 +00:00
|
|
|
|
<title>Starting QEMU in User-Space NFS Mode</title>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
To start the QEMU emulator from within Eclipse, follow these
|
|
|
|
|
steps:
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<orderedlist>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Expose and select "External Tools" from
|
2013-04-10 20:34:56 +00:00
|
|
|
|
the "Run" menu.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
Your image should appear as a selectable menu item.
|
|
|
|
|
</para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Select your image from the menu to launch
|
|
|
|
|
the emulator in a new window.</para></listitem>
|
|
|
|
|
<listitem><para>If needed, enter your host root password in
|
|
|
|
|
the shell window at the prompt.
|
|
|
|
|
This sets up a <filename>Tap 0</filename> connection
|
|
|
|
|
needed for running in user-space NFS mode.
|
|
|
|
|
</para></listitem>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<listitem><para>Wait for QEMU to launch.</para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Once QEMU launches, you can begin operating
|
|
|
|
|
within that environment.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
For example, you could determine the IP Address
|
2013-09-19 20:16:53 +00:00
|
|
|
|
for the user-space NFS by using the
|
|
|
|
|
<filename>ifconfig</filename> command.</para></listitem>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</orderedlist>
|
|
|
|
|
</para>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section id='deploying-and-debugging-the-application'>
|
|
|
|
|
<title>Deploying and Debugging the Application</title>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
Once the QEMU emulator is running the image, you can deploy
|
|
|
|
|
your application using the Eclipse IDE and use then use
|
2013-04-10 20:41:28 +00:00
|
|
|
|
the emulator to perform debugging.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
Follow these steps to deploy the application.
|
|
|
|
|
<orderedlist>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Select "Debug Configurations..." from the
|
|
|
|
|
"Run" menu.</para></listitem>
|
|
|
|
|
<listitem><para>In the left area, expand
|
|
|
|
|
<filename>C/C++Remote Application</filename>.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Locate your project and select it to bring
|
|
|
|
|
up a new tabbed view in the Debug Configurations Dialog.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Enter the absolute path into which you want
|
|
|
|
|
to deploy the application.
|
|
|
|
|
Use the "Remote Absolute File Path for
|
|
|
|
|
C/C++Application:" field.
|
|
|
|
|
For example, enter
|
|
|
|
|
<filename>/usr/bin/<programname></filename>.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Click on the "Debugger" tab to see the
|
|
|
|
|
cross-tool debugger you are using.</para></listitem>
|
2013-04-10 20:41:28 +00:00
|
|
|
|
<listitem><para>Click on the "Main" tab.</para></listitem>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para>Create a new connection to the QEMU instance
|
2013-04-10 20:41:28 +00:00
|
|
|
|
by clicking on "new".</para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Select <filename>TCF</filename>, which means
|
|
|
|
|
Target Communication Framework.</para></listitem>
|
2013-04-10 20:41:28 +00:00
|
|
|
|
<listitem><para>Click "Next".</para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Clear out the "host name" field and enter
|
|
|
|
|
the IP Address determined earlier.</para></listitem>
|
2013-04-10 20:41:28 +00:00
|
|
|
|
<listitem><para>Click "Finish" to close the
|
|
|
|
|
New Connections Dialog.</para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Use the drop-down menu now in the
|
2013-04-10 20:41:28 +00:00
|
|
|
|
"Connection" field and pick the IP Address you entered.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Click "Run" to bring up a login screen
|
2012-07-23 18:23:56 +00:00
|
|
|
|
and login.</para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Accept the debug perspective.
|
|
|
|
|
</para></listitem>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</orderedlist>
|
|
|
|
|
</para>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section id='running-user-space-tools'>
|
|
|
|
|
<title>Running User-Space Tools</title>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
As mentioned earlier in the manual, several tools exist that
|
|
|
|
|
enhance your development experience.
|
|
|
|
|
These tools are aids in developing and debugging applications
|
|
|
|
|
and images.
|
|
|
|
|
You can run these user-space tools from within the Eclipse
|
|
|
|
|
IDE through the "YoctoTools" menu.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
Once you pick a tool, you need to configure it for the remote
|
|
|
|
|
target.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Every tool needs to have the connection configured.
|
2013-09-19 20:16:53 +00:00
|
|
|
|
You must select an existing TCF-based RSE connection to the
|
|
|
|
|
remote target.
|
2013-04-10 21:05:42 +00:00
|
|
|
|
If one does not exist, click "New" to create one.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
|
|
|
|
Here are some specifics about the remote tools:
|
|
|
|
|
<itemizedlist>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para><emphasis><filename>OProfile</filename>:</emphasis>
|
|
|
|
|
Selecting this tool causes the
|
|
|
|
|
<filename>oprofile-server</filename> on the remote
|
|
|
|
|
target to launch on the local host machine.
|
|
|
|
|
The <filename>oprofile-viewer</filename> must be
|
|
|
|
|
installed on the local host machine and the
|
|
|
|
|
<filename>oprofile-server</filename> must be installed
|
|
|
|
|
on the remote target, respectively, in order to use.
|
|
|
|
|
You must compile and install the
|
|
|
|
|
<filename>oprofile-viewer</filename> from the source
|
|
|
|
|
code on your local host machine.
|
|
|
|
|
Furthermore, in order to convert the target's sample
|
|
|
|
|
format data into a form that the host can use, you must
|
|
|
|
|
have OProfile version 0.9.4 or greater installed on the
|
|
|
|
|
host.</para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<para>You can locate both the viewer and server from
|
2013-04-10 21:05:42 +00:00
|
|
|
|
<ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/oprofileui/'></ulink>.
|
2013-01-25 20:18:23 +00:00
|
|
|
|
You can also find more information on setting up and
|
|
|
|
|
using this tool in the
|
|
|
|
|
"<ulink url='&YOCTO_DOCS_PROF_URL;#profile-manual-oprofile'>OProfile</ulink>"
|
2013-09-19 20:16:53 +00:00
|
|
|
|
section of the Yocto Project Profiling and Tracing
|
|
|
|
|
Manual.
|
|
|
|
|
<note>The <filename>oprofile-server</filename> is
|
|
|
|
|
installed by default on the
|
|
|
|
|
<filename>core-image-sato-sdk</filename> image.</note>
|
|
|
|
|
</para></listitem>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para><emphasis><filename>Lttng2.0 ust trace import</filename>:</emphasis>
|
|
|
|
|
Selecting this tool transfers the remote target's
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<filename>Lttng</filename> tracing data back to the
|
|
|
|
|
local host machine and uses the Lttng Eclipse plug-in
|
|
|
|
|
to graphically display the output.
|
|
|
|
|
For information on how to use Lttng to trace an
|
|
|
|
|
application,
|
2013-04-10 21:05:42 +00:00
|
|
|
|
see <ulink url='http://lttng.org/documentation'></ulink>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
and the
|
|
|
|
|
"<ulink url='&YOCTO_DOCS_PROF_URL;#lttng-linux-trace-toolkit-next-generation'>LTTng (Linux Trace Toolkit, next generation)</ulink>"
|
|
|
|
|
section, which is in the Yocto Project Profiling and
|
|
|
|
|
Tracing Manual.
|
|
|
|
|
<note>Do not use
|
|
|
|
|
<filename>Lttng-user space (legacy)</filename> tool.
|
2012-10-16 18:14:36 +00:00
|
|
|
|
This tool no longer has any upstream support.</note>
|
|
|
|
|
</para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<para>Before you use the
|
|
|
|
|
<filename>Lttng2.0 ust trace import</filename> tool,
|
2013-04-10 21:05:42 +00:00
|
|
|
|
you need to setup the Lttng Eclipse plug-in and create a
|
|
|
|
|
Tracing project.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
Do the following:
|
|
|
|
|
<orderedlist>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Select "Open Perspective" from the
|
|
|
|
|
"Window" menu and then select "Tracing".
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Click "OK" to change the Eclipse
|
|
|
|
|
perspective into the Tracing perspective.
|
2012-10-16 18:14:36 +00:00
|
|
|
|
</para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Create a new Tracing project by
|
|
|
|
|
selecting "Project" from the "File -> New" menu.
|
2012-10-16 18:14:36 +00:00
|
|
|
|
</para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Choose "Tracing Project" from the
|
|
|
|
|
"Tracing" menu.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Generate your tracing data on the
|
|
|
|
|
remote target.</para></listitem>
|
|
|
|
|
<listitem><para>Select "Lttng2.0 ust trace import"
|
|
|
|
|
from the "Yocto Project Tools" menu to
|
2013-04-10 21:05:42 +00:00
|
|
|
|
start the data import process.</para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Specify your remote connection name.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>For the Ust directory path, specify
|
|
|
|
|
the location of your remote tracing data.
|
|
|
|
|
Make sure the location ends with
|
|
|
|
|
<filename>ust</filename> (e.g.
|
|
|
|
|
<filename>/usr/mysession/ust</filename>).
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Click "OK" to complete the import
|
|
|
|
|
process.
|
|
|
|
|
The data is now in the local tracing project
|
|
|
|
|
you created.</para></listitem>
|
|
|
|
|
<listitem><para>Right click on the data and then use
|
|
|
|
|
the menu to Select "Generic CTF Trace" from the
|
|
|
|
|
"Trace Type... -> Common Trace Format" menu to
|
|
|
|
|
map the tracing type.</para></listitem>
|
|
|
|
|
<listitem><para>Right click the mouse and select
|
|
|
|
|
"Open" to bring up the Eclipse Lttng Trace
|
|
|
|
|
Viewer so you view the tracing data.
|
|
|
|
|
</para></listitem>
|
2012-10-16 18:14:36 +00:00
|
|
|
|
</orderedlist></para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para><emphasis><filename>PowerTOP</filename>:</emphasis>
|
|
|
|
|
Selecting this tool runs PowerTOP on the remote target
|
|
|
|
|
machine and displays the results in a new view called
|
|
|
|
|
PowerTOP.</para>
|
|
|
|
|
<para>The "Time to gather data(sec):" field is the time
|
|
|
|
|
passed in seconds before data is gathered from the
|
|
|
|
|
remote target for analysis.</para>
|
|
|
|
|
<para>The "show pids in wakeups list:" field corresponds
|
|
|
|
|
to the <filename>-p</filename> argument passed to
|
|
|
|
|
<filename>PowerTOP</filename>.</para></listitem>
|
2013-04-10 21:05:42 +00:00
|
|
|
|
<listitem><para><emphasis><filename>LatencyTOP and Perf</filename>:</emphasis>
|
|
|
|
|
LatencyTOP identifies system latency, while
|
2013-09-19 20:16:53 +00:00
|
|
|
|
Perf monitors the system's performance counter
|
|
|
|
|
registers.
|
|
|
|
|
Selecting either of these tools causes an RSE terminal
|
|
|
|
|
view to appear from which you can run the tools.
|
|
|
|
|
Both tools refresh the entire screen to display results
|
|
|
|
|
while they run.
|
|
|
|
|
For more information on setting up and using
|
|
|
|
|
<filename>perf</filename>, see the
|
2013-01-25 20:18:23 +00:00
|
|
|
|
"<ulink url='&YOCTO_DOCS_PROF_URL;#profile-manual-perf'>perf</ulink>"
|
2013-09-19 20:16:53 +00:00
|
|
|
|
section in the Yocto Project Profiling and Tracing
|
|
|
|
|
Manual.
|
2013-01-25 20:18:23 +00:00
|
|
|
|
</para></listitem>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</itemizedlist>
|
|
|
|
|
</para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
</section>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
|
|
|
|
|
<section id='customizing-an-image-using-a-bitbake-commander-project-and-hob'>
|
|
|
|
|
<title>Customizing an Image Using a BitBake Commander Project and Hob</title>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
Within the Eclipse IDE, you can create a Yocto BitBake Commander
|
|
|
|
|
project, edit the <link linkend='metadata'>Metadata</link>, and
|
|
|
|
|
then use
|
|
|
|
|
<ulink url='&YOCTO_HOME_URL;/tools-resources/projects/hob'>Hob</ulink> to build a customized image all within one IDE.
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<section id='creating-the-yocto-bitbake-commander-project'>
|
|
|
|
|
<title>Creating the Yocto BitBake Commander Project</title>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
To create a Yocto BitBake Commander project, follow these
|
|
|
|
|
steps:
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<orderedlist>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Select "Other" from the
|
|
|
|
|
"Window -> Open Perspective" menu
|
|
|
|
|
and then choose "Bitbake Commander".
|
|
|
|
|
</para></listitem>
|
2013-04-10 21:17:06 +00:00
|
|
|
|
<listitem><para>Click "OK" to change the perspective to
|
|
|
|
|
Bitbake Commander.</para></listitem>
|
|
|
|
|
<listitem><para>Select "Project" from the "File -> New"
|
|
|
|
|
menu to create a new Yocto
|
2012-07-23 18:23:56 +00:00
|
|
|
|
Bitbake Commander project.</para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Choose "New Yocto Project" from the
|
|
|
|
|
"Yocto Project Bitbake Commander" menu and click
|
2013-04-10 21:17:06 +00:00
|
|
|
|
"Next".</para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Enter the Project Name and choose the
|
|
|
|
|
Project Location.
|
|
|
|
|
The Yocto project's Metadata files will be put under
|
|
|
|
|
the directory
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<filename><project_location>/<project_name></filename>.
|
|
|
|
|
If that directory does not exist, you need to check
|
2013-09-19 20:16:53 +00:00
|
|
|
|
the "Clone from Yocto Git Repository" box, which
|
|
|
|
|
would execute a <filename>git clone</filename>
|
|
|
|
|
command to get the project's Metadata files.
|
2013-10-14 16:55:44 +00:00
|
|
|
|
<note>
|
2013-11-01 17:00:32 +00:00
|
|
|
|
Do not specify your BitBake Commander project
|
|
|
|
|
location as your Eclipse workspace.
|
2013-10-14 16:55:44 +00:00
|
|
|
|
Doing so causes an error indicating that the
|
|
|
|
|
current project overlaps the location of
|
|
|
|
|
another project.
|
|
|
|
|
This error occurs even if no such project exits.
|
|
|
|
|
</note></para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Select <filename>Finish</filename> to
|
|
|
|
|
create the project.</para></listitem>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</orderedlist>
|
|
|
|
|
</para>
|
|
|
|
|
</section>
|
|
|
|
|
|
2013-04-10 21:21:39 +00:00
|
|
|
|
<section id='editing-the-metadata'>
|
|
|
|
|
<title>Editing the Metadata</title>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
After you create the Yocto Bitbake Commander project, you
|
|
|
|
|
can modify the <link linkend='metadata'>Metadata</link>
|
|
|
|
|
files by opening them in the project.
|
|
|
|
|
When editing recipe files (<filename>.bb</filename> files),
|
|
|
|
|
you can view BitBake variable values and information by
|
|
|
|
|
hovering the mouse pointer over the variable name and
|
2012-07-23 18:23:56 +00:00
|
|
|
|
waiting a few seconds.
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2013-04-10 21:19:59 +00:00
|
|
|
|
To edit the Metadata, follow these steps:
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<orderedlist>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Select your Yocto Bitbake Commander
|
|
|
|
|
project.</para></listitem>
|
|
|
|
|
<listitem><para>Select "BitBake Recipe" from the
|
|
|
|
|
"File -> New -> Yocto BitBake Commander" menu
|
2012-07-23 18:23:56 +00:00
|
|
|
|
to open a new recipe wizard.</para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Point to your source by filling in the
|
|
|
|
|
"SRC_URL" field.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
For example, you can add a recipe to your
|
2012-10-04 15:52:13 +00:00
|
|
|
|
<link linkend='source-directory'>Source Directory</link>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
by defining "SRC_URL" as follows:
|
|
|
|
|
<literallayout class='monospaced'>
|
|
|
|
|
ftp://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz
|
|
|
|
|
</literallayout></para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Click "Populate" to calculate the
|
|
|
|
|
archive md5, sha256, license checksum values and to
|
|
|
|
|
auto-generate the recipe filename.</para></listitem>
|
|
|
|
|
<listitem><para>Fill in the "Description" field.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Be sure values for all required
|
|
|
|
|
fields exist.</para></listitem>
|
2013-04-10 21:19:59 +00:00
|
|
|
|
<listitem><para>Click "Finish".</para></listitem>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</orderedlist>
|
|
|
|
|
</para>
|
|
|
|
|
</section>
|
|
|
|
|
|
2013-04-10 22:15:57 +00:00
|
|
|
|
<section id='biding-and-customizing-the-image-using-hob'>
|
2013-04-10 21:26:40 +00:00
|
|
|
|
<title>Building and Customizing the Image Using Hob</title>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
|
|
|
|
|
<para>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
To build and customize the image using Hob from within the
|
2013-04-10 21:26:40 +00:00
|
|
|
|
Eclipse IDE, follow these steps:
|
2012-07-23 18:23:56 +00:00
|
|
|
|
<orderedlist>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Select your Yocto Bitbake Commander
|
|
|
|
|
project.</para></listitem>
|
2013-04-10 21:26:40 +00:00
|
|
|
|
<listitem><para>Select "Launch Hob" from the "Project"
|
|
|
|
|
menu.</para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>Enter the
|
2013-04-10 21:26:40 +00:00
|
|
|
|
<link linkend='build-directory'>Build Directory</link>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
where you want to put your final images.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Click "OK" to launch Hob.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>Use Hob to customize and build your own
|
|
|
|
|
images.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
For information on Hob, see the
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<ulink url='&YOCTO_HOME_URL;/tools-resources/projects/hob'>Hob Project Page</ulink>
|
|
|
|
|
on the Yocto Project website.</para></listitem>
|
2012-07-23 18:23:56 +00:00
|
|
|
|
</orderedlist>
|
|
|
|
|
</para>
|
|
|
|
|
</section>
|
|
|
|
|
</section>
|
|
|
|
|
</section>
|
|
|
|
|
|
2012-07-23 17:05:44 +00:00
|
|
|
|
<section id='workflow-using-stand-alone-cross-development-toolchains'>
|
2013-04-10 21:52:57 +00:00
|
|
|
|
<title>Workflow Using Stand-Alone Cross-Development Toolchains</title>
|
2011-09-23 15:07:41 +00:00
|
|
|
|
|
|
|
|
|
<para>
|
2013-02-06 18:51:39 +00:00
|
|
|
|
If you want to develop an application without prior installation
|
|
|
|
|
of the ADT, you still can employ the
|
|
|
|
|
<link linkend='cross-development-toolchain'>Cross Development Toolchain</link>,
|
|
|
|
|
the QEMU emulator, and a number of supported target image files.
|
2011-09-23 15:07:41 +00:00
|
|
|
|
You just need to follow these general steps:
|
|
|
|
|
<orderedlist>
|
2013-02-06 18:51:39 +00:00
|
|
|
|
<listitem><para><emphasis>Install the cross-development
|
|
|
|
|
toolchain for your target hardware:</emphasis>
|
2011-09-23 15:07:41 +00:00
|
|
|
|
For information on how to install the toolchain, see the
|
2012-12-07 23:23:56 +00:00
|
|
|
|
"<ulink url='&YOCTO_DOCS_ADT_URL;#using-an-existing-toolchain-tarball'>Using a Cross-Toolchain Tarball</ulink>"
|
2013-02-06 18:51:39 +00:00
|
|
|
|
section in the Yocto Project Application Developer's
|
|
|
|
|
Guide.</para></listitem>
|
|
|
|
|
<listitem><para><emphasis>Download the Target Image:</emphasis>
|
|
|
|
|
The Yocto Project supports several target architectures
|
|
|
|
|
and has many pre-built kernel images and root filesystem
|
2011-09-23 15:07:41 +00:00
|
|
|
|
images.</para>
|
2013-02-06 18:51:39 +00:00
|
|
|
|
<para>If you are going to develop your application on
|
|
|
|
|
hardware, go to the
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<ulink url='&YOCTO_MACHINES_DL_URL;'><filename>machines</filename></ulink>
|
2012-07-23 17:05:44 +00:00
|
|
|
|
download area and choose a target machine area
|
2011-09-23 15:07:41 +00:00
|
|
|
|
from which to download the kernel image and root filesystem.
|
2013-02-06 18:51:39 +00:00
|
|
|
|
This download area could have several files in it that
|
|
|
|
|
support development using actual hardware.
|
|
|
|
|
For example, the area might contain
|
|
|
|
|
<filename>.hddimg</filename> files that combine the
|
2013-09-19 20:16:53 +00:00
|
|
|
|
kernel image with the filesystem, boot loaders, and
|
2013-04-10 21:50:43 +00:00
|
|
|
|
so forth.
|
2013-02-06 18:51:39 +00:00
|
|
|
|
Be sure to get the files you need for your particular
|
|
|
|
|
development process.</para>
|
|
|
|
|
<para>If you are going to develop your application and
|
|
|
|
|
then run and test it using the QEMU emulator, go to the
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<ulink url='&YOCTO_QEMU_DL_URL;'><filename>machines/qemu</filename></ulink>
|
2012-07-23 17:05:44 +00:00
|
|
|
|
download area.
|
2013-02-06 18:51:39 +00:00
|
|
|
|
From this area, go down into the directory for your
|
|
|
|
|
target architecture (e.g. <filename>qemux86_64</filename>
|
|
|
|
|
for an <trademark class='registered'>Intel</trademark>-based
|
|
|
|
|
64-bit architecture).
|
|
|
|
|
Download kernel, root filesystem, and any other files you
|
|
|
|
|
need for your process.
|
|
|
|
|
<note>In order to use the root filesystem in QEMU, you
|
|
|
|
|
need to extract it.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
See the
|
|
|
|
|
"<ulink url='&YOCTO_DOCS_ADT_URL;#extracting-the-root-filesystem'>Extracting the Root Filesystem</ulink>"
|
2013-02-06 18:51:39 +00:00
|
|
|
|
section for information on how to extract the root
|
|
|
|
|
filesystem.</note></para></listitem>
|
|
|
|
|
<listitem><para><emphasis>Develop and Test your
|
|
|
|
|
Application:</emphasis> At this point, you have the tools
|
|
|
|
|
to develop your application.
|
|
|
|
|
If you need to separately install and use the QEMU
|
|
|
|
|
emulator, you can go to
|
|
|
|
|
<ulink url='http://wiki.qemu.org/Main_Page'>QEMU Home Page</ulink>
|
|
|
|
|
to download and learn about the emulator.</para></listitem>
|
2011-09-23 15:07:41 +00:00
|
|
|
|
</orderedlist>
|
|
|
|
|
</para>
|
|
|
|
|
</section>
|
2011-07-27 19:47:59 +00:00
|
|
|
|
</section>
|
|
|
|
|
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<section id="modifying-temporary-source-code">
|
|
|
|
|
<title>Modifying Temporary Source Code</title>
|
|
|
|
|
|
|
|
|
|
<para>
|
2012-07-02 16:59:11 +00:00
|
|
|
|
You might
|
2012-06-12 14:48:52 +00:00
|
|
|
|
find it helpful during development to modify the temporary source code used by recipes
|
|
|
|
|
to build packages.
|
|
|
|
|
For example, suppose you are developing a patch and you need to experiment a bit
|
|
|
|
|
to figure out your solution.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
After you have initially built the package, you can iteratively tweak the
|
|
|
|
|
source code, which is located in the
|
|
|
|
|
<link linkend='build-directory'>Build Directory</link>, and then
|
2012-06-12 14:48:52 +00:00
|
|
|
|
you can force a re-compile and quickly test your altered code.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Once you settle on a solution, you can then preserve your changes in the form of
|
2012-06-12 14:48:52 +00:00
|
|
|
|
patches.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
You can accomplish these steps all within either a
|
|
|
|
|
<ulink url='http://savannah.nongnu.org/projects/quilt'>Quilt</ulink> or
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<link linkend='git'>Git</link> workflow.
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<section id='finding-the-temporary-source-code'>
|
|
|
|
|
<title>Finding the Temporary Source Code</title>
|
|
|
|
|
|
|
|
|
|
<para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
During a build, the unpacked temporary source code used by recipes
|
|
|
|
|
to build packages is available in the Build Directory as
|
|
|
|
|
defined by the
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<filename><ulink url='&YOCTO_DOCS_REF_URL;#var-S'>S</ulink></filename> variable.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Below is the default value for the <filename>S</filename> variable as defined in the
|
|
|
|
|
<filename>meta/conf/bitbake.conf</filename> configuration file in the
|
2012-10-01 15:51:21 +00:00
|
|
|
|
<link linkend='source-directory'>Source Directory</link>:
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<literallayout class='monospaced'>
|
2013-11-11 18:55:21 +00:00
|
|
|
|
S = "${WORKDIR}/${BP}"
|
2012-06-12 14:48:52 +00:00
|
|
|
|
</literallayout>
|
|
|
|
|
You should be aware that many recipes override the <filename>S</filename> variable.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
For example, recipes that fetch their source from Git usually set
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<filename>S</filename> to <filename>${WORKDIR}/git</filename>.
|
|
|
|
|
<note>
|
2012-10-01 18:56:49 +00:00
|
|
|
|
The
|
|
|
|
|
<ulink url='&YOCTO_DOCS_REF_URL;#var-BP'><filename>BP</filename></ulink>
|
|
|
|
|
represents the base recipe name, which consists of the name and version:
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<literallayout class='monospaced'>
|
2013-11-11 18:55:21 +00:00
|
|
|
|
BP = "${BPN}-${PV}"
|
2012-06-12 14:48:52 +00:00
|
|
|
|
</literallayout>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
</note>
|
2012-06-12 14:48:52 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
The path to the work directory for the recipe
|
2014-01-21 16:23:57 +00:00
|
|
|
|
(<ulink url='&YOCTO_DOCS_REF_URL;#var-WORKDIR'><filename>WORKDIR</filename></ulink>)
|
|
|
|
|
is defined as follows:
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<literallayout class='monospaced'>
|
2014-01-21 16:23:57 +00:00
|
|
|
|
${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}
|
2012-06-12 14:48:52 +00:00
|
|
|
|
</literallayout>
|
2014-01-21 16:23:57 +00:00
|
|
|
|
The actual directory depends on several things:
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
<listitem><ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink>:
|
|
|
|
|
The top-level build output directory</listitem>
|
|
|
|
|
<listitem><ulink url='&YOCTO_DOCS_REF_URL;#var-MULTIMACH_TARGET_SYS'><filename>MULTIMACH_TARGET_SYS</filename></ulink>:
|
|
|
|
|
The target system identifier</listitem>
|
|
|
|
|
<listitem><ulink url='&YOCTO_DOCS_REF_URL;#var-PN'><filename>PN</filename></ulink>:
|
|
|
|
|
The recipe name</listitem>
|
|
|
|
|
<listitem><ulink url='&YOCTO_DOCS_REF_URL;#var-EXTENDPE'><filename>EXTENDPE</filename></ulink>:
|
|
|
|
|
The epoch - (if
|
|
|
|
|
<ulink url='&YOCTO_DOCS_REF_URL;#var-PE'><filename>PE</filename></ulink>
|
|
|
|
|
is not specified, which is usually the case for most
|
|
|
|
|
recipes, then <filename>EXTENDPE</filename> is blank)</listitem>
|
|
|
|
|
<listitem><ulink url='&YOCTO_DOCS_REF_URL;#var-PV'><filename>PV</filename></ulink>:
|
|
|
|
|
The recipe version</listitem>
|
|
|
|
|
<listitem><ulink url='&YOCTO_DOCS_REF_URL;#var-PR'><filename>PR</filename></ulink>:
|
|
|
|
|
The recipe revision</listitem>
|
|
|
|
|
</itemizedlist>
|
2012-06-12 14:48:52 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2014-01-21 16:23:57 +00:00
|
|
|
|
As an example, assume a Source Directory top-level folder
|
|
|
|
|
name <filename>poky</filename>, a default Build Directory at
|
|
|
|
|
<filename>poky/build</filename>, and a
|
|
|
|
|
<filename>qemux86-poky-linux</filename> machine target
|
|
|
|
|
system.
|
|
|
|
|
Furthermore, suppose your recipe is named
|
|
|
|
|
<filename>foo_1.3.0-r0.bb</filename>.
|
|
|
|
|
In this case, the work directory the build system uses to
|
|
|
|
|
build the package would be as follows:
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<literallayout class='monospaced'>
|
2014-01-21 16:23:57 +00:00
|
|
|
|
poky/build/tmp/work/qemux86-poky-linux/foo/1.3.0-r0
|
2012-06-12 14:48:52 +00:00
|
|
|
|
</literallayout>
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Now that you know where to locate the directory that has the temporary source code,
|
|
|
|
|
you can use a Quilt or Git workflow to make your edits, test the changes,
|
2012-10-01 18:56:49 +00:00
|
|
|
|
and preserve the changes in the form of patches.
|
2012-06-12 14:48:52 +00:00
|
|
|
|
</para>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section id="using-a-quilt-workflow">
|
|
|
|
|
<title>Using a Quilt Workflow</title>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<para>
|
|
|
|
|
<ulink url='http://savannah.nongnu.org/projects/quilt'>Quilt</ulink>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
is a powerful tool that allows you to capture source code changes without having
|
2012-06-12 14:48:52 +00:00
|
|
|
|
a clean source tree.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
This section outlines the typical workflow you can use to modify temporary source code,
|
2012-06-12 14:48:52 +00:00
|
|
|
|
test changes, and then preserve the changes in the form of a patch all using Quilt.
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
|
|
|
|
Follow these general steps:
|
|
|
|
|
<orderedlist>
|
|
|
|
|
<listitem><para><emphasis>Find the Source Code:</emphasis>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
The temporary source code used by the OpenEmbedded build system is kept in the
|
|
|
|
|
Build Directory.
|
|
|
|
|
See the
|
2012-06-12 14:48:52 +00:00
|
|
|
|
"<link linkend='finding-the-temporary-source-code'>Finding the Temporary Source Code</link>"
|
2012-12-07 23:23:56 +00:00
|
|
|
|
section to learn how to locate the directory that has the temporary source code for a
|
2012-06-12 14:48:52 +00:00
|
|
|
|
particular package.</para></listitem>
|
|
|
|
|
<listitem><para><emphasis>Change Your Working Directory:</emphasis>
|
|
|
|
|
You need to be in the directory that has the temporary source code.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
That directory is defined by the
|
2012-10-16 18:14:36 +00:00
|
|
|
|
<ulink url='&YOCTO_DOCS_REF_URL;#var-S'><filename>S</filename></ulink>
|
2012-06-12 14:48:52 +00:00
|
|
|
|
variable.</para></listitem>
|
|
|
|
|
<listitem><para><emphasis>Create a New Patch:</emphasis>
|
|
|
|
|
Before modifying source code, you need to create a new patch.
|
|
|
|
|
To create a new patch file, use <filename>quilt new</filename> as below:
|
|
|
|
|
<literallayout class='monospaced'>
|
|
|
|
|
$ quilt new my_changes.patch
|
|
|
|
|
</literallayout></para></listitem>
|
|
|
|
|
<listitem><para><emphasis>Notify Quilt and Add Files:</emphasis>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
After creating the patch, you need to notify Quilt about the files
|
2012-10-16 18:14:36 +00:00
|
|
|
|
you plan to edit.
|
|
|
|
|
You notify Quilt by adding the files to the patch you just created:
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<literallayout class='monospaced'>
|
|
|
|
|
$ quilt add file1.c file2.c file3.c
|
2012-10-16 18:14:36 +00:00
|
|
|
|
</literallayout>
|
|
|
|
|
</para></listitem>
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<listitem><para><emphasis>Edit the Files:</emphasis>
|
2012-10-16 18:14:36 +00:00
|
|
|
|
Make your changes in the temporary source code to the files you added
|
|
|
|
|
to the patch.</para></listitem>
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<listitem><para><emphasis>Test Your Changes:</emphasis>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Once you have modified the source code, the easiest way to test your changes
|
2012-06-12 14:48:52 +00:00
|
|
|
|
is by calling the <filename>compile</filename> task as shown in the following example:
|
|
|
|
|
<literallayout class='monospaced'>
|
|
|
|
|
$ bitbake -c compile -f <name_of_package>
|
|
|
|
|
</literallayout>
|
|
|
|
|
The <filename>-f</filename> or <filename>--force</filename>
|
2013-04-10 22:00:08 +00:00
|
|
|
|
option forces the specified task to execute.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
If you find problems with your code, you can just keep editing and
|
2012-06-12 14:48:52 +00:00
|
|
|
|
re-testing iteratively until things work as expected.
|
|
|
|
|
<note>All the modifications you make to the temporary source code
|
2012-12-07 23:23:56 +00:00
|
|
|
|
disappear once you <filename>-c clean</filename> or
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<filename>-c cleanall</filename> with BitBake for the package.
|
|
|
|
|
Modifications will also disappear if you use the <filename>rm_work</filename>
|
|
|
|
|
feature as described in the
|
2012-12-07 23:23:56 +00:00
|
|
|
|
"<ulink url='&YOCTO_DOCS_QS_URL;#building-image'>Building an Image</ulink>"
|
2012-06-12 14:48:52 +00:00
|
|
|
|
section of the Yocto Project Quick Start.
|
|
|
|
|
</note></para></listitem>
|
|
|
|
|
<listitem><para><emphasis>Generate the Patch:</emphasis>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Once your changes work as expected, you need to use Quilt to generate the final patch that
|
2012-06-12 14:48:52 +00:00
|
|
|
|
contains all your modifications.
|
|
|
|
|
<literallayout class='monospaced'>
|
|
|
|
|
$ quilt refresh
|
|
|
|
|
</literallayout>
|
2013-04-10 22:00:08 +00:00
|
|
|
|
At this point, the <filename>my_changes.patch</filename> file has all your edits made
|
2012-12-07 23:23:56 +00:00
|
|
|
|
to the <filename>file1.c</filename>, <filename>file2.c</filename>, and
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<filename>file3.c</filename> files.</para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<para>You can find the resulting patch file in the <filename>patches/</filename>
|
2012-06-12 14:48:52 +00:00
|
|
|
|
subdirectory of the source (<filename>S</filename>) directory.</para></listitem>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para><emphasis>Copy the Patch File:</emphasis>
|
2012-06-12 14:48:52 +00:00
|
|
|
|
For simplicity, copy the patch file into a directory named <filename>files</filename>,
|
2012-12-07 23:23:56 +00:00
|
|
|
|
which you can create in the same directory that holds the recipe
|
|
|
|
|
(<filename>.bb</filename>) file or the
|
2012-10-16 18:14:36 +00:00
|
|
|
|
append (<filename>.bbappend</filename>) file.
|
2012-07-02 16:59:11 +00:00
|
|
|
|
Placing the patch here guarantees that the OpenEmbedded build system will find
|
2012-06-12 14:48:52 +00:00
|
|
|
|
the patch.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Next, add the patch into the
|
|
|
|
|
<filename><ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'>SRC_URI</ulink></filename>
|
|
|
|
|
of the recipe.
|
2012-06-12 14:48:52 +00:00
|
|
|
|
Here is an example:
|
|
|
|
|
<literallayout class='monospaced'>
|
|
|
|
|
SRC_URI += "file://my_changes.patch"
|
|
|
|
|
</literallayout></para></listitem>
|
2012-10-01 19:01:30 +00:00
|
|
|
|
<listitem><para><emphasis>Increment the Recipe Revision Number:</emphasis>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Finally, don't forget to 'bump' the
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<filename><ulink url='&YOCTO_DOCS_REF_URL;#var-PR'>PR</ulink></filename>
|
2012-10-01 19:01:30 +00:00
|
|
|
|
value in the recipe since the resulting packages have changed.</para></listitem>
|
2012-06-12 14:48:52 +00:00
|
|
|
|
</orderedlist>
|
|
|
|
|
</para> </section>
|
|
|
|
|
|
|
|
|
|
<section id='using-a-git-workflow'>
|
|
|
|
|
<title>Using a Git Workflow</title>
|
|
|
|
|
<para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Git is an even more powerful tool that allows you to capture source code changes without having
|
2012-06-12 14:48:52 +00:00
|
|
|
|
a clean source tree.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
This section outlines the typical workflow you can use to modify temporary source code,
|
2012-06-12 14:48:52 +00:00
|
|
|
|
test changes, and then preserve the changes in the form of a patch all using Git.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
For general information on Git as it is used in the Yocto Project, see the
|
2012-06-12 14:48:52 +00:00
|
|
|
|
"<link linkend='git'>Git</link>" section.
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<note>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
This workflow uses Git only for its ability to manage local changes to the source code
|
2012-07-02 16:59:11 +00:00
|
|
|
|
and produce patches independent of any version control system used with the Yocto Project.
|
2012-06-12 14:48:52 +00:00
|
|
|
|
</note>
|
|
|
|
|
|
|
|
|
|
<para>
|
|
|
|
|
Follow these general steps:
|
|
|
|
|
<orderedlist>
|
|
|
|
|
<listitem><para><emphasis>Find the Source Code:</emphasis>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
The temporary source code used by the OpenEmbedded build system is kept in the
|
|
|
|
|
Build Directory.
|
|
|
|
|
See the
|
2012-06-12 14:48:52 +00:00
|
|
|
|
"<link linkend='finding-the-temporary-source-code'>Finding the Temporary Source Code</link>"
|
2012-12-07 23:23:56 +00:00
|
|
|
|
section to learn how to locate the directory that has the temporary source code for a
|
2012-06-12 14:48:52 +00:00
|
|
|
|
particular package.</para></listitem>
|
|
|
|
|
<listitem><para><emphasis>Change Your Working Directory:</emphasis>
|
|
|
|
|
You need to be in the directory that has the temporary source code.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
That directory is defined by the
|
2012-10-16 18:14:36 +00:00
|
|
|
|
<ulink url='&YOCTO_DOCS_REF_URL;#var-S'><filename>S</filename></ulink>
|
|
|
|
|
variable.</para></listitem>
|
2012-10-13 03:02:43 +00:00
|
|
|
|
<listitem><para><emphasis>If needed, initialize a Git Repository:</emphasis>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
If the recipe you are working with does not use a Git fetcher,
|
2012-10-16 18:14:36 +00:00
|
|
|
|
you need to set up a Git repository as follows:
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<literallayout class='monospaced'>
|
|
|
|
|
$ git init
|
|
|
|
|
$ git add *
|
2012-10-22 16:02:52 +00:00
|
|
|
|
$ git commit -m "initial revision"
|
2012-06-12 14:48:52 +00:00
|
|
|
|
</literallayout>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
The above Git commands initialize a Git repository that is based on the
|
2012-10-16 18:14:36 +00:00
|
|
|
|
files in your current working directory, stage all the files, and commit
|
2012-12-07 23:23:56 +00:00
|
|
|
|
the files.
|
2012-06-12 14:48:52 +00:00
|
|
|
|
At this point, your Git repository is aware of all the source code files.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Any edits you now make to files can be committed later and will be tracked by
|
2012-10-16 18:14:36 +00:00
|
|
|
|
Git.</para></listitem>
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<listitem><para><emphasis>Edit the Files:</emphasis>
|
2012-10-16 18:14:36 +00:00
|
|
|
|
Make your changes to the temporary source code.</para></listitem>
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<listitem><para><emphasis>Test Your Changes:</emphasis>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Once you have modified the source code, the easiest way to test your changes
|
2012-06-12 14:48:52 +00:00
|
|
|
|
is by calling the <filename>compile</filename> task as shown in the following example:
|
|
|
|
|
<literallayout class='monospaced'>
|
|
|
|
|
$ bitbake -c compile -f <name_of_package>
|
|
|
|
|
</literallayout>
|
|
|
|
|
The <filename>-f</filename> or <filename>--force</filename>
|
2013-04-10 22:04:28 +00:00
|
|
|
|
option forces the specified task to execute.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
If you find problems with your code, you can just keep editing and
|
2012-06-12 14:48:52 +00:00
|
|
|
|
re-testing iteratively until things work as expected.
|
|
|
|
|
<note>All the modifications you make to the temporary source code
|
2012-10-16 18:14:36 +00:00
|
|
|
|
disappear once you <filename>-c clean</filename>, <filename>-c cleansstate</filename>,
|
|
|
|
|
or <filename>-c cleanall</filename> with BitBake for the package.
|
2012-06-12 14:48:52 +00:00
|
|
|
|
Modifications will also disappear if you use the <filename>rm_work</filename>
|
|
|
|
|
feature as described in the
|
2012-12-07 23:23:56 +00:00
|
|
|
|
"<ulink url='&YOCTO_DOCS_QS_URL;#building-image'>Building an Image</ulink>"
|
2012-06-12 14:48:52 +00:00
|
|
|
|
section of the Yocto Project Quick Start.
|
|
|
|
|
</note></para></listitem>
|
|
|
|
|
<listitem><para><emphasis>See the List of Files You Changed:</emphasis>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Use the <filename>git status</filename> command to see what files you have actually edited.
|
2012-06-12 14:48:52 +00:00
|
|
|
|
The ability to have Git track the files you have changed is an advantage that this
|
|
|
|
|
workflow has over the Quilt workflow.
|
|
|
|
|
Here is the Git command to list your changed files:
|
|
|
|
|
<literallayout class='monospaced'>
|
|
|
|
|
$ git status
|
|
|
|
|
</literallayout></para></listitem>
|
|
|
|
|
<listitem><para><emphasis>Stage the Modified Files:</emphasis>
|
|
|
|
|
Use the <filename>git add</filename> command to stage the changed files so they
|
2012-10-16 18:14:36 +00:00
|
|
|
|
can be committed as follows:
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<literallayout class='monospaced'>
|
2012-10-16 18:14:36 +00:00
|
|
|
|
$ git add file1.c file2.c file3.c
|
2012-06-12 14:48:52 +00:00
|
|
|
|
</literallayout></para></listitem>
|
|
|
|
|
<listitem><para><emphasis>Commit the Staged Files and View Your Changes:</emphasis>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Use the <filename>git commit</filename> command to commit the changes to the
|
|
|
|
|
local repository.
|
2012-06-12 14:48:52 +00:00
|
|
|
|
Once you have committed the files, you can use the <filename>git log</filename>
|
|
|
|
|
command to see your changes:
|
|
|
|
|
<literallayout class='monospaced'>
|
2012-10-16 18:14:36 +00:00
|
|
|
|
$ git commit -m "<commit-summary-message>"
|
2012-06-12 14:48:52 +00:00
|
|
|
|
$ git log
|
2012-10-16 18:14:36 +00:00
|
|
|
|
</literallayout>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<note>The name of the patch file created in the next step is based on your
|
2012-10-16 18:14:36 +00:00
|
|
|
|
<filename>commit-summary-message</filename>.</note></para></listitem>
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<listitem><para><emphasis>Generate the Patch:</emphasis>
|
|
|
|
|
Once the changes are committed, use the <filename>git format-patch</filename>
|
|
|
|
|
command to generate a patch file:
|
|
|
|
|
<literallayout class='monospaced'>
|
2012-10-22 16:02:52 +00:00
|
|
|
|
$ git format-patch -1
|
2012-06-12 14:48:52 +00:00
|
|
|
|
</literallayout>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Specifying "-1" causes Git to generate the
|
2012-06-12 14:48:52 +00:00
|
|
|
|
patch file for the most recent commit.</para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<para>At this point, the patch file has all your edits made
|
|
|
|
|
to the <filename>file1.c</filename>, <filename>file2.c</filename>, and
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<filename>file3.c</filename> files.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
You can find the resulting patch file in the current directory and it
|
2012-10-16 18:14:36 +00:00
|
|
|
|
is named according to the <filename>git commit</filename> summary line.
|
2012-06-12 14:48:52 +00:00
|
|
|
|
The patch file ends with <filename>.patch</filename>.</para></listitem>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para><emphasis>Copy the Patch File:</emphasis>
|
2012-06-12 14:48:52 +00:00
|
|
|
|
For simplicity, copy the patch file into a directory named <filename>files</filename>,
|
2012-12-07 23:23:56 +00:00
|
|
|
|
which you can create in the same directory that holds the recipe
|
|
|
|
|
(<filename>.bb</filename>) file or the
|
2012-10-16 18:14:36 +00:00
|
|
|
|
append (<filename>.bbappend</filename>) file.
|
2012-07-02 16:59:11 +00:00
|
|
|
|
Placing the patch here guarantees that the OpenEmbedded build system will find
|
2012-06-12 14:48:52 +00:00
|
|
|
|
the patch.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Next, add the patch into the
|
|
|
|
|
<filename><ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'>SRC_URI</ulink></filename>
|
|
|
|
|
of the recipe.
|
2012-06-12 14:48:52 +00:00
|
|
|
|
Here is an example:
|
|
|
|
|
<literallayout class='monospaced'>
|
2012-10-22 16:02:52 +00:00
|
|
|
|
SRC_URI += "file://0001-<commit-summary-message>.patch"
|
2012-06-12 14:48:52 +00:00
|
|
|
|
</literallayout></para></listitem>
|
2012-10-01 19:01:30 +00:00
|
|
|
|
<listitem><para><emphasis>Increment the Recipe Revision Number:</emphasis>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
Finally, don't forget to 'bump' the
|
2012-06-12 14:48:52 +00:00
|
|
|
|
<filename><ulink url='&YOCTO_DOCS_REF_URL;#var-PR'>PR</ulink></filename>
|
2012-10-01 19:01:30 +00:00
|
|
|
|
value in the recipe since the resulting packages have changed.</para></listitem>
|
2012-06-12 14:48:52 +00:00
|
|
|
|
</orderedlist>
|
|
|
|
|
</para>
|
|
|
|
|
</section>
|
|
|
|
|
</section>
|
|
|
|
|
|
2012-03-22 21:01:11 +00:00
|
|
|
|
<section id='image-development-using-hob'>
|
|
|
|
|
<title>Image Development Using Hob</title>
|
|
|
|
|
|
2012-03-22 22:41:26 +00:00
|
|
|
|
<para>
|
2013-04-10 22:10:11 +00:00
|
|
|
|
The <ulink url='&YOCTO_HOME_URL;/tools-resources/projects/hob'>Hob</ulink> is a graphical user interface for the
|
2012-07-02 16:59:11 +00:00
|
|
|
|
OpenEmbedded build system, which is based on BitBake.
|
2012-03-22 22:41:26 +00:00
|
|
|
|
You can use the Hob to build custom operating system images within the Yocto Project build environment.
|
2013-04-10 22:10:11 +00:00
|
|
|
|
Hob simply provides a friendly interface over the build system used during development.
|
2012-07-02 16:59:11 +00:00
|
|
|
|
In other words, building images with the Hob lets you take care of common build tasks more easily.
|
2012-03-22 22:41:26 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
|
|
|
|
For a better understanding of Hob, see the project page at
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<ulink url='&YOCTO_HOME_URL;/tools-resources/projects/hob'></ulink>
|
2013-04-10 22:10:11 +00:00
|
|
|
|
on the Yocto Project website.
|
2013-09-19 20:16:53 +00:00
|
|
|
|
If you follow the "Documentation" link from the Hob page, you will
|
2013-04-10 22:10:11 +00:00
|
|
|
|
find a short introductory training video on Hob.
|
2012-03-22 22:41:26 +00:00
|
|
|
|
The following lists some features of Hob:
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
<listitem><para>You can setup and run Hob using these commands:
|
|
|
|
|
<literallayout class='monospaced'>
|
|
|
|
|
$ source oe-init-build-env
|
|
|
|
|
$ hob
|
|
|
|
|
</literallayout></para></listitem>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para>You can set the
|
2012-03-22 22:41:26 +00:00
|
|
|
|
<ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>
|
|
|
|
|
for which you are building the image.</para></listitem>
|
2013-09-19 20:16:53 +00:00
|
|
|
|
<listitem><para>You can modify various policy settings such as the
|
2013-04-10 22:10:11 +00:00
|
|
|
|
package format with which to build,
|
2013-09-19 20:16:53 +00:00
|
|
|
|
the parallelism BitBake uses, whether or not to build an
|
2013-04-10 22:10:11 +00:00
|
|
|
|
external toolchain, and which host to build against.
|
|
|
|
|
</para></listitem>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para>You can manage
|
2012-04-26 15:29:21 +00:00
|
|
|
|
<link linkend='understanding-and-creating-layers'>layers</link>.</para></listitem>
|
2012-03-22 22:41:26 +00:00
|
|
|
|
<listitem><para>You can select a base image and then add extra packages for your custom build.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
<listitem><para>You can launch and monitor the build from within Hob.</para></listitem>
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
</para>
|
2012-03-22 21:01:11 +00:00
|
|
|
|
</section>
|
|
|
|
|
|
2012-07-13 20:43:30 +00:00
|
|
|
|
<section id="platdev-appdev-devshell">
|
|
|
|
|
<title>Using a Development Shell</title>
|
|
|
|
|
|
|
|
|
|
<para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
When debugging certain commands or even when just editing packages,
|
2012-07-13 20:43:30 +00:00
|
|
|
|
<filename>devshell</filename> can be a useful tool.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
When you invoke <filename>devshell</filename>, source files are
|
|
|
|
|
extracted into your working directory and patches are applied.
|
2012-07-13 20:43:30 +00:00
|
|
|
|
Then, a new terminal is opened and you are placed in the working directory.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
In the new terminal, all the OpenEmbedded build-related environment variables are
|
|
|
|
|
still defined so you can use commands such as <filename>configure</filename> and
|
|
|
|
|
<filename>make</filename>.
|
|
|
|
|
The commands execute just as if the OpenEmbedded build system were executing them.
|
|
|
|
|
Consequently, working this way can be helpful when debugging a build or preparing
|
2012-07-13 20:43:30 +00:00
|
|
|
|
software to be used with the OpenEmbedded build system.
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
|
|
|
|
Following is an example that uses <filename>devshell</filename> on a target named
|
|
|
|
|
<filename>matchbox-desktop</filename>:
|
|
|
|
|
<literallayout class='monospaced'>
|
|
|
|
|
$ bitbake matchbox-desktop -c devshell
|
|
|
|
|
</literallayout>
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
This command spawns a terminal with a shell prompt within the OpenEmbedded build environment.
|
2012-11-19 17:55:14 +00:00
|
|
|
|
The <ulink url='&YOCTO_DOCS_REF_URL;#var-OE_TERMINAL'><filename>OE_TERMINAL</filename></ulink>
|
2013-04-10 22:13:10 +00:00
|
|
|
|
variable controls what type of shell is opened.
|
2012-11-19 17:55:14 +00:00
|
|
|
|
</para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
|
2012-11-19 17:55:14 +00:00
|
|
|
|
<para>
|
|
|
|
|
For spawned terminals, the following occurs:
|
2012-07-13 20:43:30 +00:00
|
|
|
|
<itemizedlist>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para>The <filename>PATH</filename> variable includes the
|
2012-07-13 20:43:30 +00:00
|
|
|
|
cross-toolchain.</para></listitem>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para>The <filename>pkgconfig</filename> variables find the correct
|
2012-07-13 20:43:30 +00:00
|
|
|
|
<filename>.pc</filename> files.</para></listitem>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<listitem><para>The <filename>configure</filename> command finds the
|
2012-07-13 20:43:30 +00:00
|
|
|
|
Yocto Project site files as well as any other necessary files.</para></listitem>
|
|
|
|
|
</itemizedlist>
|
2012-11-19 17:55:14 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
2012-11-27 15:24:54 +00:00
|
|
|
|
Within this environment, you can run configure or compile
|
2012-12-07 23:23:56 +00:00
|
|
|
|
commands as if they were being run by
|
2012-07-13 20:43:30 +00:00
|
|
|
|
the OpenEmbedded build system itself.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
As noted earlier, the working directory also automatically changes to the
|
2012-10-01 15:51:21 +00:00
|
|
|
|
Source Directory (<ulink url='&YOCTO_DOCS_REF_URL;#var-S'><filename>S</filename></ulink>).
|
2012-07-13 20:43:30 +00:00
|
|
|
|
</para>
|
|
|
|
|
|
2012-12-07 23:23:56 +00:00
|
|
|
|
<para>
|
2012-07-13 20:43:30 +00:00
|
|
|
|
When you are finished, you just exit the shell or close the terminal window.
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<note>
|
|
|
|
|
<para>
|
|
|
|
|
It is worth remembering that when using <filename>devshell</filename>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
you need to use the full compiler name such as <filename>arm-poky-linux-gnueabi-gcc</filename>
|
2012-07-13 20:43:30 +00:00
|
|
|
|
instead of just using <filename>gcc</filename>.
|
2012-12-07 23:23:56 +00:00
|
|
|
|
The same applies to other applications such as <filename>binutils</filename>,
|
2012-07-13 20:43:30 +00:00
|
|
|
|
<filename>libtool</filename> and so forth.
|
|
|
|
|
BitBake sets up environment variables such as <filename>CC</filename>
|
|
|
|
|
to assist applications, such as <filename>make</filename> to find the correct tools.
|
|
|
|
|
</para>
|
2012-12-07 23:23:56 +00:00
|
|
|
|
|
2012-07-13 20:43:30 +00:00
|
|
|
|
<para>
|
|
|
|
|
It is also worth noting that <filename>devshell</filename> still works over
|
2013-04-10 22:13:10 +00:00
|
|
|
|
X11 forwarding and similar situations.
|
2012-07-13 20:43:30 +00:00
|
|
|
|
</para>
|
|
|
|
|
</note>
|
|
|
|
|
</section>
|
|
|
|
|
|
2011-07-15 19:54:29 +00:00
|
|
|
|
</chapter>
|
|
|
|
|
<!--
|
|
|
|
|
vim: expandtab tw=80 ts=4
|
|
|
|
|
-->
|