如何将 Linux 驱动程序与硬件设备匹配

Posted

技术标签:

【中文标题】如何将 Linux 驱动程序与硬件设备匹配【英文标题】:How to match a Linux driver with a hardware device 【发布时间】:2021-10-14 03:34:57 【问题描述】:

我正在为一些自定义硬件编写 Linux 驱动程序。我的问题是 Linux 如何将硬件与我的驱动程序相匹配。硬件的DT入口是

nvme_host_sys@43c00000 
        clock-names = "sys_clk_p", "sys_clk_n", "aclk";
        clocks = <0x13 0x13 0x13>;
        compatible = "xlnx,nvme-host-sys-1.0";
        interrupt-names = "intr";
        interrupt-parent = <0x4>;
        interrupts = <0x0 0x1d 0x4>;
        reg = <0x43c00000 0x80000>;
        phandle = <0x38>;
    ;

我可以使用 modprobe 插入我的驱动程序,并且工作正常,因为我可以看到 init 中的 printk 正在编写。我还可以使用 mknod 在 /dev 中创建一个条目,这也可以正常工作。但是驱动程序现在是否与硬件相关联?我需要做其他事情吗?谢谢

【问题讨论】:

它通过内核已分配给硬件的主要和次要设备编号以及您已在驱动程序中注册。 【参考方案1】:

我找到了解决方案。在驱动程序代码中,我们只需要添加以下内容:-

static struct of_device_id nvmedrv_of_match[] = 
     .compatible = "xlnx,nvme-host-sys-1.0", ,
     /* end of list */ ,
;

【讨论】:

以上是关于如何将 Linux 驱动程序与硬件设备匹配的主要内容,如果未能解决你的问题,请参考以下文章

Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)

Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)

linux驱动之platform总线

LCD驱动端与设备端名称匹配过程分析(Tiny4412)

如何将 HTML 5 与硬件设备链接/配对?

[架构之路-34]:目标系统 - 系统软件 - Linux OS硬件电路的文本描述:设备树的构成属性解析使用