彫刻実際にはデバイスツリーが必要です。

彫刻実際にはデバイスツリーが必要です。

組み込みデバイスでカーネルを起動するときは、Linuxカーネルにデバイスツリーを提供する必要がありますが、通常のx86 PCでカーネルを起動するためにデバイスツリーは必要ありません。なぜですか?

私が理解したように、x86 PCでは、カーネルはハードウェアを「探索」します(間違っている場合は訂正してください)。

ベストアンサー1

周辺機器はメインプロセッサに接続されます。バス。一部のバスプロトコルは、ホストプロセッサが「このバスにどのデバイスが接続されていますか」と尋ねることができる列挙(検索とも呼ばれる)をサポートしています。デバイスは、そのタイプ、製造元、モデル、および構成に関するいくつかの情報を標準化された形式で応答します。この情報により、オペレーティングシステムは利用可能なデバイスのリストを報告し、各デバイスに使用するデバイスドライバを決定できます。一部のバスプロトコルは列挙をサポートしていないため、ホストプロセッサは推測以外にどのデバイスが接続されているかを知る方法がありません。

すべての最新のPCバスは、特に列挙型をサポートしています。PCI(AGPやPCIeなどのオリジナルおよび拡張および後続の製品)、ほとんどの内部周辺機器が接続されています。USB(すべてのバージョン) ほとんどの周辺機器が接続され、ライブライン小型コンピュータシステムインタフェース、すべての最新バージョンATA/SATA待つ。最新のモニター接続は、接続されているモニターの検索もサポートします(HDMIディスプレイポートDVIインターフェースVGAそしてEDID)。したがって、PCでは、オペレーティングシステムはPCIバスを列挙して接続された周辺機器を検索することができ、PCIバスでUSBコントローラを見つけるとUSBバスなどを列挙します。オペレーティングシステムは、PCIバスの存在とそれを検出する方法を想定する必要があります。これはPCアーキテクチャの標準化です(「PCアーキテクチャ」は単なるx86プロセッサ以上を意味します。(現代)PCになるには、コンピュータにPCIバスがあるので何とか起動する必要があります)。

多くの組み込みシステムは、列挙をサポートしないあまりカラフルでないバスを使用しています。これは、PCIが交換された1990年代半ばまでPCの場合でした。ISA。特に、ほとんどのARMシステムバスは列挙型をサポートしていません。 PC アーキテクチャに従わない一部の組み込み x86 システムでも同様です。列挙がない場合、オペレーティングシステムはどのデバイスが存在し、そのデバイスにアクセスするかを知る必要があります。これデバイスツリーこの情報を表現するための標準形式です。

PCバスが検索をサポートする主な理由は、PCに拡張カードを追加したり、外部ポートにケーブルを接続したりするなど、デバイスを追加および取り外しできるモジュール式アーキテクチャを可能にするように設計されているためです。組み込みシステムには通常、固定されたデバイスセット1と製造元が事前にロードして交換しないオペレーティングシステムがあるため、列挙する必要はありません。

1USBなどの外部バスがある場合、USB周辺機器は自動的に検出され、デバイスツリーには記載されていません

おすすめ記事