Linux 设备树编译器无法识别包含文件的C语法

Linux 设备树编译器无法识别包含文件的C语法,linux,linux-kernel,embedded,dts,device-tree,Linux,Linux Kernel,Embedded,Dts,Device Tree,我想手动编译我的板设备树。我已从其官方网站下载了最新版本的dtc,但当我尝试运行以下命令时,我收到一个错误,建议我将\define的所有\include指令更改为/include//code>等 dtc -I dts -O dtb -p 0x1000 meson-gxl-s905x-khadas-vim.dts -o kvim1.dtb 我的董事会是卡达斯Vim,其核心是amlogic S905x SoC。所有包含文件都存在,错误为: Error: meson-gxl-s905x-khadas

我想手动编译我的板设备树。我已从其官方网站下载了最新版本的
dtc
,但当我尝试运行以下命令时,我收到一个错误,建议我将
\define
的所有
\include
指令更改为
/include//code>等

dtc -I dts -O dtb -p 0x1000 meson-gxl-s905x-khadas-vim.dts -o kvim1.dtb
我的董事会是卡达斯Vim,其核心是amlogic S905x SoC。所有包含文件都存在,错误为:

Error: meson-gxl-s905x-khadas-vim.dts:8.1-9 syntax error
FATAL ERROR: Unable to parse input tree
第八行是:

#include <dt-bindings/input/input.h>
#包括
#include
更改为
/include/
将抑制错误


如果您知道一些有关设备树“语言”(U-boot文档除外)的参考资料,请介绍它。

这不是设备树语法问题,您只需使用C预处理器cpp预处理.dts文件,即可获得一个可以由设备树编译器按原样进行摘要处理的文件。

在特定情况下,假设当前目录是内核根目录,则必须使用以下两个命令:

cpp -nostdinc -I include -I arch  -undef -x assembler-with-cpp  arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts meson-gxl-s905x-khadas-vim.dts.preprocessed

dtc -I dts -O dtb -p 0x1000 meson-gxl-s905x-khadas-vim.dts.preprocessed -o kvim1.dtb

kvim1.dtb: Warning (unit_address_vs_reg): Node /scpi/clocks/scpi_clocks@0 has a unit name, but no reg property
kvim1.dtb: Warning (unit_address_vs_reg): Node /soc/bus@c8100000/pinctrl@14 has a unit name, but no reg property
kvim1.dtb: Warning (unit_address_vs_reg): Node /soc/periphs@c8834000/rng has a reg or ranges property, but no unit name
kvim1.dtb: Warning (unit_address_vs_reg): Node /soc/periphs@c8834000/pinctrl@4b0 has a unit name, but no reg property
kvim1.dtb: Warning (unit_address_vs_reg): Node /soc/periphs@c8834000/eth-phy-mux has a reg or ranges property, but no unit name
kvim1.dtb: Warning (unit_address_vs_reg): Node /gpio-keys-polled/button@0 has a unit name, but no reg property
kvim1.dtb: Warning (simple_bus_reg): Node /soc/bus@c8100000/pinctrl@14 missing or empty reg/ranges property
kvim1.dtb: Warning (simple_bus_reg): Node /soc/periphs@c8834000/rng simple-bus unit address format error, expected "0"
kvim1.dtb: Warning (simple_bus_reg): Node /soc/periphs@c8834000/pinctrl@4b0 missing or empty reg/ranges property
kvim1.dtb: Warning (simple_bus_reg): Node /soc/periphs@c8834000/eth-phy-mux simple-bus unit address format error, expected "55c"
正在验证是否生成了kvim1.dtb:

ls -ail kvim1.tdb
4359446 -rw-rw-r-- 1 user user 27568 Jun  2 12:05 kvim1.dtb
有关官方设备树规范,请参阅its和its