Образы карты 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?
В файле U-Boot board / raspberrypi / rpi / rpi.c функция get_board_rev () считывает ревизию платы, и имя dtb определяется из ревизии. Имя файла dtb задается в переменной среды ftdfile, которую можно использовать в сценарии загрузки для загрузки соответствующего файла, который затем передается в операционную систему.
В ОС Raspberry PI (дистрибутив debian) u-boot не используется. Вместо этого загрузчик 2-го уровня (т.е. файл bootcode.bin), за которым следуют файлы start * .elf, загружает ядро и файл dtb.
Я не думаю, что это правильно.
Я не уверен, что принятый в настоящее время ответ подходит для Raspberry Pi OS - по крайней мере, «официальная документация» объясняет это совершенно иначе. Также неясно, почему u-boot
был частью ответа, поскольку ОС Raspberry Pi не использует u-boot
; и OP не упоминал u-boot
.
Я не «полиция качества» и не утверждаю, что у меня есть опыт в этой области - этот вопрос и ответ был указан в результатах поиска, и мне показалось, что немного не в себе ... таким образом, этот «ответ».
И, наконец, к ответу: эти различные файлы .dtb
содержат описания оборудования различных моделей Raspberry Pi. Модель оборудования определяется во время процесс загрузки и используется для выбора файла .dtb
для использования, который, в свою очередь, используется для настройки ядра.
Гораздо более подробный ответ к вопросу предоставлен в "официальной" документации.
Ядро использует dtb, который был загружен в память. Загрузчик, например U-Boot, решает или определяет, какой файл dtb загружать для ядра. Вам нужно проверить среду U-Boot, чтобы увидеть, что она делает для вашей платы.