为 I2C 设备加载平台驱动程序时,该设备是否需要存在?

When loading a platform driver for an I2C device does the device need to be present?

我正在尝试为 raspberrypi 构建 I2C 平台设备驱动程序。该设备正在注册为 misc 设备。我的理解是,当我通过 insmod 加载驱动程序时,应该调用探测函数,并且至少应该打印我在那里的消息。相反,我收到有关内核被污染的消息。据我所知,即使我的模块污染了内核,它仍然应该 运行。那么我的问题是,设备是否需要物理连接到 raspberrypi 才能调用我的驱动程序的探测功能?还是有其他问题?

无需物理插入设备即可调用探测功能。大多数已实现的探测功能甚至会检查设备是否已插入。
内核受污染的警告也可以忽略,您的驱动程序仍然应该能够 运行。
我想你错过了将你的驱动程序添加到设备树。
你可以在这里找到一个很好的解释 LWN.net
在没有更多信息的情况下,我们很难猜测其他可能的问题。