Я пытаюсь создать собственный Linux для BeagleBoard xM (Rev. C). Я много занимаюсь C / C ++, но я новичок в создании и установке Linux с нуля.
Я использовал устройство сборки Yocto Project ( https://www.yoctoproject.org/ ), которое казалось многообещающим - оно создавало файлы для загрузчика u-Boot, ядра Linux и корневой файловой системы.
На этой странице приведены инструкции по настройке карты micro SD с файлами, сгенерированными Yocto. Однако файлы изображений содержат файл «.dtb», который не упоминается в инструкциях по настройке.
Этот файл имеет какое-то отношение к оборудованию платы? На разных сайтах упоминается загрузка файлов dtd (может быть, в uEnv.txt?), Но я не нашел никакой подробной информации.
Я использовал приведенные выше инструкции для настройки загрузочного раздела с MLO и u-boot.img, и немного испортил uEnv.txt. Я также настроил второй раздел с корневой файловой системой.
Я смог загрузить и войти в систему (через консоль последовательного порта), но похоже, что большинство оборудования платы - например, видео и все USB-устройства, включая Ethernet - не работало. Может ли это быть из-за того, что я не использовал файл .dtb?
Может кто-нибудь объяснить dtb и как использовать его на доске гончей? Спасибо!
источник
Ответы:
Отвечая на мой собственный вопрос, после того, как я понял, что искать. Файл "dtb" содержит BLOB-файл дерева устройств (или двоичный файл) (хорошее описание здесь ). Это новый (э) способ передачи аппаратной информации о плате в ядро Linux.
Его можно загрузить в память и передать ядру с помощью u-Boot.
Вот команды u-Boot, которые я использовал:
zImage - ядро, а beagle-xm.dtb - дерево объектов. Я автоматизировал процесс загрузки, установив переменную «uenvcmd = ...» в uEnv.txt (с указанным выше), но это немного уродливо и, возможно, есть лучшие способы.
Обратите внимание, что это загружается, и говорит, что он загрузил дерево устройств ОК. Тем не менее, у меня все еще нет USB-устройств или видео (насколько я могу судить). Тем не менее, я подозреваю, что это может быть другая проблема.
источник
Я использую Ubuntu 14.04 на beaglebone black, поэтому мои настройки могут немного отличаться, но вот как я загрузил пользовательский dtb:
В uEnv.txt добавьте строку с:
dtb=name-of-desired.dtb
Места поиска должны быть такими, как указано здесь . Для меня это было то,
/boot/dtbs/linux-kernel/
где linux-kernel - это имя загруженной версии.источник
Обратите внимание, что есть 2 дБ. U-boot дтб и ядро дтб. Это две разные вещи. Плата U-boot dts / dtb используется не всегда, не обязательно, кстати, в u-boot вы можете использовать dtb «u-boot», встраивая его в u-boot или объединяя его в u-boot.
источник