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 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
MMCSD 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 MMCSD
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.