Introduction
Bootloaders are a common part of MCU system design. A bootloader makes it possible for a product's firmware to be updated in the field. At the factory, initial programming of firmware into a product is typically done through the MCU's Joint Test Action Group (JTAG) or ARM Serial Wire Debugger (SWD) interface. However, these interfaces are usually not accessible in the field.
This is where bootloading comes in. Bootloading is a process that allows you to upgrade your system firmware over a standard communication interface such as USB, I2C, UART or SPI. A bootloader communicates with a host to get new application code or data, and writes it into the device's flash memory.