| Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 1 | .. SPDX-License-Identifier: CC-BY-2.0-UK | 
|  | 2 |  | 
|  | 3 | ***************************************** | 
|  | 4 | The Application Development Toolkit (ADT) | 
|  | 5 | ***************************************** | 
|  | 6 |  | 
|  | 7 | Part of the Yocto Project development solution is an Application | 
|  | 8 | Development Toolkit (ADT). The ADT provides you with a custom-built, | 
|  | 9 | cross-development platform suited for developing a user-targeted product | 
|  | 10 | application. | 
|  | 11 |  | 
|  | 12 | Fundamentally, 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 |  | 
|  | 28 | The Cross-Development Toolchain | 
|  | 29 | =============================== | 
|  | 30 |  | 
|  | 31 | The `Cross-Development | 
|  | 32 | Toolchain <&YOCTO_DOCS_DEV_URL;#cross-development-toolchain>`__ consists | 
|  | 33 | of a cross-compiler, cross-linker, and cross-debugger that are used to | 
|  | 34 | develop user-space applications for targeted hardware. This toolchain is | 
|  | 35 | created either by running the ADT Installer script, a toolchain | 
|  | 36 | installer script, or through a :term:`Build Directory` | 
|  | 37 | that is based on | 
|  | 38 | your Metadata configuration or extension for your targeted device. The | 
|  | 39 | cross-toolchain works with a matching target sysroot. | 
|  | 40 |  | 
|  | 41 | Sysroot | 
|  | 42 | ======= | 
|  | 43 |  | 
|  | 44 | The matching target sysroot contains needed headers and libraries for | 
|  | 45 | generating binaries that run on the target architecture. The sysroot is | 
|  | 46 | based on the target root filesystem image that is built by the | 
|  | 47 | OpenEmbedded build system and uses the same Metadata configuration used | 
|  | 48 | to build the cross-toolchain. | 
|  | 49 |  | 
|  | 50 | .. _eclipse-overview: | 
|  | 51 |  | 
|  | 52 | Eclipse Yocto Plug-in | 
|  | 53 | ===================== | 
|  | 54 |  | 
|  | 55 | The Eclipse IDE is a popular development environment and it fully | 
|  | 56 | supports development using the Yocto Project. When you install and | 
|  | 57 | configure the Eclipse Yocto Project Plug-in into the Eclipse IDE, you | 
|  | 58 | maximize your Yocto Project experience. Installing and configuring the | 
|  | 59 | Plug-in results in an environment that has extensions specifically | 
|  | 60 | designed to let you more easily develop software. These extensions allow | 
|  | 61 | for cross-compilation, deployment, and execution of your output into a | 
|  | 62 | QEMU emulation session. You can also perform cross-debugging and | 
|  | 63 | profiling. The environment also supports a suite of tools that allows | 
|  | 64 | you to perform remote profiling, tracing, collection of power data, | 
|  | 65 | collection of latency data, and collection of performance data. | 
|  | 66 |  | 
|  | 67 | For information about the application development workflow that uses the | 
|  | 68 | Eclipse IDE and for a detailed example of how to install and configure | 
|  | 69 | the Eclipse Yocto Project Plug-in, see the "`Working Within | 
|  | 70 | Eclipse <&YOCTO_DOCS_DEV_URL;#adt-eclipse>`__" section of the Yocto | 
|  | 71 | Project Development Manual. | 
|  | 72 |  | 
|  | 73 | The QEMU Emulator | 
|  | 74 | ================= | 
|  | 75 |  | 
|  | 76 | The QEMU emulator allows you to simulate your hardware while running | 
|  | 77 | your 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 |  | 
|  | 96 | User-Space Tools | 
|  | 97 | ================ | 
|  | 98 |  | 
|  | 99 | User-space tools are included as part of the Yocto Project. You will | 
|  | 100 | find these tools helpful during development. The tools include | 
|  | 101 | LatencyTOP, PowerTOP, OProfile, Perf, SystemTap, and Lttng-ust. These | 
|  | 102 | tools 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. |