A bootloader is a firmware IP
(software shipped pre-programmed with the device) that can be used to program the SoC's
memories (Flash and SRAM) using serial interfaces like 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 like SPI or CAN. A bootloader can also be used for in-field
updates.