xFSTK  1.8.1-5.311
Intel SoC Cross Platform Firmware & Software Tool Kit
xFSTK Download API Overview
    \section api_summary xFSTK Download API Summary
    \title The xfstkdldrapi provides an interface to enable development of custom tools that perform fw/os download.  Single target and multitarget support are built into the library.
           Multitarget provisioning can be performed in either a single threaded manner or a multithreaded manner.  For xFSTK 1.2.0 Async multithreaded parallel provisioning is
           supported now for D1 silicon which support unique USB serial number on the device.  Serial multitarget provisioning is only recommended if a very slow and old host is used.  

            Starting from xFSTK 1.2.2, API will support dynamic load from client app, example code is added to show how
    to use this feature. 

            Starting from xFSTK 1.3.0 the libusb driver will be disabled for Windows release, instead a new USB driver 
            installer based on Jungo USB driver stack is icnluded, it also provided USB port mapping from the driver API so that xFSTK Client 
            Apps won't need to use WinDDK code to detect the USBSN/Port anymore. 

            Examples have been provided to enable experimentation 
            and development.

            \sa \ref api_setup1 \"xFSTK API Setup (Windows XP/7/8)\"
            \sa \ref api_setup2 \"xFSTK API Setup (Ubuntu 10.04 LTS - Linux)\"
            \sa \ref xfstkdldrapi \"xFSTK Download API Documentation\"
            \sa \ref xfstk-dldr-example-serial.cpp \"xfstk-dldr-example-serial.cpp\"
            \sa \ref xfstk-dldr-example-parallel.cpp \"xfstk-dldr-example-parallel.cpp\"
            \sa \ref xfstk-dldr-example-parallel-dynamic-load.cpp \"xfstk-dldr-example-parallel-dynamic-load.cpp\"

    \section api_features xFSTK Download API Features
   <ul>
   <li>FW Only Download - One shot FW download via USB.
   <li>OS Only Download - One shot OS download via USB.
   <li>FW/OS Download - One shot FW/OS download via USB.
   <li>FW/OS HVM Download - One shot FW/OS Async mode Parallel multi-target download via USB.
   <li>Status Callback - Register a callback to obtain detailed status updates.
   <li>User specified retry count - Retry counts for USB I/O errors specified by user.
   <li>Get available targets - Scan the usb device tree for available SoC targets, provide device port mapping info to client Apps.
   <li>Dynamic API DLL Load - Provide APIs to dynamically load xFSTK API DLL so that the client Apps don't need to link the lib file.
   </ul>

    \section api_class xFSTK Download API CLass

    \image html xfstkbareclass.PNG

    \section api_sequence xFSTK Provisioning Sequence (Serial Round Robin)

    \image html xfstkserialseq.PNG


    \page api_setup2 xFSTK API Setup (Ubuntu 10.04 LTS - Linux)

            xFSTK Supports QT Creator IDE.  Basic instructions for building the included examples under QT Creator are provided below.

            Along with QT Creator there is one other pre-requisite package callled 'build-essential'.  Both packages can be obtained through the Ubuntu 10.04 Software Center.

            \image html xfstklinuxqtide.png

            \image html build-essential.png

            Begin by copying the xfstksdk.tar.gz file to your home directory.

            \image html xfstklinuxsdksetup.png

            Now unpack to obtain the following directory structure.

            \image html xfstklinuxextracted.PNG

            Browse into one of the examples to find the QT project file.

            \image html xfstklinuxproopen.png

            Now build the project.

            \image html xfstklinuxbuildqt.PNG

\page api_setup1 xFSTK API Setup (Windows XP/7/8)

    xFSTK supports both Visual Studio 2008 and QT Creator IDEs.  Basic instructions for building the included examples under both IDEs are provided below.

    \section api_windows_bkm xFSTK Multitarget Windows Driver Configuration

    In order to enable multi-target provisioning the xFSTK driver must be installed for every USB port that will have a target connected to it.  Follow the procedure below to ensure correct driver installation.

    \image html xfstkwindowsmt.PNG

    \section api_windows_setup Perparing the SDK

    Begin by extracting the xfstk-sdk.zip located in the xFSTK installation folder.
    \image html xfstksetup.PNG

    Once extracted the following directory tree should be created:
    \image html xfstkextractedwin.PNG

    QT Version Information (Changes to include / lib paths may be required for newer QT versions)
    \image html xfstkqtabout.PNG

            QT Creator can be obtained at the official Nokia website:

            http://qt.nokia.com/

    QT Projects can be found in the mingw subdirectory:

    \image html xfstkqtprojectopen.PNG

    Once you have opened the project you can build the solution.

    \image html xfstkideqt.PNG

    Visual Studio Version Information

    \image html xfstkvsabout.PNG

            QT Visual Studio Plugin is recommended:

            http://qt.nokia.com/downloads/visual-studio-add-in

    Visual studio projects can be found in the msvc subdirectory.

    \image html xfstkvsprojectopen.PNG

    Once you have opened the project you can build the solution.

    \image html xfstkvside.PNG

    \page opensource_libs Opensource Libraries and Tools

        Parts of this software use of the following opensource libraries and tools:

            Library: Qt, License: Lesser General Public License (LGPL) (version 2.1)
            Website: http://qt.nokia.com/

            Library: Boost, License: Boost Software License
            Website: http://www.boost.org/      

            Library: Open Icon Library , License: LGPL or PD
            Website: http://openiconlibrary.sourceforge.net/

            Library: flashrom, License: GNU General Public License version 2
            Website: http://flashrom.org/Flashrom

            Documentation: Doxygen
            Website: http://www.stack.nl/~dimitri/doxygen/

            Installer: InnoSetup
            Website: http://www.jrsoftware.org/isinfo.php

            Installer: Xfstk Downloader Tool, License: LGPL
            Website: http://www.gnu.org/licenses/lgpl-2.1.txt

            Installer: DediProg SF100 downloader SW
            © 2006-2009 Dediprog Technology, CO., Ltd . All Rights Reserved.
            Website: http://www.dediprog.com/home

\page manu Manufacturing Recommendations

    \section reduce_host_load Reduce Load on Provisioning Hosts

    Our testing has indicated that response times for detecting SoC targets can be delayed when the host machine is under 
    heavy load, such as during a virus scan. Hosts used for provisioning should have minimal system load while provisioning
    to ensure the fastest response time from the host's operating system.

    \section powered_hubs Use High Speed Ports and Powered Hubs

    Intel SoC devices are hi-speed USB 2.0 devices. Firmware and OS provisioning should be done through hi-speed
    ports on the provisioning host. If USB hubs are used they should also be hi-speed USB 2.0 devices and be powered
    by an external power supply. Recomend to use the white SSK 7 ports high speed hub. 


    \section high_speed_usb_card Use High Speed PCI-E USB Cards

    Our testing has indicated that provisioning is highly reliable when using quality high speed PCI-E USB cards for HVM firmware and OS provisioning. 
Recomend to use Starteck PEXUSB400 4 ports PCI-E card. 

    \section Good_power_supply Use Good External Power Supply

    Good power supply is required to power the SoU device during HVM manufacturing, it need to have suffient maximum current
for each SoU device at least 1.5A.  Recomend to use Agilent E3614A or similar and better to use one power for each SoC device.   

    \section provide_feedback Provide Feedback

    xFSTK is being actively developed to support Intel SoC products. Please help us to improve your business by providing
    feedback on how you are currently using and want to use xFSTK.