]> git.donarmstrong.com Git - qmk_firmware.git/blob - tmk_core/protocol/lufa/LUFA-git/Bootloaders/HID/BootloaderHID.txt
Merge commit 'f6d56675f9f981c5464f0ca7a1fbb0162154e8c5'
[qmk_firmware.git] / tmk_core / protocol / lufa / LUFA-git / Bootloaders / HID / BootloaderHID.txt
1 /** \file
2  *
3  *  This file contains special DoxyGen information for the generation of the main page and other special
4  *  documentation pages. It is not a project source file.
5  */
6
7 /** \mainpage HID Class USB AVR Bootloader
8  *
9  *  \section SSec_Compat Demo Compatibility:
10  *
11  *  The following list indicates what microcontrollers are compatible with this demo.
12  *
13  *  \li Series 7 USB AVRs (AT90USBxxx7)
14  *  \li Series 6 USB AVRs (AT90USBxxx6)
15  *  \li Series 4 USB AVRs (ATMEGAxxU4)
16  *  \li Series 2 USB AVRs (AT90USBxx2, ATMEGAxxU2)
17  *
18  *  \section SSec_Info USB Information:
19  *
20  *  The following table gives a rundown of the USB utilization of this demo.
21  *
22  * <table>
23  *  <tr>
24  *   <td><b>USB Mode:</b></td>
25  *   <td>Device</td>
26  *  </tr>
27  *  <tr>
28  *   <td><b>USB Class:</b></td>
29  *   <td>Human Interface Device Class (HID)</td>
30  *  </tr>
31  *  <tr>
32  *   <td><b>USB Subclass:</b></td>
33  *   <td>N/A</td>
34  *  </tr>
35  *  <tr>
36  *   <td><b>Relevant Standards:</b></td>
37  *   <td>USBIF HID Class Standard \n
38  *       Teensy Programming Protocol Specification</td>
39  *  </tr>
40  *  <tr>
41  *   <td><b>Supported USB Speeds:</b></td>
42  *   <td>Low Speed Mode \n
43  *       Full Speed Mode</td>
44  *  </tr>
45  * </table>
46  *
47  *  \section SSec_Description Project Description:
48  *
49  *  This bootloader enumerates to the host as a HID Class device, allowing for device FLASH programming through
50  *  the supplied command line software, which is a modified version of Paul's TeensyHID Command Line loader code
51  *  from PJRC (used with permission). This bootloader is deliberately non-compatible with the proprietary PJRC
52  *  HalfKay bootloader GUI; only the command line interface software accompanying this bootloader will work with it.
53  *
54  *  Out of the box this bootloader builds for the AT90USB1287 with an 8KB bootloader section size, and will fit
55  *  into 2KB of bootloader space for the Series 2 USB AVRs (ATMEGAxxU2, AT90USBxx2) or 4KB of bootloader space for
56  *  all other models. If you wish to alter this size and/or change the AVR model, you will need to edit the MCU,
57  *  FLASH_SIZE_KB and BOOT_SECTION_SIZE_KB values in the accompanying makefile.
58  *
59  *  \warning <b>THIS BOOTLOADER IS NOT SECURE.</b> Malicious entities can recover written data, even if the device
60  *           lockbits are set.
61  *
62  *  \section Sec_Running Running the Bootloader
63  *
64  *  This bootloader is designed to be started via the HWB mechanism of the USB AVRs; ground the HWB pin (see device
65  *  datasheet) then momentarily ground /RESET to start the bootloader. This assumes the HWBE fuse is set and the BOOTRST
66  *  fuse is cleared.
67  *
68  *  \section Sec_Installation Driver Installation
69  *
70  *  This bootloader uses the HID class driver inbuilt into all modern operating systems, thus no additional drivers
71  *  need to be supplied for correct operation.
72  *
73  *  \section Sec_HostApp Host Controller Application
74  *
75  *  Due to licensing issues, the supplied bootloader is compatible with the HalfKay bootloader protocol designed
76  *  by PJRC, but is non-compatible with the cross-platform loader GUI. A modified version of the open source
77  *  cross-platform TeensyLoader application is supplied, which can be compiled under most operating systems. The
78  *  command-line loader application should remain compatible with genuine Teensy boards in addition to boards using
79  *  this custom bootloader.
80  *
81  *  Once compiled, programs can be loaded into the AVR's FLASH memory through the following example command:
82  *  \code
83  *  hid_bootloader_cli -mmcu=at90usb1287 Mouse.hex
84  *  \endcode
85  *
86  *  \section Sec_KnownIssues Known Issues:
87  *
88  *  \par After loading an application, it is not run automatically on startup.
89  *  Some USB AVR boards ship with the BOOTRST fuse set, causing the bootloader
90  *  to run automatically when the device is reset. In most cases, the BOOTRST
91  *  fuse should be disabled and the HWBE fuse used instead to run the bootloader
92  *  when needed.
93  *
94  *  \section SSec_Options Project Options
95  *
96  *  The following defines can be found in this demo, which can control the demo behaviour when defined, or changed in value.
97  *
98  *  <table>
99  *   <tr>
100  *    <td>
101  *     None
102  *    </td>
103  *   </tr>
104  *  </table>
105  */