CI: Build on Arch (bleeding-ege) and Ubuntu (stable) AVR-GCC toolchains.
[pub/USBasp.git] / Projects / AVRISP-MKII / AVRISP-MKII.txt
index d4eaa17..740a56c 100644 (file)
  *
  *  \section Sec_Description Project Description
  *
  *
  *  \section Sec_Description Project Description
  *
- *  Firmware for an Atmel Studio/AVR Studio compatible AVRISP-MKII clone programmer. This project will enable the USB
+ *  Firmware for an Atmel Studio compatible AVRISP-MKII clone programmer. This project will enable the USB
  *  AVR series of microcontrollers to act as a clone of the official Atmel AVRISP-MKII programmer, usable within
  *  AVR series of microcontrollers to act as a clone of the official Atmel AVRISP-MKII programmer, usable within
- *  Atmel Studio/AVR Studio or with any software capable of driving a real Atmel AVRISP-MKII programmer. In its most
- *  basic form, it allows for the programming of AVR TINY, MEGA and XMEGA devices aat the programmer's VCC voltage from
- *  within Atmel Studio/AVR Studio with no special hardware other than the USB AVR and the parts needed for the USB
+ *  Atmel Studio or with any software capable of driving a real Atmel AVRISP-MKII programmer. In its most
+ *  basic form, it allows for the programming of AVR TINY, MEGA and XMEGA devices at the programmer's VCC voltage from
+ *  within Atmel Studio with no special hardware other than the USB AVR and the parts needed for the USB
  *  interface. If the user desires, more advanced circuits incorporating level conversion can be made to allow for the
  *  programming of target AVRs running at a different voltage to the programmer.
  *
  *  This device spoofs Atmel's official AVRISP-MKII device PID so that it remains compatible with Atmel's AVRISP-MKII
  *  interface. If the user desires, more advanced circuits incorporating level conversion can be made to allow for the
  *  programming of target AVRs running at a different voltage to the programmer.
  *
  *  This device spoofs Atmel's official AVRISP-MKII device PID so that it remains compatible with Atmel's AVRISP-MKII
- *  drivers. When prompted, direct your OS to install Atmel's AVRISP-MKII drivers provided with Atmel Studio/AVR Studio.
+ *  drivers. It is currently tested working under the following configurations:
+ *
+ *    - <b>Windows:</b> Atmel Studio 7, with alternative driver
+ *    - <b>Windows:</b> AVRDUDE 6.2, with alternative driver
+ *    - <b>Linux:</b> AVRDUDE 6.1
+ *
+ *  <b>Note that this clone requires a libUSB based driver under Windows,</b> due to an incompatible change in the official
+ *  Jungo based driver. The alternative driver given here will function with both real and clone AVRISP devices in Atmel
+ *  Studio 7 onwards under Windows - and as a bonus, also provides AVRDude access to the programmer.
+ *
+ *  As of Atmel Studio version 7.0.1417 the legacy Jungo driver has been deprecated in favor of an official libUSB based
+ *  driver, making the driver packaged here superfluous. Use the driver packaged here only if you are still using an earlier
+ *  Atmel Studio 7 build, otherwise the official Atmel libUSB driver should be used.
  *
  *  Note that this design currently has the following limitations:
  *    - No reversed/shorted target connector detection and notification
  *
  *  Note that this design currently has the following limitations:
  *    - No reversed/shorted target connector detection and notification
  *  is compatible with the free open source AVRDude programming software project.
  *
  *  \subsection SSec_WindowsInstallation Windows Installation
  *  is compatible with the free open source AVRDude programming software project.
  *
  *  \subsection SSec_WindowsInstallation Windows Installation
- *  On Windows systems, due to an unfortunate limitation of the USB AVR devices and the driver used in the official AVR
- *  Studio/Atmel Studio platform, the programmer cannot be made compatible with AVRDude and AVR Studio/Atmel Studio at the
- *  same time. Instead, the programmer will be compatible with the official Atmel software by default, with a recompilation
- *  with the \c LIBUSB_DRIVER_COMPAT token (see \ref Sec_Options) being required to use the alternative libUSB driver
- *  compatibility mode that will allow the programmer to work under AVRDude on Windows.
- *
- *  If compiled for Atmel Studio/AVR Studio compatibility, install the Jungo device drivers that ship with the Atmel software.
- *  If compiled in the alternative libUSB compatibility mode for AVRDude use, install the libUSB drivers that are included
- *  with your compiled copy of AVRDude, or create them using the libUSB-Win32 (http://sourceforge.net/projects/libusb-win32)
- *  project.
- *
- *  For convenience, the programmer will report two different serial numbers depending on the firmware compatibity mode, so
- *  that the correct driver can be installed for the matching firmware. If the \c RESET_TOGGLES_LIBUSB_COMPAT compile option
- *  is used (see \ref Sec_Options) this allows for an easy way to automatically switch device drivers along with the firmware
- *  compatibility mode.
+ *  On Windows systems, due to an unfortunate limitation of the USB AVR devices and the Atmel Studio platform, the programmer
+ *  requires an alternative libUSB based driver. Uninstall the existing Jungo driver for the device (if installed) and replace
+ *  it with the driver that ships with this project, to enable access to the programmer in Atmel Studio and AVRDUDE.
  *
  *  \section Sec_ISP ISP Connections
  *  Connections to the device for SPI programming (when enabled):
  *
  *  <table>
  *   <tr>
  *
  *  \section Sec_ISP ISP Connections
  *  Connections to the device for SPI programming (when enabled):
  *
  *  <table>
  *   <tr>
- *    <td><b>Programmer Pin:</b></td>
- *    <td><b>Target Device Pin:</b></td>
- *    <td><b>ISP 6 Pin Layout:</b></td>
+ *    <th><b>Programmer Pin:</b></th>
+ *    <th><b>Target Device Pin:</b></th>
+ *    <th><b>ISP 6 Pin Layout:</b></th>
  *   </tr>
  *   <tr>
  *    <td>MISO</td>
  *   </tr>
  *   <tr>
  *    <td>MISO</td>
  *
  *  <table>
  *   <tr>
  *
  *  <table>
  *   <tr>
- *    <td><b>Programmer Pin:</b></td>
- *    <td><b>Target Device Pin:</b></td>
- *    <td><b>PDI 6 Pin Layout:</b></td>
+ *    <th><b>Programmer Pin:</b></th>
+ *    <th><b>Target Device Pin:</b></th>
+ *    <th><b>PDI 6 Pin Layout:</b></th>
  *   </tr>
  *   <tr>
  *    <td>Tx/Rx <b><sup>2</sup></b></td>
  *   </tr>
  *   <tr>
  *    <td>Tx/Rx <b><sup>2</sup></b></td>
  *
  *  <table>
  *   <tr>
  *
  *  <table>
  *   <tr>
- *    <td><b>Programmer Pin:</b></td>
- *    <td><b>Target Device Pin:</b></td>
- *    <td><b>TPI 6 Pin Layout:</b></td>
+ *    <th><b>Programmer Pin:</b></th>
+ *    <th><b>Target Device Pin:</b></th>
+ *    <th><b>TPI 6 Pin Layout:</b></th>
  *   </tr>
  *   <tr>
  *    <td>Tx/Rx <b><sup>2</sup></b></td>
  *   </tr>
  *   <tr>
  *    <td>Tx/Rx <b><sup>2</sup></b></td>
  *
  *  <table>
  *   <tr>
  *
  *  <table>
  *   <tr>
- *    <td><b>Define Name:</b></td>
- *    <td><b>Location:</b></td>
- *    <td><b>Description:</b></td>
+ *    <th><b>Define Name:</b></th>
+ *    <th><b>Location:</b></th>
+ *    <th><b>Description:</b></th>
  *   </tr>
  *   <tr>
  *    <td>AUX_LINE_PORT</td>
  *   </tr>
  *   <tr>
  *    <td>AUX_LINE_PORT</td>
  *    <td>NO_VTARGET_DETECT</td>
  *    <td>AppConfig.h</td>
  *    <td>Define to disable VTARGET sampling and reporting on AVR models with an ADC converter. This will cause the programmer
  *    <td>NO_VTARGET_DETECT</td>
  *    <td>AppConfig.h</td>
  *    <td>Define to disable VTARGET sampling and reporting on AVR models with an ADC converter. This will cause the programmer
- *        to report a fixed 3.3V target voltage to the host regardless of the real target voltage. 
+ *        to report a fixed 3.3V target voltage to the host regardless of the real target voltage.
  *        \n \n <i>Ignored when compiled for targets lacking an ADC.</i></td>
  *   </tr>
  *   <tr>
  *        \n \n <i>Ignored when compiled for targets lacking an ADC.</i></td>
  *   </tr>
  *   <tr>
  *        \n \n <i>Ignored when compiled for targets lacking an ADC, or when NO_VTARGET_DETECT is defined.</i></td>
  *   </tr>
  *   <tr>
  *        \n \n <i>Ignored when compiled for targets lacking an ADC, or when NO_VTARGET_DETECT is defined.</i></td>
  *   </tr>
  *   <tr>
- *    <td>LIBUSB_DRIVER_COMPAT</td>
- *    <td>AppConfig.h</td>
- *    <td>Define to switch to a non-standard endpoint scheme, breaking compatibility with Atmel Studio/AVR Studio under Windows but
- *        making the code compatible with software such as avrdude (all platforms) that use the libUSB driver.
- *
- *        \note This option is incompatible with \c RESET_TOGGLES_LIBUSB_COMPAT.</td>
- *   </tr>
- *   <tr>
- *    <td>RESET_TOGGLES_LIBUSB_COMPAT</td>
- *    <td>AppConfig.h</td>
- *    <td>Define to make the /RESET line of the AVR toggle between Jungo and libUSB driver compatibility modes. Each time the AVR is
- *        reset externally via the reset pin, the compatibility mode will be toggled. The compatibility mode is preserved between
- *        power cycles and is not toggled via other forms of reset such as Watchdog or Brown Out.
- *
- *        When this option is enabled, all board LEDs will flash twice on startup for Jungo compatibility mode, and five times for
- *        libUSB compatibility mode.
- *
- *        \note This option is incompatible with \c LIBUSB_DRIVER_COMPAT.</td>
- *   </tr>
- *   <tr>
  *    <td>XCK_RESCUE_CLOCK_ENABLE</td>
  *    <td>AppConfig.h</td>
  *    <td>Define to move the ISP rescue clock to the AVR's XCK pin instead of the OCR1A output pin. This is useful for existing programming
  *    <td>XCK_RESCUE_CLOCK_ENABLE</td>
  *    <td>AppConfig.h</td>
  *    <td>Define to move the ISP rescue clock to the AVR's XCK pin instead of the OCR1A output pin. This is useful for existing programming