我目前正在处理在运行 Linux 的嵌入式系统中连接到 I2C 总线的两个设备。我正在为第一个设备(相机)使用现有驱动程序。对于第二个设备,我已经成功实现了一个用户空间程序,我可以通过它与第二个设备进行通信。到目前为止,这两种设备似乎可以愉快地共存。然而,几乎所有的 I2C 设备都有自己的驱动模块。因此,我想知道驱动模块的优点是什么。我看了下面的线程...
...但没有结论。
因此,与用户空间实现相比,编写 I2C 驱动程序模块有什么优势?
问候,斯特凡
我目前正在处理在运行 Linux 的嵌入式系统中连接到 I2C 总线的两个设备。我正在为第一个设备(相机)使用现有驱动程序。对于第二个设备,我已经成功实现了一个用户空间程序,我可以通过它与第二个设备进行通信。到目前为止,这两种设备似乎可以愉快地共存。然而,几乎所有的 I2C 设备都有自己的驱动模块。因此,我想知道驱动模块的优点是什么。我看了下面的线程...
...但没有结论。
因此,与用户空间实现相比,编写 I2C 驱动程序模块有什么优势?
问候,斯特凡
在您的情况下,您可能对 I2C 驱动程序模块没有太多用处。如果没有坏掉......
我将包含内核模块驱动程序的主要原因是另一个内核模式驱动程序是 I2C 客户端,或者受益于与内核的紧密集成。其中一个示例是 WM8350 音频编解码器,它通过音频总线(I2S 或 AC97)传输音频数据,并通过 I2C 传输配置(例如音量)。
电源管理 IC 是您希望内核直接控制的另一个芯片示例。
最后,我会注意到有多种 I2C 驱动程序。(请参阅 Documentation/i2c/summary。)在某些情况下,您的硬件可能需要 I2C 总线适配器驱动程序,以教授如何通过 I2C 进行通信。那将需要一个内核模式驱动程序。