U-Boot не загружает загрузочный скрипт с NVME.

Вопрос или проблема

Возможно ли полностью загрузить Rpi CM4 + io-board с NVME? Я обновил загрузчик Rpi, и он хорошо загружает ядро без U-boot. Когда я переключаюсь на U-boot, он не загружает boot.scr, расположенный в том же FAT разделе. Он пытается загрузить с mmc, usb, но никогда не с nvme диска. В чем моя проблема?

Да, это возможно. Источник: https://www.jeffgeerling.com/blog/2021/raspberry-pi-can-boot-nvme-ssds-now

Я подозреваю, что вы неправильно настроили BOOT_ORDER=0xf25416 в конфигурации загрузчика, но я не могу это определить из вашего вопроса, на самом деле.

На момент написания этого текста, нет, U-Boot не поддерживает NVMe на Pi 5.

Ответ или решение

Краткое резюме:
Вы сталкиваетесь с тем, что загрузчик U-Boot не может загрузить файл boot.scr с NVMe на Raspberry Pi Compute Module 4 (CM4). Давайте подробно разберемся в возможных причинах данной проблемы и в решениях, которые могут помочь вам.

Фон

Использование NVMe-накопителей в сочетании с Raspberry Pi 4 и CM4 стало возможным благодаря обновлениям загрузчика. Комбинация с U-Boot позволяет более гибко управлять процессом загрузки, однако, как вы уже заметили, бывают ограничения, связанные с аппаратной поддержкой.

Возможные причины проблемы

  1. Версия U-Boot:

    • Убедитесь, что вы используете последнюю версию U-Boot, которая совместима с Raspberry Pi CM4. Старые версии могут не поддерживать NVMe, что может быть причиной, по которой U-Boot не находит устройство.
  2. Настройка BOOT_ORDER:

    • Как было упомянуто в обсуждении, необходимо правильно настроить переменную BOOT_ORDER. Вы установили BOOT_ORDER=0xf25416, что указывает приоритеты для загрузки. Убедитесь, что эта настройка сохранена и загружается при старте U-Boot.
    • При разбивке переменной BOOT_ORDER на отдельные биты можно понять, какие устройства пробуются при загрузке. Обратите внимание, что приоритет загрузки может быть упущен, если устройство NVMe встроено неправильно.
  3. Совместимость и поддержка NVMe:

    • На текущий момент (по состоянию на 2023 год) сообщается, что поддержка NVMe в U-Boot для Raspberry Pi 5 и, возможно, CM4, может быть ограниченной или отсутствовать. Проверьте официальную документацию U-Boot и репозитории на GitHub на предмет актуальных статусных обновлений.
  4. Файловая система и путь:

    • Убедитесь, что ваша файловая система на NVMe корректно настроена и содержит файл boot.scr в правильном месте. U-Boot должен иметь доступ к FAT-разделу. Проверьте, что файлы скопированы корректно и файл boot.scr имеет необходимую конфигурацию.
  5. Проблемы с конфигурацией U-Boot:

    • Возможно, ваши настройки U-Boot были некорректно отредактированы. Сравните ваши конфиги с примерами из документации или исходного кода U-Boot для Raspberry Pi.

Решения

  1. Проверка версии U-Boot:

    • Скачайте и установите самую последнюю версию U-Boot для Raspberry Pi CM4. Следите за совместимостью, указанной в документации.
  2. Настройка BOOT_ORDER:

    • Откройте командную строку U-Boot и выполните команду printenv для проверки текущих настроек. При необходимости внесите изменения:
      setenv BOOT_ORDER 0xf25416
      saveenv
  3. Тестирование загрузки:

    • Попробуйте выполнить вручную команды загрузки в U-Boot, чтобы исключить проблемы с boot.scr. Например:
      fatload nvme 0:1 ${kernel_addr_r} uImage
      bootm ${kernel_addr_r}
  4. Отладка:

    • Включите отладочные сообщения в U-Boot, чтобы отслеживать процесс загрузки и выявить, где происходит сбой.

Заключение

Решение проблем с загрузкой U-Boot с NVMe на Raspberry Pi CM4 может требовать системного подхода, начиная с проверки версии программного обеспечения и заканчивая настройками конфигурации. Убедитесь, что все пути, файлы и переменные среды настроены правильно, а также проверяйте актуальную информацию о поддержке NVMe в U-Boot.

Полезные ссылки

Если проблемы сохраняются, сообщите о них на форумах или ресурсах, посвященных Raspberry Pi, где эксперты могут предложить дополнительные советы и решения.

Оцените материал
Добавить комментарий

Капча загружается...