プラットフォームドライバのプローブ機能が呼び出されませんでした。

プラットフォームドライバのプローブ機能が呼び出されませんでした。

私はデバイスツリーを使用していますが、プローブ機能を呼び出さないようなビーグルボーン(現在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

ベストアンサー1

おすすめ記事