如何编译dts Linux设备树源文件到dtb?

mds*_*ngh 36 powerpc cross-compiling linux-kernel embedded-linux device-tree

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

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

cha*_*nan 43

设备树不需要使用"体系结构感知"工具进行编译.你的ubuntu机器上的dtc编译器可能足以编译你的设备树.或者您可以下载最新的源代码并自行编译.可以在这里找到dtc编译器:

https://git.kernel.org/pub/scm/utils/dtc/dtc.git

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

编译(和反汇编)设备树非常容易.例如

$ dtc -O dtb -o p4080ds.dtb p4080ds.dts
Run Code Online (Sandbox Code Playgroud)

要从设备树blob中获取文本中的设备树,请执行以下操作:

$ dtc -I dtb -O dts p4080ds.dtb
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!

  • @mdsingh:"编译"DTS到DTB不会生成在CPU上运行的二进制文件.DTB文件只是DTS文件的二进制表示(就像序列化XML一样),它可以帮助内核访问架构上可用的设备及其配置.这有助于使内核源更少依赖于硬配置.正如你所看到的那样,设备树是*8用于架构*无知*. (2认同)

Moj*_*adi 14

  • dtc可以在linux上通过这个命令安装:

    sudo apt-get install device-tree-compiler

  • 你可以通过这个命令编译 dtsdtsi文件:

    dtc -I dts -O dtb -o devicetree_file_name.dtb devicetree_file_name.dts

  • 你可以通过这个命令转换 dtsdtb:

    dtc -I dts -O dtb -f devicetree_file_name.dts -o devicetree_file_name.dtb

  • 你可以通过这个命令转换 dtbdts:

    dtc -I dtb -O dts -f devicetree_file_name.dtb -o devicetree_file_name.dts


Cir*_*四事件 12

make dtbs

从内核树执行此操作是另一种编译它们的常用方法,因为放置dts的标准位置在窗体目录中的内核树下./arch/<arch>/boot/dts/.

这最终会调用dtc,但可能会更好,因为潜在的包括将在正确的位置.

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

  • 是的,为了使其工作,我必须将 dts 添加到 ./arch/&lt;arch&gt;/boot/dts/Makefile (2认同)