Linux kernel 如何将dts Linux设备树源文件编译为dtb?

Linux kernel 如何将dts Linux设备树源文件编译为dtb?,linux-kernel,cross-compiling,embedded-linux,powerpc,device-tree,Linux Kernel,Cross Compiling,Embedded Linux,Powerpc,Device Tree,我有一个设备树文件(.dts),我想为基于powerpc的主板编译该文件 我怎样才能在我的机器上完成它,它不是基于powerpc的??我可以在Ubuntu系统上安装DTC吗?或者更像是使用单独的编译器并传递ARCH信息(如使用工具链)?设备树不需要使用“架构感知”工具进行编译。ubuntu机器上的dtc编译器可能足够最新,可以编译设备树。或者你可以下载最新的源代码,自己编译。dtc编译器可在以下位置找到: 该软件包中有一些很好的文档,可以帮助您更好地理解设备树 编译(和反汇编)设备树非常容易。

我有一个设备树文件(.dts),我想为基于powerpc的主板编译该文件


我怎样才能在我的机器上完成它,它不是基于powerpc的??我可以在Ubuntu系统上安装DTC吗?或者更像是使用单独的编译器并传递ARCH信息(如使用工具链)?

设备树不需要使用“架构感知”工具进行编译。ubuntu机器上的dtc编译器可能足够最新,可以编译设备树。或者你可以下载最新的源代码,自己编译。dtc编译器可在以下位置找到:

该软件包中有一些很好的文档,可以帮助您更好地理解设备树

编译(和反汇编)设备树非常容易。比如说

$ dtc -O dtb -o p4080ds.dtb p4080ds.dts
要从设备树blob中获取文本形式的设备树,请执行以下操作:

$ dtc -I dtb -O dts p4080ds.dtb

希望这有帮助

制作DTB

从内核树执行此操作是编译它们的另一种常见方式,因为放置dts的标准位置位于
/arch//boot/dts/
格式目录的内核树下

这最终会调用
dtc
,但可能效果更好,因为潜在的包含项将位于正确的位置

dtb文件与dts放在同一目录中。

  • dtc
    可以通过以下命令在linux上安装

    sudo apt get安装设备树编译器

  • 您可以通过以下命令编译
    dts
    dtsi
    文件:

    dtc-I dts-O dtb-O设备树文件\u name.dtb设备树文件\u name.dts

  • 您可以通过以下命令将dts转换为dtb:

    dtc-I dts-O dtb-f devicetree\u file\u name.dts-O devicetree\u file\u name.dtb

  • 您可以通过以下命令
    dtb
    转换为
    dts

    dtc-I dtb-O dts-f devicetree\u file\u name.dtb-O devicetree\u file\u name.dts


是的,你刚才说的没错,查利南。它们不需要使用“架构感知”工具进行编译。虽然我不太清楚到底是什么原因?编译为在机器上运行的东西应该对机器有足够的了解。。。是吗?@mdsingh:“编译”DTS到DTB不会生成在CPU上运行的二进制文件。DTB文件只是DTS文件的二进制表示(就像序列化XML一样),这有助于内核了解体系结构上可用的设备及其配置。这有助于减少内核源代码对硬配置的依赖。正如您所看到的,设备树是*有意的*8是架构*无知的。所以它不是加载到内存中,而是由内核读取(很好地解析)。这正是它独立的原因,正如它的初衷。谢谢。你可能应该尝试更新dtc的git链接。它似乎死了!是的,为了实现这一点,我必须将dts添加到./arch//boot/dts/MakefileOh,但是现在dts文件可以包含include,所以需要cpp和makefile。