I2C内核驱动程序绑定

时间:2018-01-04 01:53:11

标签: linux-kernel i2c

您好我是内核驱动程序开发的新手。我正在使用raspberry pi作为我的主机我正在尝试为我们拥有的自定义板创建一个I2C驱动程序。定制板将充当奴隶。我很困惑如何进入设备从属地址。根据我的理解

  1. 你需要有一个电路板设置文件,我不会自定义电路板。
  2. 您可以编辑设备树
  3. 或者您可以在用户空间应用程序中执行此操作。
  4. 如果我选择第二个选项,我不确定在哪里编辑设备树。更多我想以某种方式在I2C驱动程序本身中注册从地址。这样我就不需要重建内核了。我正在研究的一种方法是从驱动程序代码设置i2c客户端,但评论员建议我不知道为什么。任何帮助将不胜感激。

    Instantiating Drivers

1 个答案:

答案 0 :(得分:0)

所以我终于找到了一种可以在不需要内核重建的情况下绑定I2C设备的工作方式。我创建了两个驱动程序文件(.ko文件)。一个用于注册,一个用于实际的驱动程序。

我这样做是因为我得到了设备所连接的总线号码。 (您可以查看i2c用户空间代码.i2cdetect -y(busnumber)将帮助您检测它是哪个总线编号)

一旦我知道我创建了一个驱动程序文件,它将通过访问适配器然后注册来注册我的设备。我的总线号码是1,从站地址是0x10

static struct i2c_board_info board_info[] __initdata = 
{
    {
         I2C_BOARD_INFO("my_device", 0x10),
     },
};

在驱动程序的init函数中,我通过

注册设备
i2c_new_device(i2c_get_adapter(1), board_info[0])

多数民众赞成。现在,一旦你在修改实际的驱动程序文件之前构建了这个insmod ko文件,一切都应该有效。