MSM8953 for ARM64: особенности 64-битной платформы Snapdragon 625

Запрос «msm8953 for arm64» обычно возникает у тех, кто собирает кастомное ядро, device tree или прошивку для устройств на платформе Qualcomm MSM8953 (коммерческое название — Snapdragon 625) и сталкивается с выбором целевой архитектуры при компиляции. Ключевой факт: процессорные ядра этой SoC выполнены на архитектуре ARMv8-A и поддерживают 64-битный режим AArch64, поэтому сборка под arm64 для этой платформы — штатный сценарий, а не эксперимент.

Ниже разберём, что представляет собой чип, как правильно настроить кросс-компиляцию ядра под arm64, какие подводные камни встречаются в конфигурации и почему 32-битные компоненты всё равно остаются в системе.

Что такое MSM8953 и почему важна архитектура

MSM8953 — это система-на-кристалле от Qualcomm, известная на рынке как Snapdragon 625. Она построена на восьми ядрах Cortex-A53, которые реализуют набор инструкций ARMv8-A. Это означает нативную поддержку как 64-битного режима AArch64, так и совместимости с 32-битным AArch32 для старых приложений.

Именно поэтому при сборке программного обеспечения для этой платформы разработчику нужно явно указывать целевую архитектуру. В дереве исходников ядра Linux конфигурации для подобных чипов находятся в ветке arch/arm64, а defconfig-файлы Qualcomm-платформ обычно именуются с указанием поколения или семейства.

Устройства на базе MSM8953

Платформа получила широкое распространение в смартфонах среднего сегмента. Среди известных аппаратов на этом чипе — Xiaomi Redmi Note 4X / Redmi Note 4 (Snapdragon-версия, кодовое имя mido), Xiaomi Mi A1 (tissot), Motorola Moto G5 Plus, Lenovo P2 и ряд других моделей. Кодовые имена устройств важны, потому что именно по ним ищутся device tree и конфигурации в исходниках ядра.

Перед сборкой убедитесь, что вы работаете именно с исходниками для своего кодового имени устройства: дерево устройства от mido не подойдёт для tissot, несмотря на одинаковую SoC. Различия в периферии — дисплее, камерах, контроллерах питания — описываются именно на уровне device tree.

Настройка кросс-компиляции под ARM64

Для сборки ядра под arm64 на обычном x86-64 компьютере потребуется кросс-компилятор aarch64. В большинстве дистрибутивов Linux пакет называется примерно как gcc-aarch64-linux-gnu. Базовый порядок действий выглядит так:

export ARCH=arm64

export CROSS_COMPILE=aarch64-linux-gnu-

make <имя_defconfig>

make -j$(nproc)

Ключевые моменты, которые стоит проверить до начала сборки:

  • 🔧 Переменная ARCH=arm64 обязательна — без неё сборка пойдёт под архитектуру хоста.
  • 📦 Имя defconfig берите из документации к исходникам конкретного устройства, а не из общей инструкции.
  • 🧩 Убедитесь, что включена сборка DTB (device tree blob) для вашего кодового имени.
  • 🛠️ Проверьте версию компилятора: старые ядра могут не собираться слишком новыми GCC и наоборот.

☑️ Подготовка к сборке ядра под msm8953/arm64

Выполнено: 0 / 5

Device tree и загрузочный образ

Результатом сборки является образ ядра Image.gz (или его вариант с dtb, приклеенным к образу) плюс набор файлов .dtb для конкретных устройств. На платформах Qualcomm этого поколения загрузочный образ boot.img формируется утилитой mkbootimg, куда упаковываются ядро, ramdisk и device tree.

⚠️ Внимание: прошивка самосборного boot.img требует разблокированного загрузчика и может привести к потере гарантии и данных. Перед любыми действиями сделайте резервную копию разделов, а точную процедуру разблокировки сверяйте с официальной инструкцией производителя вашего устройства.

Отдельный нюанс — dtb может требоваться как внутри boot.img, так и в отдельном разделе, в зависимости от схемы разметки конкретного аппарата. Это ещё одна причина работать строго по документации к своему устройству, а не по универсальным гайдам.

📊 С какой целью вы собираете msm8953 под arm64?
Кастомное ядро для смартфона
Портирование Linux/postmarketOS
Учебный интерес к кросс-компиляции
Исправление ошибки сборки

32-битные компоненты в 64-битной системе

Несмотря на 64-битное ядро, часть пользовательского пространства на устройствах с MSM8953 исторически оставалась 32-битной: отдельные библиотеки, фирменные блобы Qualcomm и старые приложения. Ядро AArch64 поддерживает выполнение 32-битных бинарников при включённой опции совместимости (CONFIG_COMPAT), поэтому смешанная среда — норма, а не ошибка конфигурации.

Почему в системе остаются 32-битные библиотеки

Многие проприетарные компоненты Qualcomm (например, части графического стека и модема) поставлялись только в 32-битном виде. Ядро arm64 с включённым CONFIG_COMPAT умеет выполнять такие бинарники через слой совместимости, поэтому гибридная схема работала на множестве устройств этого поколения.

Типичные ошибки при сборке и их причины

Чаще всего проблемы возникают не из-за самой платформы, а из-за несоответствия инструментов и исходников. Сводная таблица типичных ситуаций:

СимптомВероятная причинаЧто проверить
Ошибка компиляции на раннем этапеНе выставлен ARCH=arm64Переменные окружения перед make
Не найден компиляторНеверный префикс CROSS_COMPILEУстановлен ли пакет aarch64-toolchain
Нет нужного .dtb на выходеDevice tree устройства не включён в сборкуСостав исходников под кодовое имя
Устройство не загружается после прошивкиНеверный dtb или ramdisk в boot.imgПараметры mkbootimg и источник ramdisk
⚠️ Внимание: сообщения об ошибках компилятора читайте с первой ошибки, а не с последней — каскадные ошибки ниже обычно являются следствием самой первой.

Если сборка завершается успешно, но устройство уходит в bootloop, причина чаще всего в несоответствии device tree, cmdline ядра или ramdisk конкретному аппарату. Ядро от одного кодового имени устройства почти никогда не загружается корректно на другом, даже при идентичной SoC.

Альтернативные сценарии: mainline-ядро и postmarketOS

Помимо кастомных Android-ядер, платформа msm8953 интересна энтузиастам портирования mainline Linux и проектов вроде postmarketOS. Там сборка также ведётся под arm64, но используется свежая ветка ядра и собственные пакеты пользовательского пространства. Степень поддержки периферии (модем, камера, GPU) при этом может сильно отличаться от стоковой прошивки.

Этот путь стоит рассматривать как исследовательский: перед началом изучите статус поддержки конкретного устройства в вики соответствующего проекта, поскольку работоспособность отдельных блоков зависит от написанных драйверов.

FAQ

Поддерживает ли MSM8953 64-битный режим?

Да. Ядра Cortex-A53 в составе чипа реализуют архитектуру ARMv8-A и работают в режиме AArch64, сохраняя совместимость с 32-битным кодом.

Чем msm8953 отличается от Snapdragon 625?

Это одно и то же изделие: MSM8953 — внутреннее обозначение Qualcomm, а Snapdragon 625 — маркетинговое название.

Можно ли собрать ядро arm64 на 32-битной системе?

Технически кросс-компиляция возможна, но на практике удобнее использовать 64-битный хост: современные тулчейны и скрипты сборки ориентированы именно на него.

Загрузится ли boot.img от Redmi Note 4X на Mi A1?

Нет, несмотря на общую SoC. Устройства имеют разные device tree и конфигурации периферии, поэтому образы несовместимы.

Где взять исходники ядра для моего устройства?

Ищите kernel source от производителя (многие публикуют их по требованиям GPL) или проверенные репозитории сообщества под кодовое имя аппарата. Сверяйте соответствие исходников именно вашей модели.