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 DMSC. The main loop has three different execution sub-paths based on the boot peripheral.
- Image Path This path is used by the GPMC NOR, USB-DFU, PCIe, OSPI, and QSPI boot modes. In these cases the image data can be directly read by both, MCU and DMSC, in place.
- Block Path This path is used by the SPI, I2C, UART, eMMC, Ethernet 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 DMSC 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.