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

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

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

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

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

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

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

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

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

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

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

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

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

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

[编辑] 在您的情况下,请看一下

drivers/usb/host/ohci-pnx4008.c
USB主控制器平台设备(此处是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



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5006184.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存