Как raspbery pi знает, какой blob-объект дерева устройств (dtb) загружать?

Образы карты Raspberry Pi включают в себя несколько разных файлов dtb в загрузочном разделе. Например:

bcm2708-rpi-0-w.dtb
bcm2708-rpi-b.dtb
bcm2708-rpi-b-plus.dtb
bcm2708-rpi-cm.dtb
bcm2709-rpi-2-b.dtb
bcm2710-rpi-3-b.dtb
bcm2710-rpi-3-b-plus.dtb
bcm2710-rpi-cm3.dtb

Когда Pi загружается, как он узнает, когда выбрать dtb?

Ядро использует dtb, который был загружен в память. Загрузчик, например U-Boot, решает или определяет, какой файл dtb загружать для ядра. Вам нужно проверить среду U-Boot, чтобы увидеть, что она делает для вашей платы.

sawdust 10.09.2018 08:43
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
1 183
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

В файле U-Boot board / raspberrypi / rpi / rpi.c функция get_board_rev () считывает ревизию платы, и имя dtb определяется из ревизии. Имя файла dtb задается в переменной среды ftdfile, которую можно использовать в сценарии загрузки для загрузки соответствующего файла, который затем передается в операционную систему.

В ОС Raspberry PI (дистрибутив debian) u-boot не используется. Вместо этого загрузчик 2-го уровня (т.е. файл bootcode.bin), за которым следуют файлы start * .elf, загружает ядро ​​и файл dtb.

Aananth C N 18.03.2021 08:38

Я не думаю, что это правильно.

Seamus 22.06.2021 06:44

Я не уверен, что принятый в настоящее время ответ подходит для Raspberry Pi OS - по крайней мере, «официальная документация» объясняет это совершенно иначе. Также неясно, почему u-boot был частью ответа, поскольку ОС Raspberry Pi не использует u-boot; и OP не упоминал u-boot.

Я не «полиция качества» и не утверждаю, что у меня есть опыт в этой области - этот вопрос и ответ был указан в результатах поиска, и мне показалось, что немного не в себе ... таким образом, этот «ответ».

И, наконец, к ответу: эти различные файлы .dtb содержат описания оборудования различных моделей Raspberry Pi. Модель оборудования определяется во время процесс загрузки и используется для выбора файла .dtb для использования, который, в свою очередь, используется для настройки ядра.

Гораздо более подробный ответ к вопросу предоставлен в "официальной" документации.

Другие вопросы по теме