Что такое файл u-Boot dtb и как его использовать (BeagleBoard xM)?

41918
Jeremy

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

11
Получается, что я неправильно прочитал имя файла - я изначально думал, что это файл «.dtd», но на самом деле это «.dtb» - вот почему я не смог найти информацию о нем. Вопрос теперь обновлен. Jeremy 10 лет назад 0
Минимальный пример с виртуальным устройством QEMU для лучшего понимания концепции: https://stackoverflow.com/questions/17488320/how-to-program-linux-dts-device-tree-files/44994940#44994940 Ciro Santilli 新疆改造中心 六四事件 法轮功 7 лет назад 0

2 ответа на вопрос

12
Jeremy

Answering my own question, after I figured out what to search for. A "dtb" file contains a Device Tree Blob (or Binary)(nice description here). It's the new(er) way to pass hardware information about the board to the Linux kernel.

It can be loaded into memory and passed to the kernel by u-Boot.

Here are the u-Boot commands I used:

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 being the kernel, and beagle-xm.dtb being the device tree blob. I automated the boot process by setting up a "uenvcmd=..." variable in uEnv.txt (with the above in it), but it's a bit ugly and there are probably better ways.

Note that this boots up, and says that it loaded the device tree OK. However, I still have no USB devices or video (as far as I can tell). However, I suspect that may be a different problem.

_ Это новый (er) способ передачи аппаратной информации о плате в ядро ​​Linux._ Ранее не было способа передать аппаратную информацию о ядре. Вместо этого ядро ​​должно было бы статически включать всю информацию и иметь C-файл для конкретной платы, чтобы перечислить все эти отображения. Это был кошмар обслуживания с точки зрения ядра. BatchyX 10 лет назад 2
Спасибо! Я понял, как загрузить файл dtb, и теперь Linux загружается и выдает различные сообщения о загрузке драйверов, но я не вижу никаких USB-устройств (включая модуль Ethernet). Смотрите новый вопрос: [ссылка] (http://superuser.com/questions/740322/how-do-i-get-usb-devices-working-with-beagleboard-xm-and-yocto-project-linux). Может быть, есть что-то, что мне нужно вручную настроить в Linux? Jeremy 10 лет назад 0
Но какой адрес использовать для файла dtb? Например, если мой zImage идет по адресу 0x43000000 (вместо примера выше 0x80300000), куда должен идти dtb? André van Schoubroeck 8 лет назад 0
2
Damian Manda

I am using Ubuntu 14.04 on the beaglebone black, so my setup may be a bit different, but here is how I loaded a custom dtb:

In uEnv.txt, add a line with: dtb=name-of-desired.dtb

The locations searched should be as specified here. For me this was /boot/dtbs/linux-kernel/ where linux-kernel is the name of the loaded version.