Freescaleimx6をベースにしたTX6U-8010用の組み込みLinuxに取り組んでいます。
デバイスツリーコンパイラ(dtc)を使用してdtbをコンパイルしようとしています。ただし、コマンドを使用すると、次のようになります。
dtc -O dtb -o imx6dl-tx6u-801x.dtb imx6dl-tx6u-801x.dts
...次のエラーが発生します:
Error: imx6dl-tx6u-801x.dts:13.1-9 syntax error
FATAL ERROR: Unable to parse input tree
12、13、14行目は次のとおりです。-
/dts-v1/;
#include "imx6dl.dtsi"
#include "imx6qdl-tx6.dtsi"
私が使用しているカーネルバージョンはlinux-3.18.5で、dtcバージョンはDTC1.4.0です。
カーネルソースに付属のMakefileファイルを使用して、すべての問題を処理できます。
カーネルコードのルートディレクトリから、次のコマンドを実行するだけです。
make Arch=arm CROSS_COMPILE=arm-none-eabi- imx_v6_v7_defconfig
make Arch=arm CROSS_COMPILE=arm-none-eabi- dtbs
CROSS_COMPILE
の値を正しいプレフィックスに置き換えてください。
https://linux-sunxi.org/Device_Tree#Compiling_the_Device_Tree
カーネル内のデバイスツリーソースは、インクルードと置換にcppプリプロセッサを使用することにより、通常の構文から逸脱しています。これは次のように進行します。
IDE=<your-device-name>
SRC=$IDE.dts
TMP=$IDE.tmp.dts
DST=$IDE.dtb
cpp -nostdinc -I include -undef -x assembler-with-cpp $SRC > $TMP
dtc -O dtb -b 0 -o $DST $TMP
rm $TMP