未调用平台驱动程序的探测函数

未调用平台驱动程序的探测函数

我正在为 beaglebone 开发一个简单的平台驱动程序(但目前在运行 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匹配来调用各自的probe函数吗?

相关内容