【发布时间】:2016-07-28 16:15:22
【问题描述】:
我正在使用以下 I2C/GPIO Device driver 来访问 MCP23017 GPIO。使用 insmod 命令,我可以加载驱动程序及其在 /proc/modules 中列出的内容。我有两个 MCP23017 芯片连接到我的 Raspberry Pi。两者都在地址0x20 和0x21 处检测到。对驱动程序的 initcall 注册驱动程序。我通过打印出一条消息来检查这一点。但是没有调用驱动程序探测函数。设备未打开/无法位于其他位置。
- 如何调用探测函数?
- 是否应该手动进行探测以定位设备?
-
probe调用与open调用类似吗? - 我试过这个
echo mcp23017 0x20 > new_device来手动创建一个带有地址的新设备。但它没有用。我收到以下消息:Driver 'mcp23s08' is already registered, aborting...
任何帮助将不胜感激。
【问题讨论】:
-
我怎样才能找到你的板子使用的设备树文件?
-
我对 Linux 还是很陌生。你想让我在这里发布设备树文件吗?抱歉,我没听懂你的问题。
-
您的设备 (MCP23017) 必须在设备树中进行描述。因此,您的主板的设备树文件应该有这个描述,或者您应该为您的设备创建自己的设备树覆盖并将其与驱动程序一起加载。如果设备树中没有正确的设备描述,您的驱动程序
probe()函数将不会被调用,因为该函数仅在驱动程序与设备树描述匹配时才会调用。所以我要求您提供设备树文件的链接(您正在用于您的主板)或为您的设备提供您的设备树覆盖(您在驱动程序之前加载)。 -
感谢您的解释。我找到了
mcp23017.dtbo文件,我认为它是设备的设备树覆盖。如果这是正确的设备覆盖,我如何将其加载到驱动程序? -
这是overlay file的链接
标签: linux linux-kernel raspberry-pi linux-device-driver i2c