12

Я пытаюсь создать собственный 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 и как использовать его на доске гончей? Спасибо!

3 ответа3

12

Отвечая на мой собственный вопрос, после того, как я понял, что искать. Файл "dtb" содержит BLOB-файл дерева устройств (или двоичный файл) (хорошее описание здесь). Это новый (э) способ передачи аппаратной информации о плате в ядро Linux.

Он может быть загружен в память и передан ядру с помощью u-Boot.

Вот команды u-Boot, которые я использовал:

setenv bootargs 'console=tty0 console=ttyO2,115200n8 root=/dev/mmcblk0p2 rootwait rootfstype=ext4 rw'
fatload mmc 0:1 0x80300000 zImage
fatload mmc 0:1 0x815f0000 beagle-xm.dtb
bootz 0x80300000 - 0x815f0000

zImage - ядро, а beagle-xm.dtb - дерево дерева устройств. Я автоматизировал процесс загрузки, установив переменную "uenvcmd = ..." в uEnv.txt (с указанным выше), но это немного уродливо и, возможно, есть лучшие способы.

Обратите внимание, что это загружается, и говорит, что он загрузил дерево устройств ОК. Однако у меня все еще нет USB-устройств или видео (насколько я могу судить). Тем не менее, я подозреваю, что это может быть другая проблема.

2

Я использую Ubuntu 14.04 на beaglebone black, поэтому мои настройки могут немного отличаться, но вот как я загрузил пользовательский dtb:

В файле uEnv.txt добавьте строку с: dtb=name-of-desired.dtb

Места поиска должны быть такими, как указано здесь. Для меня это был /boot/dtbs/linux-kernel/ где linux-kernel - это имя загруженной версии.

0

Обратите внимание, что есть 2 дБ. U-boot дтб и ядро дтб. Это две разные вещи. Плата U-boot dts/dtb используется не всегда, не обязательно, кстати, в u-boot вы можете использовать dtb «u-boot», встраивая его в u-boot или объединяя его в u-boot.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .