私はデバイスツリーを使用していますが、プローブ機能を呼び出さないようなビーグルボーン(現在Ubuntuを実行している仮想マシンで実行している)用のシンプルなプラットフォームドライバを開発しています。
compatible
私が理解しているように、プローブを呼び出すには(ドライバとデバイスツリーファイルに)一致する値が必要で、プラットフォームドライバを登録する必要があります。私は何を逃したのですか?
struct of_device_id dt_match[] =
{
{.compatible = "A1x"},
{.compatible = "B2x"}
};
struct platform_driver platform_driver_struct =
{
.probe = platform_driver_probe,
.remove = platform_driver_remove,
.id_table = pcdevs_ids,
.driver = {
.name = "pseudo-char-device",
.of_match_table = dt_match
}
};
static int __init platform_driver_init(void)
{
platform_driver_register(&platform_driver_struct);
return 0;
}
// dtsi file
/ {
pcd-dev1 {
compatible = "A1x";
org,size=<512>;
org,perm=<0x15>;
};
pcd-dev2 {
compatible = "B2x";
org,size=<256>;
org,perm=<0x11>;
};
};
次に、上記のDTSIファイルをam335x-boneblack.dts
.次に次のようにバイナリを作成しました.
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am33x-boneblack.dtb
文字列が一致するかどうかによって、そのプローブ機能を呼び出すためにカーネルが使用するディレクトリarch/arm/boot/dts
のデバイスツリーファイルではありませんか?compatible