FDT(4) | FreeBSD Kernel Interfaces Manual | FDT(4) |
名称
fdt — フラット化されたデバイスツリー (Flattened Device Tree) のサポート書式
options FDTmakeoptions 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 によって開発されました。このマニュアルページは、 によって書かれました。July 12, 2010 | FreeBSD |