Проблема «большого» кода M7 заключается не в том, что его некому прочитать с eMMC, а в том, что его некуда положить: контроллер оперативной памяти (DDR) после сброса процессора еще выключен, а внутренняя память TCM слишком мала (256 КБ).
Для решения этой проблемы NXP использует механизм OEI (Open Execution Environment):
GitHub
Boot ROM считывает с eMMC минимальную прошивку System Manager (SM) (работает на Cortex-M55/M33) и инициализатор памяти OEI.
Запускается ядро управления (M55/M33), которое выполняет инициализацию контроллера DDR и калибровку таймингов оперативной памяти.
Как только DDR становится доступна, это же системное ядро (или микрокод безопасности ELE) просто копирует уже считанный из eMMC в память код M7 в нужный адрес DDR.
Подается команда на запуск (снятие сброса) ядра Cortex-M7, и оно начинает исполнять код из DDR.