DTC(1) | FreeBSD General Commands Manual | DTC(1) |
名称
dtc — デバイスツリーコンパイラ書式
dtc | [ -fhsv][ -b boot_cpu_id][ -d dependency_file][ -E [no-]checker_name][ -H phandle_format][ -I input_format][ -O output_format][ -o output_file][ -R entries][ -S bytes][ -p bytes][ -V blob_version][ -W [no-]checker_name][ -P predefined_properties] input_file |
解説
dtc ユーティリティは、フラットにされたデバイスツリー (FDT) 表現を変換します。デバイスツリーソース (device tree source (DTS))、ASCII テキストソース表現から FDT のバイナリ表現、デバイスツリーブロブ (device tree blob (DTB)) を生成するために最も一般に使用されます。バイナリは、バイナリとアセンブリ (assembly) の 2 つの形式で書き込むことができます。バイナリは、インメモリ (in-memory) 表現と同一で、ファームウェア、ローダなどによって直接使用することができます。 ASM 形式 に文書化されているアセンブリ形式は、組み立てる時に、同じバイナリ形式を作成しますが、テーブルの部品を参照する、いくつかのグローバル変数を含んでいます。この形式は、コンパイルされたデバイスツリーブロブ (device tree blob) でデバイスに特有のカーネルを作成するために最も一般に使用されます。
オプションは、次の通りです:
- -d dependency_file
- 指定されたファイルに make よって理解できる依存性ファイル (dependency file) を書き込みます。このファイルは、Makefile に含むことができ、出力ファイルが入力ファイルとそれが含んでいるあらゆるファイルに依存することを保証します。この引数は、ソース形式だけに含有の概念があるように、入力が DTS であるときのみ、単に役に立ちます。
- -E [no-]checker_name
- 指定されたチェッカを有効にするか、または無効にします。引数は、チェッカの名前です。チェッカの完全リストは、 チェッカ で与えられます。
- -f
- ツールは、たとえ入力にエラーがあったとしても、出力を生成することを強制的に試みます。
- -h
- ヘルプテキストを表示して終了します。
- -H phandle_format
-
出力で生成する phandle ノードのタイプを指定します。有効な値は、次の通りです:
- linux
- 古い linux、古いシステムによって期待された phandle ノードを生成します。
- epapr
- ePAPR 使用に記述されているように、phandle ノードを生成します。これは、 FreeBSD で使用されているデバイスツリーに対して最も賢明なオプションです。
- both
- 最大の互換性のために、両方を生成します。
- -I input_format
-
入力形式を指定します。有効な値は、次の通りです:
- dtb
- デバイスツリーブロブ (blob)。 FDT のバイナリ表現。
- dts
- デバイスツリーソース。 FDT の ASCII 表現。これは、入力形式が明示的に規定されないなら、デフォルトです。
- -O output_format
-
出力形式を指定します。有効な値は、次の通りです:
- asm
- ASM 形式 に記述されているように、デバイスツリーブロブを生成するためのアセンブラソース。
- dtb
- デバイスツリーブロブ。 FDT のバイナリ表現。これは、出力形式が明示的に規定されないなら、デフォルトです。
- dts
- デバイスツリーソース。 FDT の ASCII 表現。
- -o output_file
- 出力に書き込むファイル。
- -P predefined_macro
- 条件付きの構成要素を含んでいるデバイスツリーソースファイルのために使用されるために、 name=value または name 形式で、マクロを定義します。このツールは、デバイスツリーの条件付きコンパイルをサポートするために標準に対する 2 つの拡張をサポートします。最初は、指定されたプロパティが、このフラグで渡されるなら、ファイルの最初で許可され、単に指定されたファイルを含んでいる /include/if [property]/ file.dts ディレクティブです。 2 番目は、プロパティ値のための $NAME 形式です。これらによって、プロパティ値をコマンド行で指定することができます。
- -R entries
- テーブルに詰め物をする空の予約テーブルエントリの数。これは、制御をオペレーティングシステムに渡す前に、いくつかのメモリを予約する必要がある、ブートローダまたは類似物のためのデバイスツリーブロブを生成しているなら、役に立ちます。
- -S bytes
- ブロブ (blob) のバイト単位の最小サイズ。ブロブ (blob) は、正確なサイズであることを保証するために、文字列テーブルの後に詰め物が行われます。これは、デバイスツリーブロブが適切な場所で修正しなければならない環境で役に立ちます。
- -p bytes
- ブロブに追加する詰め物を行うバイトの数。ブロブ (blob) は、正確なサイズであることを保証するために、文字列テーブルの後に詰め物が行われます。これは、デバイスツリーブロブが適切な場所で修正しなければならない環境で役に立ちます。
- -W [no-]checker_name
- 指定されたチェッカを有効にするか、または無効にします。これは、 -E のための別名です。
- -s
- ツリーのプロパティとノードをソートします。これは、2 つのデバイスツリーソースを比較するために diff(1) のようなツールを使用するとき、主として役に立ちます。
- -V output_version
- 出力する形式のバージョン。これは、バイナリ出力のためだけに適切で、17 の値だけが現在サポートされています。
- -v
- ツールのバージョンを表示して終了します。
- input_file
- ソースファイル。
ASM 形式
アセンブリ (assembly) 形式は、ソースで指定されたあらゆるラベルに加えて、他のコンパイル単位から参照することができる、いくつかのグローバルを定義しています。これらは、次の通りです:
- dt_blob_start
- デバイスツリーブロブの開始。
- dt_header
- ブロブの開始と通常、同一の、ヘッダの開始。
- dt_reserve_map
- 予約マップの開始。
- dt_struct_start
- 構造テーブルの開始。
- dt_struct_end
- 構造テーブルの終り。
- dt_strings_start
- 文字列テーブルの開始。
- dt_strings_end
- 文字列テーブルの終り。
- dt_blob_end
- デバイスツリーブロブの終り。
チェッカ
ユーティリティは、ツリーの正確さで多くのセマンティックのチェックを提供しています。これらは、 -W フラグで無効にすることができます。例えば、 -W no-type-phandle は、phandle タイプチェックを無効にします。サポートされているたチェックは、次の通りです:
- type-compatible
- compatible (互換性) プロパティのタイプをチェックします。
- type-model
- model (モデル) プロパティのタイプをチェックします。
- type-compatible
- compatible (互換性) プロパティのタイプをチェックします。
- cells-attributes
- 子どもがあるすべてのノードに #address-cells と #size-cells プロパティがあることをチェックします。
使用例
コマンドは、次の通りです:
dtc -o blob.S -O asm device.dts
は、デバイスツリーソース device.dts から blob.S ファイルを生成し、解析のあいだ、またはプロパティのチェックの間に生じるエラーを印刷 (表示) します。結果のファイルをアセンブルし、バイナリにリンクすることができます。
コマンドは、次の通りです:
dtc -o - -O dts -I dtb device.dtb
は、標準出力にデバイスツリーブロブ device.dtb のためのデバイスツリーソースを書き込みます。これは、デバイスツリーをデバッグするとき、役に立ちます。
互換性
このユーティリティは、elinux.org によって提供されるデバイスツリーコンパイラと互換性があることを目的としています。現在、それは、FreeBSD 開発者によって要求された FreeBSD とその他を構築するために必要な機能の部分集合を実装しています。fs 入力形式は、サポートされていません。これは、Linux /proc/device-tree からのツリー、sysctl によって DTB を直接露呈する代わりに FreeBSD で見つからないファイルシステム階層を構築します。
elinux.org ツールによってサポートされる警告とエラーは、文書化されていません。このツールは、 チェッカ セクションに記述されていた警告をサポートしています。
関連項目
fdt(4)規格
このツールによって理解されたデバイスツリー形式は、 バグ セクションで述べたものと elinux.org ツールとの互換性のための次の例外を除いて、 Power.org Standard for Embedded Power Architecture Platform Requirements ( ePAPR) に適合しています:
- クロスリファレンスのターゲットは、仕様中でノード名であると定義されていますが、実際は、ラベルです。
/include/ デレクティブは、標準の一部ではありません、しかしながら、それは、elinux.org ツールと互換性があるセマンティックスで実装されています。それは、ファイルのトップレベルに現われなければならないし、新しいルートの定義をインポートします。ファイルがその含有のすべてを追加し、複数のルートを含んでいるなら、それらは、マージされます。最初ではなく 2 番目に存在するすべてのノードがインポートされます。両方に現われるものはすべて、最初のプロパティと再帰的にマージされている子どものノードのプロパティを 2 番目のプロパティで置き換え、再帰的にマージされます。
歴史
dtc ツールは、 FreeBSD 9.0 ではじめて登場しました。ツールのこのバージョンは、 FreeBSD 10.0 ではじめて登場しました。作者
注: ツールと著者が同じイニシャルを共有するという事実は、完全に偶然です。
バグ
デバイスツリーコンパイラは、まだ次の機能をサポートしていません:
- プロパティ値の中間のラベル。これは、アセンブリ出力で単に役に立ち、単に曖昧に役に立ち、したがって、恐らくすぐに追加されません。
- phandles のターゲットとしてラベルではなくフルパスです。これは、追加するのがあまり難しくありませんが、何かが実際にそれを必要とするまで、恐らく追加されません。
現在のバージョンは、ツリーのセマンティックなチェックのたいへん制限されたセットを実行しています。これは、将来のバージョンで改良されるでしょう。
January 1, 2013 | FreeBSD |