什么是u-Boot dtb文件,如何使用它(BeagleBoard xM)?


13

我正在尝试为BeagleBoard xM(Rev. C)构建自定义Linux。我做了很多C / C ++,但是是从头开始构建和安装Linux的初学者。

我使用了Yocto Project构建工具(https://www.yoctoproject.org/),该工具看起来很有希望-它为u-Boot引导加载程序,Linux内核和根文件系统构建了文件。

本页提供有关使用Yocto生成的文件设置微型SD卡的说明。但是,图像文件包括“ .dtb”文件,在安装说明中未提及。

这个文件与主板硬件有关吗?各个站点都提到加载dtd文件(也许在uEnv.txt中?),但是我没有找到任何详细信息。

我按照上面的说明使用MLO和u-boot.img设置了启动分区,而对uEnv.txt则有些混乱。我还用根文件系统设置了第二个分区。

我能够启动和登录(通过串行端口控制台),但看起来大多数板子硬件(例如,视频和包括以太网在内的所有USB设备)都无法正常工作。可能是因为我没有使用.dtb文件吗?

有人可以解释dtb以及如何在beagle板上使用它吗?谢谢!


原来,我误读了文件名-我本来以为它是一个“ .dtd”文件,但实际上是“ .dtb”-这就是为什么我找不到有关它的信息。该问题现已更新。
杰里米

与QEMU虚拟设备最小例如,以更好地理解这个概念:stackoverflow.com/questions/17488320/...
西罗桑蒂利新疆改造中心法轮功六四事件

Answers:


13

在弄清楚要搜索的内容之后,回答我自己的问题。“ 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是设备树blob。我通过在uEnv.txt中设置“ uenvcmd = ...”变量(其中包含上面的内容)来使引导过程自动化,但这有点难看,并且可能还有更好的方法。

请注意,这会启动,并说它已加载设备树“确定”。但是,据我所知,我仍然没有USB设备或视频。但是,我怀疑这可能是另一个问题。


3
这是将有关板的硬件信息传递给Linux内核的新方法。没有以前的方法可以将硬件信息传递给内核。取而代之的是,内核将必须静态地包含所有信息,因此将具有特定于主板的C文件来列出所有这些映射。从内核的角度来看,这是维护方面的噩梦。
BatchyX'4

谢谢!我弄清楚了如何加载dtb文件,并且Linux现在启动并发出有关加载驱动程序的各种消息,但是我看不到任何USB设备(包括以太网模块)。查看新问题:链接。也许我需要在Linux中手动进行配置?
杰里米

但是,用于dtb文件的地址是什么?例如,如果我的zImage转到地址0x43000000(而不是上面的示例0x80300000),那么dtb应该放在哪里?
安德烈面包车Schoubroeck

2

我在beaglebone黑色上使用Ubuntu 14.04,因此我的设置可能有所不同,但是这是我加载自定义dtb的方式:

在uEnv.txt中,添加以下行: dtb=name-of-desired.dtb

位置搜索,应按照规定在这里。对我来说,这是/boot/dtbs/linux-kernel/linux-kernel是已加载版本的名称。


0

请注意,有2 dtb。u-boot dtb和内核dtb。它们是2种不同的东西。U-boot板dts / dtb并非始终使用,不是强制性的,btw在u-boot中,您可以使用“ u-boot” dtb将其嵌入到u-boot或将其串联到u-boot。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.