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