<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">

<chapter id='adt-intro'>

<title>Application Development Toolkit (ADT) User's Guide</title>

<para>
    Welcome to the Application Development Toolkit User’s Guide.  This manual provides 
    information that lets you get going with the ADT to develop projects using the Yocto 
    Project.
</para>

<section id='book-intro'>
    <title>Introducing the Application Development Toolkit (ADT)</title>

    <para>
        Fundamentally, the ADT consists of an architecture-specific cross-toolchain and 
        a matching sysroot that are both built by the Yocto Project build system Poky.  
        The toolchain and sysroot are based on a metadata configuration and extensions, 
        which allows you to cross-develop on the host machine for the target.
    </para>

    <para>
        Additionally, to provide an effective development platform, the Yocto Project 
        makes available and suggests other tools you can use with the ADT.  
        These other tools include the Eclipse IDE Yocto Plug-in, an emulator (QEMU), 
        and various user-space tools that greatly enhance your development experience.
    </para>

    <para>
        The resulting combination of the architecture-specific cross-toolchain and sysroot 
        along with these additional tools yields a custom-built, cross-development platform 
        for a user-targeted product.
    </para>
</section>

<section id='adt-components'>
    <title>ADT Components</title>

    <para>
        This section provides a brief description of what comprises the ADT.
    </para>
    
    <section id='the-cross-toolchain'>
        <title>The Cross-Toolchain</title>

        <para>
            The cross-toolchain consists of a cross-compiler, cross-linker, and cross-debugger 
            that are used to develop user-space applications for targeted hardware.
            This toolchain is created either by running the ADT Installer script or 
            through a Yocto Project build tree that is based on your metadata 
            configuration or extension for your targeted device.  
            The cross-toolchain works with a matching target sysroot.
        </para>
    </section>

    <section id='sysroot'>
        <title>Sysroot</title>

        <para>
            The matching target sysroot contains needed headers and libraries for generating 
            binaries that run on the target architecture.  
            The sysroot is based on the target root filesystem image that is built by 
            the Yocto Project's build system Poky and uses the same metadata configuration 
            used to build the cross-toolchain.
        </para>
    </section>

    <section id='the-qemu-emulator'>
        <title>The QEMU Emulator</title>

        <para>
            The QEMU emulator allows you to simulate your hardware while running your 
            application or image.
            QEMU is made available a number of ways:
            <itemizedlist>
                <listitem><para>If you use the ADT Installer script to install ADT, you can 
                    specify whether or not to install QEMU.</para></listitem>
                <listitem><para>If you have downloaded a Yocto Project release and unpacked 
                    it to create a Yocto Project file structure and you have sourced  
                    the Yocto Project environment setup script, QEMU is installed and automatically 
                    available.</para></listitem>
                <listitem><para>If you have installed the cross-toolchain 
                    tarball and you have sourcing the toolchain's setup environment script, QEMU
                    is also installed and automatically available.</para></listitem>
            </itemizedlist>
        </para>
    </section>

    <section id='user-space-tools'>
        <title>User-Space Tools</title>

        <para>
            User-space tools are included as part of the distribution.  
            You will find these tools helpful during development.  
            The tools include LatencyTOP, PowerTOP, OProfile, Perf, SystemTap, and Lttng-ust.  
            These tools are common development tools for the Linux platform.
            <itemizedlist>
                <listitem><para><emphasis>LatencyTOP:</emphasis> LatencyTOP focuses on latency 
                    that causes skips in audio,
                    stutters in your desktop experience, or situations that overload your server 
                    even when you have plenty of CPU power left.  
                    You can find out more about LatencyTOP at 
                    <ulink url='http://www.latencytop.org/'></ulink>.</para></listitem>
                <listitem><para><emphasis>PowerTOP:</emphasis> Helps you determine what   
                    software is using the most power.  
                    You can find out more about PowerTOP at 
                    <ulink url='http://www.linuxpowertop.org/'></ulink>.</para></listitem>
                <listitem><para><emphasis>OProfile:</emphasis> A system-wide profiler for Linux 
                    systems that is capable of profiling all running code at low overhead.  
                    You can find out more about OProfile at 
                    <ulink url='http://oprofile.sourceforge.net/about/'></ulink>.</para></listitem>
                <listitem><para><emphasis>Perf:</emphasis> Performance counters for Linux used 
                    to keep track of certain types of hardware and software events.  
                    For more information on these types of counters see 
                    <ulink url='https://perf.wiki.kernel.org/index.php'></ulink> and click 
                    on “Perf tools.”</para></listitem>
                <listitem><para><emphasis>SystemTap:</emphasis> A free software infrastructure 
                    that simplifies information gathering about a running Linux system.  
                    This information helps you diagnose performance or functional problems.  
                    SystemTap is not available as a user-space tool through the Yocto Eclipse IDE Plug-in.  
                    See <ulink url='http://sourceware.org/systemtap'></ulink> for more information 
                    on SystemTap.</para></listitem>
                <listitem><para><emphasis>Lttng-ust:</emphasis> A User-space Tracer designed to 
                    provide detailed information on user-space activity.  
                    See <ulink url='http://lttng.org/ust'></ulink> for more information on Lttng-ust.
                    </para></listitem>
            </itemizedlist>
        </para>
    </section>
</section>

</chapter>
<!--
vim: expandtab tw=80 ts=4
-->
