5

バス、デバイス、ドライバーを中心に構築されたLinuxデバイスモデルについて読んでいます。デバイスとドライバーの一致がどのように発生するかについて少し理解できますが、ここでのバスの役割、バスがデバイスとどのように一致するかについては明確ではありません。

プラットフォームデバイスがどこから名前を取得したかについて、もう1つ疑問があります。

「プラットフォームバスは、各デバイスの名前を各ドライバーの名前と単純に比較します。それらが同じ場合、デバイスはドライバーと一致します。」

上記の点がよくわかりませんでした。デバイス名は最初に dts ファイルで定義され、次に対応するドライバー名がプラットフォーム ドライバー コードで定義されていると思います。

これら 2 つの名前が一致する場合、デバイスが実際に存在することを確認するドライバー コードからプローブが呼び出されます。

バスの観点から、プロセス全体を特別に教えてください。

4

2 に答える 2

3

Linux カーネルには、さまざまなバス (SPI、I2C、PCI、USB など) があります。

各バスには、バスに登録されているドライバーとデバイスのリストがあります。

新しいデバイスまたは新しいドライバーをバスに接続するたびに、一致するループが開始されます。

新しい SPI デバイスを登録するとします。SPI バスは一致ループを開始し、SPI 一致関数を呼び出して、デバイスがバスに既に登録されているドライバーと一致するかどうかを確認します。一致しない場合は、どうしようもありません。

ここで、新しい SPI ドライバーを登録するとします。バスは、登録されたデバイスのいずれかがこの新しいドライバーと一致するかどうかを確認するために、一致するループを再び開始します。一致する場合、ドライバーprobe()関数が呼び出されます。

各バスには、ドライバーとデバイスを一致させるための独自の方法があります。バスを実装するには、一致する関数を作成する必要があります。したがって、名前、整数値、または必要なもので一致するバスを実装できます。

ドライバーまたはデバイスを登録するたびに、バス メカニズムを開始します。

ここでは、 ZIO バスをどのように実装したかを示します。ここにSPI バスがありますここにバス システム のコアがあります

于 2013-10-08T13:23:07.520 に答える