Що таке dtb-файл u-Boot і як його використовувати (BeagleBoard xM)?


13

Я намагаюся створити спеціальний Linux для BeagleBoard xM (Rev. C). Я роблю багато C / C ++, але я новачок у створенні та установці Linux з нуля.

Я використав пристрій Yocto Project ( https://www.yoctoproject.org/ ), який здався перспективним - він створив файли для завантажувача u-Boot, ядра Linux та кореневої файлової системи.

На цій сторінці наведено вказівки щодо налаштування мікро SD-карти з файлами, створеними Yocto. Однак файли зображень містять файл ".dtb", який не згадується в інструкціях із налаштування.

Чи має цей файл щось спільне з обладнанням плати? На різних сайтах згадується завантаження файлів dtd (можливо, в uEnv.txt?), Але я не знайшов детальної інформації.

Я використав вищевказані інструкції для налаштування завантажувального розділу за допомогою MLO та u-boot.img, а також трохи поспілкувався з uEnv.txt. Я також створив другий розділ з кореневою файловою системою.

Мені вдалося завантажитися та увійти (через консоль послідовного порту), але, схоже, більшість апаратних засобів плат - наприклад, відео та всі USB-пристрої, включаючи Ethernet - не працювали. Можливо, це тому, що я не використовував файл .dtb?

Чи може хтось пояснити dtb і як його використовувати на дошці біглів? Спасибі!


Виявляється, я неправильно прочитав ім'я файлу - спочатку я вважав, що це файл ".dtd", але це дійсно ".dtb" - тому я не міг знайти інформацію про нього. Питання зараз оновлено.
Джеремі

Мінімальний приклад з віртуальним пристроєм QEMU , щоб краще зрозуміти концепцію: stackoverflow.com/questions/17488320 / ...
Чіро Сантіллі新疆改造中心法轮功六四事件

Відповіді:


13

Відповідаючи на власне запитання, після того, як я зрозумів, що шукати. Файл "dtb" містить Blob Tree Blob (або Binary) (приємний опис тут ). Це новий (ер) спосіб передачі апаратної інформації про плату до ядра 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-пристроїв, ні відео (наскільки я можу сказати). Однак я підозрюю, що це може бути інша проблема.


3
Це новий (ер) спосіб передачі апаратної інформації про плату до ядра Linux. Попереднього способу передачі інформації про обладнання до ядра не було. Натомість ядро ​​повинно стати статично включати всю інформацію, і тому він мав би специфічний для C файл для переліку всіх цих відображень. Це був кошмар технічного обслуговування з точки зору ядра.
BatchyX

Спасибі! Я зрозумів, як завантажити файл dtb, і тепер Linux завантажується і видає різні повідомлення про завантаження драйверів, але я не бачу жодних USB-пристроїв (включаючи модуль Ethernet). Дивіться нове запитання: посилання . Можливо, є щось, що мені потрібно вручну налаштувати в Linux?
Джеремі

Але яку адресу використовувати для dtb-файлу? Наприклад, якщо мій zImage відправляється на адресу 0x43000000 (замість прикладу вище 0x80300000), куди повинен піти dtb?
Андре ван Шуброк

2

Я використовую Ubuntu 14.04 на beaglebone black, тому моя настройка може бути дещо іншою, але ось як я завантажував користувальницький dtb:

У uEnv.txt додайте рядок із: dtb=name-of-desired.dtb

Шукані місця повинні бути такими, як зазначено тут . Для мене саме /boot/dtbs/linux-kernel/тут linux-kernel - назва завантаженої версії.


0

Зауважте, що є 2 дтб. U-boot dtb та ядро ​​dtb. Вони 2 різні речі. U-завантажувальна дошка dts / dtb не завжди використовується, не є обов'язковою, btw в u-boot ви можете використовувати dtb "u-boot", вбудовуючи її в u-boot або об'єднуючи її в u-boot.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.