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