A bootloader is a firmware IP
(software shipped pre-programmed with the device) that can be used to program the
memories of the SoC (Flash and SRAM) using serial interfaces such as UART and I2C. The
bootloader is usually invoked after the bootcode has completed when the device is about
to start the customer application. To support production programming use cases some
bootloaders also offer more interfaces such as SPI or CAN. A bootloader can also be used
for in-field updates.