A bootloader is a firmware IP (software
shipped pre-programmed with the device) that can be used to program the SoC memories (flash
and SRAM) using serial interfaces like UART, I2C, or CAN. 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.