当前位置: 首页 > 面试题库 >

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

沈巴英
2023-03-14
问题内容

之前我曾假设:

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

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

请有人解释。


问题答案:

您的参考文献不错,但没有定义 什么是平台设备
。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.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



 类似资料:
  • 问题内容: 谁能解释我, 什么啊 这有什么用途? 如何使用? 为什么我不能定义与之功能相同的新功能? 问题答案: 一个,表示“输入- 输出控制”是一种特定于设备的系统调用。Linux(300-400)中只有几个系统调用,不足以表示设备可能具有的所有独特功能。因此,驱动程序可以定义一个ioctl,它允许用户空间应用程序向其发送订单。但是,ioctl并不是很灵活,并且会变得有些混乱(数十个“魔术数字”

  • 问题内容: 如何使用打开,关闭,ioctl等功能为i2c设备制作字符设备?最近两周我一直在寻找有关它的信息,找不到任何有效的方法。我在Essential LinuxDevice Drivers中找到了一些信息,但是它是针对2.6内核编写的,我使用3.4.79(我正尝试在cubian distr上为cubieboard2编写此驱动程序),因此本书有许多不推荐使用的功能,我试图在那里写我的驱动程序,但

  • 更新时间:2019-04-16 19:04:41 各种不同的设备在不同的操作系统使用时,可能需要单独安装对应的驱动程序。为了方便用户,Hacklab提供了支持的部分开发板串口驱动程序下载及安装信息,请根据使用的开发板和PC OS下载对应的驱动程序。 串口芯片驱动 CP210x 下载地址 使用该串口驱动的开发板包括: ST Nucleo F412ZG esp32devkitc(Board类型可选择E

  • 操作系统其中一个目的就是向用户掩盖系统硬件设备的特殊性。例如,虚拟文件系统呈现了安装的文件系统的一个统一的试图,而和底层的物理设备无关。本章描述 Linux 核心是如何管理系统中的物理设备的。 CPU 不是系统中唯一的智能设备,每一个物理设备都由它自己的硬件控制器。键盘、鼠标和串行口由 SuperIO 芯片控制, IDE 磁盘由 IDE 控制器控制, SCSI 磁盘由 SCSI 控制器控制,等等。

  • Device Drivers 设备驱动程序 Generic Driver Options 驱动程序通用选项.[提示]Linux Kernel Driver DataBase网 站是搜索驱动程序与硬件型号对应关系的绝佳网站.如果你不知道某个驱动(例如"CONFIG_INTEL_IOATDMA")究竟对应着哪些型号的硬件, 那么可以直接根据该驱动选项的首字母(本例是"I")进入对应的索引页去查找到该驱

  • 新的Google chrome更新会在浏览器中出现这样的信息:“您正在使用不受支持的命令行标志:--Ignore-Certifice-Errors。稳定性和安全性将受到影响。” 根据我在selenium bug报告中读到的内容,临时解决方案是启动webdriver