Загрузка данных
Режим ИИ
Все
Картинки
Видео
Новости
Карты
Книги
Авиабилеты
Вот структура разметки файла flash.bin для загрузки процессора i.MX95 с интерфейса USDHC2 (SD-карта или eMMC).
При сборке через U-Boot/Yocto (используя инструмент mkimage_imx8), итоговый образ flash.bin объединяет компоненты System Manager (SM), ARM Trusted Firmware (ATF) и U-Boot.
Разметка образа flash.bin (i.MX95, USDHC2)
Название образа (Компонент) Типичный размер Расположение / Смещение в flash.bin Описание компонента
Смещение USDHC 32 КБ 0x0 (Первые 64 сектора) Пропускается процессором, содержит таблицу разделов MBR/GPT.
IVT / Смещение загрузки 4 КБ 0x8000 (Смещение 32 КБ) Векторная таблица инициализации для Boot ROM.
Container 1 Header 4 КБ 0x9000 Заголовок первого контейнера (безопасность/ключи).
Cortex-M55 Image (SM) 120–250 КБ Сразу за заголовком (~0xA000) Прошивка System Manager (управление питанием и системный контроль).
EdgeLock Secure Enclave (ELE) 64–128 КБ Следует за SM Микрокод безопасности (Sentinel/ELE FW).
Container 2 Header 4 КБ Обычно 0x5C000 (Смещение 368 КБ) Заголовок второго контейнера (аппаратное обеспечение AP).
ARM Trusted Firmware (ATF) 128–256 КБ Внутри Container 2 Прошивка уровня безопасности BL31 для ядер Cortex-A55.
U-Boot SPL 64–150 КБ Внутри Container 2 Первичный загрузчик U-Boot (инициализирует DDR).
U-Boot FIT Image (u-boot.itb) 1–3 МБ Конец образа (обычно от 0x100000) Финальный загрузчик, включает дерево устройств (DTB) и BL33.
Важные нюансы для i.MX95
Два контейнера: Архитектура i.MX95 жестко разделяет запуск низкоуровневой безопасности/управления (Container 1) и запуск основных прикладных ядер Cortex-A55 (Container 2).
Смещение на SD-карте: При записи образа на USDHC2 через команду dd, сам файл flash.bin записывается со смещением в 32 КБ (seek=64 для блоков по 512 байт), чтобы сохранить таблицу разделов диска.
Если вам нужны конкретные адреса оперативной памяти (DDR), куда Boot ROM копирует эти образы при старте, или конфигурационный файл soc.mak для сборки, уточните это.
Для дальнейшей настройки подскажите:
Какую версию BSP (Yocto/Linux) вы используете?
Требуется ли настроить Secure Boot (AHAB/HAB) для этих образов?
5 сайтов
При добавлении ядра Cortex-M7, образ его прошивки (m7_image.bin) упаковывается утилитой mkimage_imx8 (или через imx-mkimage с флагом M7_IMG=) внутрь Container 1. Процессор i.MX95 устроен так, что Boot ROM сначала инициализирует систему безопасности и низкоуровневые ядра (M55 и M7), и только затем переходит к Container 2 (Cortex-A55).
NXP Semiconductors
+4
Ниже представлена обновленная таблица разметки flash.bin при сборке с поддержкой Cortex-M7 для интерфейса USDHC2 (SD-карта).
Разметка flash.bin для i.MX95 (Включая Cortex-M7)
Название образа (Компонент) Типичный размер Расположение / Смещение в flash.bin Описание компонента и его поведение
Смещение USDHC 32 КБ 0x0 (Сектора 0–63) Резерв под таблицу разделов MBR/GPT. Пропускается процессором.
IVT / Смещение загрузки 4 КБ 0x8000 (Смещение 32 КБ) Векторная таблица инициализации для Boot ROM.
Container 1 Header 4 КБ 0x9000 Заголовок первого контейнера (безопасность, ключи, структура).
Cortex-M55 Image (SM) 120–250 КБ Сразу за заголовком (~0xA000) Прошивка System Manager (управление питанием и тактированием).
EdgeLock Enclave (ELE) 64–128 КБ Следует за SM Микрокод безопасности (Sentinel/ELE FW).
Cortex-M7 Image (m7_image.bin) 64 КБ – 2 МБ Следует за ELE внутри Container 1 Прошивка для реального времени (RTOS/Zephyr/Bare-metal). Загружается в TCM или DDR.
Container 2 Header 4 КБ Динамическое (зависит от размера М7) Заголовок второго контейнера (аппаратное обеспечение AP-ядер).
ARM Trusted Firmware (ATF) 128–256 КБ Внутри Container 2 Прошивка уровня безопасности BL31 для ядер Cortex-A55.
U-Boot SPL 64–150 КБ Внутри Container 2 Первичный загрузчик прикладных ядер (инициализирует DDR).
U-Boot FIT Image (u-boot.itb) 1–3 МБ Конец образа (обычно от 0x200000+) Финальный загрузчик, включает дерево устройств (DTB) и BL33.
Важные технические особенности для Cortex-M7 в i.MX95:
Динамическое смещение Container 2: Поскольку образ M7 помещается в Container 1, фиксированного смещения для Container 2 (в отличие от стандартной схемы без M7) больше нет. Смещение сдвигается ровно на размер файла вашего .bin для M7.
Тип памяти (TCM vs DDR):
Если прошивка M7 маленькая и работает из TCM (Tightly Coupled Memory), она стартует мгновенно силами Boot ROM еще до инициализации основной оперативной памяти.
Если прошивка большая и скомпилирована под DDR, то для сборки flash.bin используются специальные таргеты (например, flash_lpboot_sm_m7 с инициализацией через OEI — Open Execution Environment), которые настраивают контроллер памяти до старта M7