/**
\mainpage Firmware for CoreSight Debug Access Port

<b>CMSIS-DAP</b> is a specification and a implementation of a <b>Firmware</b> that supports access to the CoreSight <b>Debug Access Port</b> (DAP).\n\n

The various Arm Cortex processors provide <a href="http://www.arm.com/products/system-ip/coresight/index.php" target="_blank">
<b>CoreSight Debug and Trace</b></a>. CMSIS-DAP supports target Devices that contain one or more Cortex processors. 
A Device provides a Debug Access Port (DAP) typically either with a 5-pin JTAG or with a 2-pin Serial Wired Debug (SWD)
interface that connects to a Debug Unit. CMSIS-DAP is the interface firmware for a Debug Unit that connects 
the Debug Port to USB. Debuggers that execute on a host computer connect via USB and the Debug Unit to the Device
which runs the application software.

\image html "CMSIS_DAP_INTERFACE.png" "CMSIS-DAP Overview"

Configuration of CMSIS-DAP Firmware
-----------------------------------
The CMSIS-DAP Firmware version 2 can be configured in two different USB interface modes:
 - Version 1 configuration uses USB HID as interface to the host PC.
 - Version 2 configuration uses WinUSB as interface to the host PC and provides high-speed SWO trace streaming.

Benefits of CMSIS-DAP
---------------------
 - Provides a standardized interface for debuggers. Interfaces to many standard debuggers is available.
 - Access to CoreSight registers of all Cortex processor architectures (Cortex-A/R/M).
 - Connects via 5-pin JTAG or 2-pin Serial Wire Debug (SWD).
 - Supports multi-core debugging.
 - Supports Serial Wire Output of Cortex-M devices (new in CMSIS-DAP Version 1.1.0).
 - Easy to deploy to Debug Units based on Cortex-M microcontrollers. 
 - Debug Unit may be integrated on an evaluation board.
 - USB using HID (Human Interface Device) driver class that avoids driver installation on host PC.
 - Supports time-critical JTAG or SWD command execution (new in CMSIS-DAP Version 1.10). 
 - Supports Test Domain Timer for time measurement using the debug unit (new in CMSIS-DAP Version 1.2.0)
 
CMSIS-DAP Firmware
==================
The CMSIS-DAP Firmware is provided as source code and is fully configurable to a new Debug Unit. 
A source code template and several reference implementations for popular Debug Units are provided.
Refer to \ref DAP_Config_gr for more information.

The CMSIS-DAP Software Stack is composed of the following components:

  - CMSIS-DAP Firmware that interfaces to JTAG or SWD Debug pins using standard I/O pins of the Cortex-M device.
  - CMSIS-Driver USART that connects the UART of the Cortex-M device to the SWO output from the target.
  - USB Communication Stack that interfaces to the USB Port of the Host Computer using the HID or custom class.
  - The USB Device middleware may require CMSIS-RTOS and a CMSIS-Driver USB.
  
\image html "CMSIS_DAP_SWStack.png" "CMSIS-DAP Software Stack"

In the examples provided the MDK Version 5 USB Communication Stack has been used. However it is possible to
use alternative USB stacks instead.

The CMSIS-DAP Firmware is provided in the following directory structure.

Directory                             | Description
:-------------------------------------|:------------------------------------------------------
.\\CMSIS\\DAP\\Firmware\\Config       | CMSIS-DAP Firmware configuration 
.\\CMSIS\\DAP\\Firmware\\Examples     | CMSIS-DAP Firmware adapted to various Debug Units
.\\CMSIS\\DAP\\Firmware\\Include      | CMSIS-DAP Firmware header file
.\\CMSIS\\DAP\\Firmware\\Source       | CMSIS-DAP Firmware source code
.\\CMSIS\\DAP\\Firmware\\Template     | Interface Templates for MDK Version 5 middleware

Validation
----------
CMSIS-DAP compliant Debug Units must be validated using the scripts provided in  \ref DAP_Validate_gr.

<hr>

*/
/** 
\page dap_revisionHistory Revision History of CMSIS-DAP

<table class="cmtable" summary="Revision History">
    <tr>
      <th>Version</th>
      <th>Description</th>
    </tr>
    <tr>
      <td>V2.0.0</td>
      <td>
         Changed: Communication via WinUSB to achieve high-speed transfer rates\n
         Added: Streaming SWO via separate \ref WinUSB "WinUSB" endpoint\n
     Added: \ref DAP_SWO_Transport extended with transport mode 2 - Send trace data via separate \ref WinUSB "WinUSB" endpoint 
      </td>
    </tr>
    <tr>
      <td>V1.2.0</td>
      <td>
         Added: \ref DAP_SWD_Sequence to enable SWD multi-drop target selection \n
         Added: Test Domain Timer values in the commands \ref DAP_Info, \ref DAP_Transfer
      </td>
    </tr>
    <tr>
      <td>V1.1.0</td>
      <td>
         Added: \ref DAP_swo_gr to support Serial Wire Output (SWO) in UART mode\n
         Added: \ref DAP_atomic_gr support for executing time critical DAP commands
      </td>
    </tr>
    <tr>
      <td>V1.0.0</td>
      <td>Version 1.0.0 was never released; version number skipped.</td>
    </tr>
    <tr>
      <td>V0.02</td>
      <td>Renamed \b DAP_LED to \ref DAP_HostStatus.</td>
    </tr>
    <tr>
      <td>V0.01</td>
      <td>Beta Release.</td>
    </tr>
</table>
*/

