Skip to content

Overview

Nico edited this page Jul 3, 2017 · 6 revisions

HoodLoader2 is a bootloader not a firmware. It replaces the standard (DFU for Uno/Mega, CDC for Leonardo/Micro) bootloader with a CDC bootloader + Fast USB-Serial all together.

The CDC bootloader allows to reprogram the 8/16/32u2/32u4 (USB MCU) while the Fast USB-Serial bridge allows to reprogram external microcontrollers (I/O MCU) such as the 328/2560. All MCUs will work with full duplex 2M baudrate, except baud 57600 which is used for the CDC bootloader!

The original idea was to flash the 8/16/32u2 with custom programs, also via the Arduino IDE. HoodLoader2 comes with full Arduino compatible USB-Core (since 1.6.6) to create your very own custom programs with the normally unused 16u2 USB chip.

With the HID Project you can also use additional functions like Gamepad, Consumer/Media Keys, System Keys, Absolute Mouse, NKRO Keyboard and more.

With HoodLoader 2.0.5 you are also able to use it for the 32u4, meaning you can use an Arduino (Pro) Micro together with a Pro Mini for example and get the best out of both MCUs. See wiki information on how to connect them together properly.

HoodLoader2

HoodLoader2 features:

  • Bootloader features:
  • CDC Bootloader for the 8u2/16u2/32u2/32u4 (to upload .hex files via avr-dude/Arduino IDE to the USB MCU)
  • Fast USB-Serial Bridge (to upload .hex files via avr-dude/Arduino IDE to the 328/2560 I/O MCU)
  • Improved reset features (watchdog reset, double tab reset)
  • Up to 2M baud rate, full duplex (since 2.0.5)
  • Also supports AtMega32u4 (no lock byte support, since 2.0.5)
  • EEPROM programming support for 32u2 only (since 2.0.5)
  • Fixes garbage byte
  • Baud 57600 used for CDC reprogramming
  • No drivers needed for the HoodLoader2 itself (default Arduino Uno/Mega/Leonardo/Micro drivers)
  • Self flashing sketch to burn the HoodLoader2 with a standalone or 2nd Arduino (modified version from Nick Gammon)
  • HID Project compatible
  • Also see 32u4 improvements/changes below

8/16/32u2 - Uno/Mega

Normally every Uno/Mega R3 has a 16u2. Earlier versions had an 8u2 and some online shops even sell the bigger 32u2 (I've got two of them :D). It might be possible that you don't have a 16u2 on your Arduino board, if its a cheap clone. HoodLoader2 is not, and will not be compatible with Arduino Due.

8/16/32u2 Flash Bootloader (4kb) Program (4/12/28kb)
Before DFU Bootloader (via Flip) USB-Serial Firmware
After HoodLoader2 (CDC Bootloader + Fast USB-Serial) Custom Sketch/Firmware

16u2 features/limitations on a normal Uno/Mega R3:

  • 16kb flash (minus 4kb for the HoodLoader2) (8 for a 8u2, 32 for a 32u2)
  • 500 bytes Ram 8u2 and 16u2 (1000 bytes Ram for a 32u2)
  • 500 bytes EEPROM 8u2 and 16u2 (1000 bytes EEPROM for a 32u2)
  • 4 usable USB Endpoints: CDC Serial(3), HID(1 each), MIDI(2), (combined max 4)
  • 176 bytes DPRAM (ram for USB endpoints, double bank possible)
  • 8 and 16 bit timer
  • 2 status LEDs (PD4 RX + PD5 TX)
  • 7 usable i/o pins with PCINT, SPI and 1PWM (3 pin SPI header + additional 4 pin header)
  • HW Serial connected to Serial0 of the 328/2560
  • PD7 connected to RESET of the 328/2560
  • Not all pins are broken out (SS, INT, etc)
  • No I2C (u2 series doesn't have TWI) but Serial (to 328/2560) and SPI (master only)
  • No analogue pins
  • No USB-Serial bridge at baud 57600 possible, used for CDC self reprogramming

32u4 - Leonardo/Micro

With HoodLoader 2.0.5 the Arduino Leonardo/Micro can be used as well:

32u4 Flash Bootloader (4kb) Program (28kb)
Before CDC Bootloader (via Arduino IDE) Custom Sketch/Firmware
After HoodLoader2 (CDC Bootloader + Fast USB-Serial) Custom Sketch/Firmware

Improvements/Changes compared to old Leonardo Bootloader:

  • Saved BootKey in unproblematic RAMEND
  • Does a full Watchdog reset after reprogramming (no wrong USB clock settings)
  • Adds Fast USB-Serial for up to 2M full duplex
  • Can program external MCU via pin 4 reset
  • Different reset mechanism