What is a Bootloader?

If you take a bare microcontroller chip fresh from the factory and apply power to it, the internal system clock will start ticking away.  But nothing else will happen.  Without a program to run, the chip will just sit there doing nothing.

So, how do you load a program onto a brand-new microcontroller?

Most microcontroller chips have a special programming interface such as JTAG or AVRISP that allows you to burn programs into Flash memory.  Unfortunately, these programming interfaces generally require specialized tools like a USBTinyISP or a Segger J-Link.

What if you don't have one of those devices?

Most of the processor boards we carry have a pre-loaded program called a 'Bootloader'.  A Bootloader is a program that allows you to load other programs via a more convenient interface like a standard USB cable.  When you power-up or reset your microcontroller board, the bootloader checks to see if there is an upload request.  If there is, it will upload the new program and burn it into Flash memory.  If not, it will start running the last program that you loaded.

So where do bootloaders come from?

Here at the Adafruit factory, we use custom-built programming fixtures to burn a bootloader onto each board as it comes off the manufacturing line.  So when you get your processor board, you can just plug it into your PC and upload your own programs via a USB cable.

Bootloader Resources

First time with an unfamiliar bootloader?  Not sure what that blinking LED means?  Looking for a way to speed up your restart times?  Or just feel like building a better bootloader?

The following pages contain links to other tutorials regarding the care and feeding of common bootloaders.

Two size-12 boot-loads of microcontrollers
This guide was first published on Jun 19, 2019. It was last updated on Jun 19, 2019.