
8. The A-Star 32U4 Bootloader
The A-Star 32U4 boards and the A-Star-compatible Zumo 32U4 come with a USB bootloader that can be used in
conjunction with the Arduino IDE or AVRDUDE to load new programs onto the device. This section documents
some technical details of the bootloader for advanced users who want to better understand how it works. If you
just want to get started using your device, it is fine to skip this section.
The A-Star 32U4 Bootloader is based on the
Caterina bootloader
[https://github.com/arduino/Arduino/tree/master/
hardware/arduino/bootloaders/caterina]
,
which
is
the
bootloader
used
on
the
Arduino
Leonardo
[https://www.pololu.com/product/2192]
,
Arduino Micro
[https://www.pololu.com/product/2188]
and several other
ATmega32U4 boards. The bootloader is open source and its
source code
[https://github.com/pololu/a-star/tree/
master/bootloaders/caterina]
is available on GitHub. The bootloader occupies the upper four kilobytes of the
ATmega32U4’s program memory, leaving 28 KB for the user program. The bootloader’s USB interface consists
of a single virtual serial port that accepts the programming commands defined in
AVR109
[http://www.atmel.com/
images/doc1644.pdf]
. The bootloader always runs first immediately after the AVR is reset.
Startup logic
The main difference between the A-Star 32U4 Bootloader and Caterina is in the startup logic. This is the part of
the bootloader that runs immediately after the AVR is reset, and it decides whether to run the user program or
run the rest of the bootloader. The startup logic of the Caterina bootloader is designed so that when the RST line
goes low, the bootloader will run. This means that if you want to restart your program using the RST line, it will
take 8 seconds before the bootloader times out waiting for an upload and the sketch starts.
The A-Star 32U4 Bootloader has different startup logic that allows you to use the RST line to reset the board
with a smaller delay. If the RST line goes low once, the user program will run after a 750 ms delay. If the RST
line goes low twice within 750 ms, then the bootloader will run. (This behavior is the same as on boards like
SparkFun’s Pro Micro.)
The start-up logic of the A-Star 32U4 Bootloader is shown in the flowchart below:
Pololu Zumo 32U4 Robot User’s Guide
© 2001–2015 Pololu Corporation
8. The A-Star 32U4 Bootloader
Page 70 of 76