blob: eb75763db32c23039250349eb1d54663de565d53 [file] [log] [blame]
Andrew Geissler4873add2020-11-02 18:44:49 -06001<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
2"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
3[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
4<!--SPDX-License-Identifier: CC-BY-2.0-UK-->
5
6<chapter id='adt-intro'>
7 <title>The Application Development Toolkit (ADT)</title>
8
9 <para>
10 Part of the Yocto Project development solution is an Application Development
11 Toolkit (ADT).
12 The ADT provides you with a custom-built, cross-development
13 platform suited for developing a user-targeted product application.
14 </para>
15
16 <para>
17 Fundamentally, the ADT consists of the following:
18 <itemizedlist>
19 <listitem><para>An architecture-specific cross-toolchain and matching
20 sysroot both built by the
21 <ulink url='&YOCTO_DOCS_DEV_URL;#build-system-term'>OpenEmbedded build system</ulink>.
22 The toolchain and sysroot are based on a
23 <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink>
24 configuration and extensions,
25 which allows you to cross-develop on the host machine for the target hardware.
26 </para></listitem>
27 <listitem><para>The Eclipse IDE Yocto Plug-in.</para></listitem>
28 <listitem><para>The Quick EMUlator (QEMU), which lets you simulate target hardware.
29 </para></listitem>
30 <listitem><para>Various user-space tools that greatly enhance your application
31 development experience.</para></listitem>
32 </itemizedlist>
33 </para>
34
35 <section id='the-cross-development-toolchain'>
36 <title>The Cross-Development Toolchain</title>
37
38 <para>
39 The
40 <ulink url='&YOCTO_DOCS_DEV_URL;#cross-development-toolchain'>Cross-Development Toolchain</ulink>
41 consists of a cross-compiler, cross-linker, and cross-debugger
42 that are used to develop user-space applications for targeted
43 hardware.
44 This toolchain is created either by running the ADT Installer
45 script, a toolchain installer script, or through a
46 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
47 that is based on your Metadata configuration or extension for
48 your targeted device.
49 The cross-toolchain works with a matching target sysroot.
50 </para>
51 </section>
52
53 <section id='sysroot'>
54 <title>Sysroot</title>
55
56 <para>
57 The matching target sysroot contains needed headers and libraries for generating
58 binaries that run on the target architecture.
59 The sysroot is based on the target root filesystem image that is built by
60 the OpenEmbedded build system and uses the same Metadata configuration
61 used to build the cross-toolchain.
62 </para>
63 </section>
64
65 <section id='eclipse-overview'>
66 <title>Eclipse Yocto Plug-in</title>
67
68 <para>
69 The Eclipse IDE is a popular development environment and it fully supports
70 development using the Yocto Project.
71 When you install and configure the Eclipse Yocto Project Plug-in into
72 the Eclipse IDE, you maximize your Yocto Project experience.
73 Installing and configuring the Plug-in results in an environment that
74 has extensions specifically designed to let you more easily develop software.
75 These extensions allow for cross-compilation, deployment, and execution of
76 your output into a QEMU emulation session.
77 You can also perform cross-debugging and profiling.
78 The environment also supports a suite of tools that allows you to perform
79 remote profiling, tracing, collection of power data, collection of
80 latency data, and collection of performance data.
81 </para>
82
83 <para>
84 For information about the application development workflow that uses the Eclipse
85 IDE and for a detailed example of how to install and configure the Eclipse
86 Yocto Project Plug-in, see the
87 "<ulink url='&YOCTO_DOCS_DEV_URL;#adt-eclipse'>Working Within Eclipse</ulink>" section
88 of the Yocto Project Development Manual.
89 </para>
90 </section>
91
92 <section id='the-qemu-emulator'>
93 <title>The QEMU Emulator</title>
94
95 <para>
96 The QEMU emulator allows you to simulate your hardware while running your
97 application or image.
98 QEMU is made available a number of ways:
99 <itemizedlist>
100 <listitem><para>
101 If you use the ADT Installer script to install ADT, you can
102 specify whether or not to install QEMU.
103 </para></listitem>
104 <listitem><para>
105 If you have cloned the <filename>poky</filename> Git
106 repository to create a
107 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
108 and you have sourced the environment setup script, QEMU is
109 installed and automatically available.
110 </para></listitem>
111 <listitem><para>
112 If you have downloaded a Yocto Project release and unpacked
113 it to create a
114 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
115 and you have sourced the environment setup script, QEMU is
116 installed and automatically available.
117 </para></listitem>
118 <listitem><para>
119 If you have installed the cross-toolchain tarball and you
120 have sourced the toolchain's setup environment script, QEMU
121 is also installed and automatically available.
122 </para></listitem>
123 </itemizedlist>
124 </para>
125 </section>
126
127 <section id='user-space-tools'>
128 <title>User-Space Tools</title>
129
130 <para>
131 User-space tools are included as part of the Yocto Project.
132 You will find these tools helpful during development.
133 The tools include LatencyTOP, PowerTOP, OProfile, Perf, SystemTap, and Lttng-ust.
134 These tools are common development tools for the Linux platform.
135 <itemizedlist>
136 <listitem><para><emphasis>LatencyTOP:</emphasis> LatencyTOP focuses on latency
137 that causes skips in audio,
138 stutters in your desktop experience, or situations that overload your server
139 even when you have plenty of CPU power left.
140 </para></listitem>
141 <listitem><para><emphasis>PowerTOP:</emphasis> Helps you determine what
142 software is using the most power.
143 You can find out more about PowerTOP at
144 <ulink url='https://01.org/powertop/'></ulink>.</para></listitem>
145 <listitem><para><emphasis>OProfile:</emphasis> A system-wide profiler for Linux
146 systems that is capable of profiling all running code at low overhead.
147 You can find out more about OProfile at
148 <ulink url='http://oprofile.sourceforge.net/about/'></ulink>.
149 For examples on how to setup and use this tool, see the
150 "<ulink url='&YOCTO_DOCS_PROF_URL;#profile-manual-oprofile'>OProfile</ulink>"
151 section in the Yocto Project Profiling and Tracing Manual.
152 </para></listitem>
153 <listitem><para><emphasis>Perf:</emphasis> Performance counters for Linux used
154 to keep track of certain types of hardware and software events.
155 For more information on these types of counters see
156 <ulink url='https://perf.wiki.kernel.org/'></ulink>.
157 For examples on how to setup and use this tool, see the
158 "<ulink url='&YOCTO_DOCS_PROF_URL;#profile-manual-perf'>perf</ulink>"
159 section in the Yocto Project Profiling and Tracing Manual.
160 </para></listitem>
161 <listitem><para><emphasis>SystemTap:</emphasis> A free software infrastructure
162 that simplifies information gathering about a running Linux system.
163 This information helps you diagnose performance or functional problems.
164 SystemTap is not available as a user-space tool through the Eclipse IDE Yocto Plug-in.
165 See <ulink url='http://sourceware.org/systemtap'></ulink> for more information
166 on SystemTap.
167 For examples on how to setup and use this tool, see the
168 "<ulink url='&YOCTO_DOCS_PROF_URL;#profile-manual-systemtap'>SystemTap</ulink>"
169 section in the Yocto Project Profiling and Tracing Manual.</para></listitem>
170 <listitem><para><emphasis>Lttng-ust:</emphasis> A User-space Tracer designed to
171 provide detailed information on user-space activity.
172 See <ulink url='http://lttng.org/ust'></ulink> for more information on Lttng-ust.
173 </para></listitem>
174 </itemizedlist>
175 </para>
176 </section>
177
178</chapter>
179<!--
180vim: expandtab tw=80 ts=4
181-->