Введение​

Давайте подробно разберем начальные этапы загрузки Main-платы от момента подачи питания до подготовки к старту операционной системы, выделив критические маркеры и потенциальные точки сбоя.

Этап 1: Холодный старт и инициализация железа (Инициализатор)​

На этом этапе процессор (CPU) выходит из состояния сброса, работает на базовых частотах и проверяет компоненты.
  • UART_115200 — Консоль успешно активирована. Установлена стандартная скорость обмена данными 115200 бод.
  • AC_ON — На плату поступило сетевое питание (сработал датчик подключения к розетке).
  • MIU0_DQS-OK — Оперативная память (DRAM) успешно прошла базовый тест шины (выставлены тайминги линий DQS).
  • BIST0-OK — Встроенный тест самодиагностики процессора (Built-In Self-Test) выполнен без ошибок. Вычислительные ядра исправны.
  • 01-2L-SM-01-20180717 — Считан идентификатор и дата сборки первичного загрузчика (Boot ROM) от 17 июля 2018 года.
[NOTICE]Если лог обрывается на этом этапе или циклически перезапускается (Bootloop), проблема в цепях питания, процессоре или «отвале» линий оперативной памяти.[/NOTICE]

Этап 2: Защищенная зона (OP-TEE / Трастовая среда)​

Процессор переходит в режим максимальной безопасности (криптографический барьер EL3). Здесь ARM Trusted Firmware проверяет подлинность прошивки для защиты от модификаций и взлома.
  • *optee teeloader entry — Вход в изолированную среду исполнения OP-TEE.
  • CusConfig — Загрузка кастомной конфигурации безопасности от производителя ТВ.
  • eMMC_RPMB_Check_Program_Key — Проверка уникального ключа в защищенном блоке памяти RPMB. Защита от клонирования или замены чипа памяти на чужой.
  • *ree_opt=00000023Внимание! Флаг состояния защиты, который часто указывает на регистрацию критической ошибки или аварийное завершение предыдущей сессии.
  • Auth reeloader... — Проверка цифровой подписи следующего модуля загрузки.
  • Decrypt reeloader... — Расшифровка защищенного загрузчика в оперативную память.
  • reeloader_addr=20100000 — Выделен физический адрес 0x20100000 в ОЗУ для работы расшифрованного кода.
  • MASK_DEVICELOCKMASK is ON — Активирована защита служебных разделов памяти от несанкционированной записи.
  • NOTICE: BL3-1: v1.1(debug)... — Инициализация диспетчерского уровня архитектуры безопасности ARMv8.
  • INFO: BL3-1: Preparing for EL3 exit to normal world — Проверки безопасности завершены, идет подготовка к переходу в обычный режим.
  • ree_entry — Процессор успешно покинул трастовую зону и перешел в «нормальный мир».

Этап 3: Запуск первичного загрузчика MediaTek (MTKLoader)​

Управление передается основному загрузчику MediaTek. Его цель — запустить контроллеры на полную мощность и подготовить периферию к старту ОС (Linux/Android).
  • MTK_LDR — Старт загрузчика MediaTek.
  • [LDR_SysInit]Hardware Init... — Базовая низкоуровневая настройка чипсета, системных таймеров и прерываний.
  • [Utopia][MIU]: miu open — Инициализация фирменного программного слоя MediaTek "Utopia" для управления памятью.
  • [LDR_SysInit]Initialize eMMC — Запуск контроллера постоянной флеш-памяти.
  • eMMC: HS400 5.1 200MHz — Чип памяти eMMC 5.1 успешно переведен в максимально производительный режим HS400 на частоте 200 МГц.
  • eMMC 7.28 GB [E8FFF8h] — Корректно определен объем пользовательского раздела флеш-памяти (около 8 ГБ) и её геометрия.
  • [LDR_SysInit]Hardware Initialization Completed — Аппаратная часть платы полностью готова к дальнейшей работе.

Этап 4: Подготовка к запуску U-Boot​

На этом шаге MTKLoader завершает свою работу, считывает флаги конфигурации и проверяет подлинность основного загрузчика перед передачей ему управления.
  • [CALDR_Entry]Hello... — Запуск калибровочного загрузчика (сверка параметров частот и питания).
  • MTKLoader v19: 20190107 — Вывод версии и даты компиляции загрузчика.
  • uenv 'do_pkg_upgrade=0'... — Флаг принудительного обновления равен 0. Система игнорирует USB-накопители и идет на стандартную загрузку.
  • ** part_emmc_read_ddb: SKIP — Пропущен служебный шаг проверки блоков eMMC (штатное поведение для данной платформы).
  • [LoadCustomerKeyBank]... — Успешно считан банк цифровых ключей подписи Android.
  • [Jump2Uboot]Jump2Uboot-Begin — Инициация процесса передачи управления главному загрузчику.
  • UBOOT AUTH_OK — Криптографическая подпись загрузчика U-Boot верна, код оригинальный и не изменен.
  • [LDR_JumpToApp]Jump To 0x29C00000 — Процессор совершает переход на адрес в ОЗУ, где развернут U-Boot.

Этап 5: Работа основного загрузчика (U-Boot)​

U-Boot берет на себя управление всей системной логикой, выделяет память под свои нужды и готовит к старту ядро Linux/Android.
  • U-Boot 2011.06-... — Успешный старт U-Boot (версия базовой ветки со сборкой от октября 2021 года).
  • DRAM: 192 MiB — Из общего объема ОЗУ выделено 192 МБ под изолированные нужды самого загрузчика.
  • Now running in RAM - U-Boot — Код загрузчика полностью перешел в оперативную память и исполняется оттуда.
  • eMMC: HS400 5.1 200MHz — Повторная инициализация контроллера постоянной памяти уже силами и драйверами U-Boot.

Этап 6: Критическая точка (Развилка и Сбой)​

В зависимости от цикла перезагрузки, поведение системы разветвляется на два сценария. Оба ведут к падению, но на разных микропрограммных уровнях.

Финал А: Сбой на проверке целостности памяти​

  • CRC Check OPEN: 1 — Загрузчик активирует принудительную проверку контрольной суммы (CRC) критически важных блоков данных.
  • 01-2L-SM-01-20180717 — Ошибка CRC! Считанные из eMMC данные искажены и не совпадают с эталонным хэшем.
[WARNING]В этот момент лог мгновенно обрывается, плата уходит в аппаратный перезапуск и возвращается к самой первой строке: UART_115200 / AC_ON (Этап 1).[/WARNING]

Финал Б: Пропуск CRC, сбой на этапе инициализации Ядра​

  • Starting kernel ... — Попытка распаковки и запуска ядра операционной системы.
  • [ERROR] ... failКритическая ошибка: U-Boot не смог прочитать из eMMC адреса пулов (MI_KERNEL_POOL).
  • set 64 bit mode — Процессор переводит архитектуру в 64-битный режим для совместимости с ядром Linux.
  • ARM_FW_Enter_64 — Передача параметров инициализации в ядро.
  • INFO: CPU0 Next image... — Процессор подготовил физический адрес ядра в ОЗУ (0x20280000).
  • INFO: mstar_primary_kernel_enter... — Финальная команда на вход в ядро.
[WARNING]Плата намертво зависает или циклически перезагружается. Данные ядра по адресу 0x20280000 оказались разрушены, либо eMMC не смогла физически дочитать их до конца.[/WARNING]

Итоговый вердикт и диагностика​

Лог наглядно подтверждает: аппаратная логика процессора и ОЗУ исправна, устройство пытается работать в штатном режиме. Однако при чтении микросхемы eMMC на высокой частоте bus-интерфейса (HS400, 200MHz) происходит постоянное искажение данных.
  • В один цикл перезагрузки блоки данных повреждаются настолько сильно, что система падает на ранней проверке CRC Check (Финал А).
  • В другой цикл проверка чудом проходит, но ядро Linux оказывается фрагментарно разрушенным и вешает процессор при попытке выполнить код (Финал Б).
В 95% случаев такое поведение — классический признак «умирающей» или изношенной микросхемы памяти eMMC (деградация ячеек, необратимые ошибки чтения).
  • Like
Реакции: makar.i