BootloaderHID.txt 4.1 KB

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