EN JA
FDT(4)
FDT(4) FreeBSD Kernel Interfaces Manual FDT(4)

名称

fdtフラット化されたデバイスツリー (Flattened Device Tree) のサポート

書式

options FDT
makeoptions FDT_DTS_FILE=<board name>.dts
options FDT_DTB_STATIC

解説

フラット化されたデバイスツリー (Flattened Device Tree) は、均一で移植性がある方法で、プローブまたは自体で列挙することができない、コンピュータのハードウェアのリソースを説明するためのメカニズムです。この技術の主要な消費者は、多くの設計が同様のチップに基づいていますが、異なったピンの割り当て、メモリレイアウト、アドレスバインディング、割り込み経路制御と他のリソースがある、 組み込みシステム です。

実行時に自分で発見することができない設定データは、外部ソースから提供されなければなりません。フラット化デバイスツリーの概念は、そのような問題を解決するためのプラットフォームとアーキテクチャに独立しているアプローチです。アイデアは、Open Firmware IEEE 1275 デバイスツリー概念から継承され、組み込み産業によってうまく採用されました。スキームは、次の方法で動作します:

  • ハードウェアプラットフォームリソースは、すべての自己列挙情報が集められないところで、人間に読み込み可能なテキストソース形式で 手動 で説明されます。
  • このソース記述は、バイナリオブジェクトに変換 (コンパイル) されます、すなわち、ブート時にカーネルに渡されるフラット化されデバイスツリーの blob (ブロブ)です。
  • カーネル (ドライバ) は、カーネルの基本的なプラットフォームハードウェアリソースに関するどんな情報も組み込む必要性を排除する、ハードウェアリソースの詳細とこの [外部的に供給された] blob からの依存に関して学びます。
  • 原則としてフラット化されたデバイスツリーのメカニズムは、任意の特定の第一段階ブートローダまたはファームウェア機能に依存しません。環境のための唯一の総合的な要件は、完全なデバイスツリーの記述をカーネルに提供することです。

fdt 層によって、カーネルの任意のプラットフォームコードは、より簡単なポーティングとメインテナンスを先導する (ハードコードされた設定アプローチを排除し、データ駆動され、拡張可能なコードを実行する) 組み込みアプリケーションに利益をもたらす、統一された起源からハードウェアリソースの情報を検索することができます。

定義

Device tree source (DTS)
デバイスツリーのソースは、特定の階層構造 (ツリー) がある、人間に読み込み可能な形式でコンピュータシステムのハードウェアリソースを記述するテキストファイルです。 FreeBSD ソースリポジトリの DTS ファイルのためのデフォルト位置は、 sys/boot/fdt/dts ディレクトリです。
Device tree blob (DTB)
テキスト形式のデバイスツリーの記述 (DTS ファイル) は、最初にバイナリオブジェクト (デバイスツリー blob)、すなわち、DTB は、その内容の構文解析と処理のために最終的な消費者 (通常カーネル) に引き渡される、に変換 (コンパイル) されます、
Device tree compiler (DTC)
ユーティリティプログラムは、デバイスツリー (DTS) のテキスト形式の記述をバイナリオブジェクト (DTB) に変換 (コンパイル) するホスト上で実行されます。
Device tree bindings
デバイスツリーのテキスト形式の記述とバイナリオブジェクトがハードウェア設定情報を伝達するメディアですが、実際の意味と内容の解釈は、デバイスツリーの 結合 によって定義されます。それらは、デバイスツリーの特定のノードの定義 (エンコード) とそれらのプロパティ、許容値、範囲などを記述する特定のコンベンションです。そのような参照のコンベンションは、古い Open Firmware 結合によって供給され、さらに ePAPR 仕様によって補足されます。

WORLD を構築する

システムが fdt をサポートするためには、 FreeBSD world は、 src.conf(5) または -D と共に定義されたコマンドラインを通して供給された knob を構築する WITH_FDT を付けて構築されることが必要です。

これは、ユーザ空間 dtc コンパイラを作成し、 loader(8)fdt サポートを有効にします。

KERNEL を構築する

FreeBSD カーネルレベルで fdt サポートを管理するために 2 〜 3 のオプションがあります。
options FDT
カーネルで fdt サポートを有効にするためのプライマリオプション。 fdt カーネルサポートのすべての低レベルとインフラストラクチャ部分をカバーします。カーネルサポートの主なものは、ヘルパルーチンとライブラリと同様に、 fdtbus(4)simplebus(4) ドライバです。
makeoptions FDT_DTS_FILE=<board name>.dts
与えられたカーネルのための優先 (デフォルト) デバイスツリーのソース (DTS) ファイルを指定します。指示された DTS ファイルは、カーネル自体を構築とともにバイナリ形式に変換 (コンパイル) されます。 DTS ファイル名は、DTS ソースのデフォルト位置に相対的です、すなわち、 sys/boot/fdt/dts です。この makeoption は、FDT_DTB_STATIC も定義されないなら、強制的ではありません (下記参照)。
options FDT_DTB_STATIC
通常、デバイスツリーの blob (DTB) は、カーネルから物理的に分離されたスタンドアロンファイルですが、このオプションによって、カーネルイメージに DTB ファイルを静的に組み込みます。これが指定されるとき、FDT_DTS_FILE makeoption は、(カーネルイメージに組み込まれた順序で指定された DTS ファイルである必要があるように) 強制的になることに注意してください。

規格

IEEE Std 1275: ブート (初期設定) のファームウェアのための IEEE 標準: Core Requirements と Practices ( Open Firmware。)

Embedded Power Architecture Platform Requirements ( ePAPR) のための Power.org Standard。

歴史

fdt のサポートは、 FreeBSD 9.0 ではじめて登場しました。

作者

fdt のサポートは、FreeBSD Foundation のスポンサーシップ下で Semihalf によって開発されました。このマニュアルページは、 Rafal Jaworowski によって書かれました。
July 12, 2010 FreeBSD