Linux平台驱动程序和普通设备驱动程序有什么区别?

kzs:

之前我曾假设:

  • 平台驱动程序适用于片上设备。
  • 普通设备驱动程序用于与处理器芯片接口的设备。

在遇到一个i2c驱动程序之前...但是在这里,我正在阅读定义为平台驱动程序的多功能i2c驱动程序。我经历了https://www.kernel.org/doc/Documentation/driver-model/platform.txt但是对于如何定义驱动程序(如片上和接口设备),仍然没有一个清晰的主意。

请有人解释。

m-ric:

您的参考文献不错,但没有定义什么是平台设备LWN上有一个我们可以从此页面中学到什么:

  1. 平台设备本质上是无法发现的,即硬件无法说“嘿!我在场!” 到软件。典型示例是i2c设备,kernel/Documentation/i2c/instantiating-devices状态为:

    与PCI或USB设备不同,I2C设备不是在硬件级别(运行时)枚举的。相反,软件必须(在编译时)知道每个I2C总线段上连接了哪些设备。因此,USB和PCI 并不是平台设备。

  2. 平台设备通过匹配名称绑定到驱动程序

  3. 平台设备应在系统引导过程中尽早注册因为它们通常对系统的其余部分(平台)及其驱动程序至关重要。

因此,基本上,“ 是平台设备还是标准设备?问题更多地是它使用哪种总线的问题要使用特定的平台设备,您必须:

  1. 注册将管理此设备的平台驱动程序它应该定义一个唯一的名称,
  2. 注册平台设备,并定义与驱动程序相同的名称。

平台驱动程序适用于片上设备。

不是正确的(理论上是正确的,但实际上是正确的)。i2c设备不是onChip,而是平台设备,因为它们是不可发现的。我们还可以想到普通设备onChip 设备。示例:现代x86处理器上的集成PCI GPU芯片。它是可发现的,因此不是平台设备。

普通设备驱动程序用于与处理器芯片接口的设备。在遇到一个i2c驱动程序之前。

不对。许多普通设备都连接到处理器,但不是通过i2c总线。示例:USB鼠标。

[EDIT]根据您的情况,查看drivers/usb/host/ohci-pnx4008.cUSB主机控制器平台设备(此处是USB主机控制器的位置,而将要连接的USB设备)在这里。它是通过Board文件arch/arm/mach-pnx4008/core.c:pnx4008_init注册的平台设备并在其探测功能内,通过将其i2c设备注册到总线i2c_register_driver我们可以推断,USB主控制器芯片组会谈,以通过I2C总线的CPU。

为什么是这种架构?因为一方面,可以将此设备视为提供系统某些功能的裸机i2c设备。另一方面,它是具有USB主机功能的设备。它需要注册到USB堆栈(usb_create_hcd)。因此仅探测i2c是不够的。看看Documentation/i2c/instantiating-devices

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

设备文件和设备驱动程序之间的区别

为x86和ARM编写平台设备驱动程序的区别

Linux驱动程序开发:PCI和PCIe驱动程序之间的区别?

misc驱动程序和char驱动程序有什么区别?

API和设备驱动程序之间的区别

MySQL JDBC驱动程序中的cachePrepStmts和useServerPrepStmts有什么区别

具有平台驱动程序和字符设备接口的设备特定数据结构

Docker中的存储驱动程序和graphdriver有什么区别?

mongo-php-library和MongoDB驱动程序有什么区别

jdbc Postgres驱动程序中的“ ssl”和“ useSSL”有什么区别?

字符设备,平台驱动程序和内核模块之间的区别

Snowflake连接器和驱动程序有什么区别?

Kubernetes中的驱动程序和容器运行时之间有什么区别?

平台设备和平台驱动程序链接

设备文件和设备驱动程序之间的区别

内核驱动程序和内核模块之间有什么区别?

打印机驱动程序。PS,PCL和PCL6有什么区别?

设备驱动程序和模块之间的区别?

Windows设备驱动程序中的pdo和fdo有什么区别?

本机端口驱动程序和设备驱动程序之间的区别?

不同的nVidia Quadro驱动程序有什么区别?

没有实际设备的设备节点和驱动程序

嵌入式C中的驱动程序和库有什么区别

从新的PPA获取图形驱动程序与从其他驱动程序获取图形驱动程序有什么区别?

内核中的图形驱动程序和Xorg的图形驱动程序之间有什么区别?

DRM和图形驱动程序有什么区别?

NVIDIA传统二进制专有驱动程序和仅二进制专有驱动程序有什么区别?

NVIDIA 第三方免费驱动程序和发行版非免费驱动程序之间有什么区别?

Laravel 的邮件、smtp 和 sendmail 驱动程序有什么区别?