The Main module contains the top level execution
loop. This loop repeats until a boot image has been received or directed to sleep by
the SMS. The main loop has three different execution sub-paths based on the boot
peripheral.
- Image Path This path is used by the USB-DFU, PCIe, OSPI, Hyperflash, and
QSPI boot modes. In these cases the image data can be directly read by both, MCU
and SMS, in place.
- Block Path This path is used by the SPI, I2C, UART, eMMC, Ethernet,
Serial NAND, and MMC/SD cards in raw mode. In this mode data is received from
the peripheral in blocks. Blocks are accumulated in the boot buffer until a full
X.509 certificate header has been received, at which point this full certificate
and any subsequent blocks are passed to the SMS as they arrive.
- Filesystem Path This path is used by the
MMC/SD cards in filesystem mode. This mode executes exactly like in the block path, except that the boot image location is defined by a filesystem.
The main level is able to detect if a received boot image is in the correct format and reject non-conforming images.