web-dev-qa-db-ja.com

デバイスツリーコンパイラがインクルードファイルのC構文を認識しない

ボードデバイスツリーを手動でコンパイルしたい。公式からdtcの最新バージョンをダウンロードしました source ですが、次のコマンドを実行しようとすると、すべての#includeディレクティブを変更するようにアドバイスするエラーが表示されます。 /include/に、以下同様に#defineなどに。

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

私のボードは、アムロジックS905xSoCを中心に持つKhadasVimです。すべてのインクルードファイルが存在し、エラーは次のとおりです。

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

8行目は次のとおりです。

#include <dt-bindings/input/input.h>

#include/include/に変更すると、エラーが抑制されます。

デバイスツリーの「言語」(U-bootのドキュメントを除く)のリファレンスを知っている場合は、それを紹介してください。

9
Saleh

これはデバイスツリー構文の問題ではありません。デバイスツリーコンパイラでそのままダイジェストできるファイルを取得するには、Cプリプロセッサcppで.dtsファイルを前処理する必要があります。

特定のケースでは、現在のディレクトリがカーネルルートディレクトリであると想定して、次の2つのコマンドを使用する必要があります。

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

公式のデバイスツリー仕様については、その 公式Webサイト およびその gitリポジトリ を参照してください。

3
Frant