これは、Linuxドライバーに関するドキュメントを、特にOll in Oneの知識ベースとして提供することを目的としています。ドキュメントはまばらであり、現在インターネット全体に広がっています。 I2Cデバイスは2つのラインバスにあり、発見できないプラットフォームデバイスです。 i2cbusが存在するか、/または任意のデバイスが見つかっているかどうかを確認するために、さまざまなLinuxシステムで見つかったi2cdetectツールを使用できます。
含まれる例
kobjectとは何ですか? kobject/を参照してください
ユーザースペースと対話するために使用されます。一部のドライバーは、部品、I2C、またはプラットフォームドライバーに分割され、デバイスと対話し、ユーザースペースとやり取りするためのMASCドライバーになります。その他のドライバーは、プラットフォームのプローブ機能に登録できます。 MISCは、ユーザースペースの読み取りおよび書き込みコールを容易にします。その他のドライバーは、主要な数字を必要とせず、1つのマイナーな数値のみを提供します。 (Drivers/Char/Misc && Misc_register)他のカテゴリには適合しないドライバーのセットである(ドライバー/その他)。2つの異なるトピックもあります。
プラットフォームデバイスは本質的に発見できません。ソフトウェアにその存在を通知できません。 I2Cデバイスはこのカテゴリに分類されます。ソフトウェアは、その存在のコンパイル時に( board_infoまたはデバイスツリー(DTS)..)、I2C/ディレクトリで学習できる名前のマッチングによってドライバーにバインドされていることを知っておく必要があります。使用できるようにできるだけ早く登録する必要があります。
USBとPCIはプラットフォームデバイスとしてカウントされません。
プラットフォームデバイスを使用するには、2つの要件があります
プラットフォームドライバーに関するこれらのことに注目してください
compatibleデバイスツリープロパティによって選択されます。たとえば、互換性のあるデバイスのデバイスツリーソース(DTS)の例
lkmc_platform_device@101e9000 {
compatible = "lkmc_platform_device";
reg = <0x101e9000 0x1000>;
interrupts = <18>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&pclk>;
clock-names = "apb_pclk";
lkmc-asdf = <0x12345678>;
};
PCIなどの非プラットフォームデバイスは、本質的に発見可能です。これは、ソフトウェアがランタイム中にシステムに追加された新しいデバイスを見つけることができることを意味します。
非プラットフォームドライバーに関するこれらのことに注目してください
device_addとdevice_delを使用してPCIデバイスを挿入および削除できます。プローブは自動ではありませんが、エコー1>/sys/bus/pci/rescanで起動した後に行うことができます。