Linux 如何访问i2c设备驱动程序节点 情景1:

Linux 如何访问i2c设备驱动程序节点 情景1:,linux,i2c,Linux,I2c,我有一个i2c芯片驱动程序作为linux内核的一部分。我可以通过内核引导消息验证i2c芯片驱动程序是否在内核中我的芯片驱动程序是mma8450 dmesg: mma8450 0-001c: uevent 我还可以看到这个驱动程序在0x1c是i2c芯片的地址 cat /sys/bus/i2c/devices/0-001c/name mma8450 我在/dev接口中看不到此驱动程序节点。我的问题是如何在/dev中创建此设备的节点,以便在用户程序中访问此设备 情景2: 我创建了同一芯片驱动程序的

我有一个i2c芯片驱动程序作为linux内核的一部分。我可以通过内核引导消息验证i2c芯片驱动程序是否在内核中我的芯片驱动程序是mma8450

dmesg:

mma8450 0-001c: uevent
我还可以看到这个驱动程序在0x1c是i2c芯片的地址

cat /sys/bus/i2c/devices/0-001c/name
mma8450
我在/dev接口中看不到此驱动程序节点。我的问题是如何在/dev中创建此设备的节点,以便在用户程序中访问此设备

情景2: 我创建了同一芯片驱动程序的模块,并没有将其作为内核的一部分。我可以使用insmod mma8450加载此模块,如何创建此设备的节点,因为我没有其主要/次要编号?在mma8450源代码中,我看不到分配给该驱动程序的主要和次要编号

谢谢你的帮助


关于

查找设备的主要/次要号码:

cat /proc/devices
您应该看到一个用于i2c总线的设备和一个用于i2c设备本身的设备

为i2c设备驱动程序创建设备节点:

mknod /dev/[device name] [type] [major] [minor]

查找设备的主要/次要编号:

cat /proc/devices
您应该看到一个用于i2c总线的设备和一个用于i2c设备本身的设备

为i2c设备驱动程序创建设备节点:

mknod /dev/[device name] [type] [major] [minor]

加载内核模块:

modprobe i2c开发

ls /dev/i2*

/dev/i2c-0  
/dev/i2c-10  
/dev/i2c-12  
/dev/i2c-14  
/dev/i2c-3  
/dev/i2c-5  
/dev/i2c-7  
/dev/i2c-9
/dev/i2c-1  
/dev/i2c-11  
/dev/i2c-13  
/dev/i2c-2   
/dev/i2c-4  
/dev/i2c-6  
/dev/i2c-8

加载内核模块:

modprobe i2c开发

ls /dev/i2*

/dev/i2c-0  
/dev/i2c-10  
/dev/i2c-12  
/dev/i2c-14  
/dev/i2c-3  
/dev/i2c-5  
/dev/i2c-7  
/dev/i2c-9
/dev/i2c-1  
/dev/i2c-11  
/dev/i2c-13  
/dev/i2c-2   
/dev/i2c-4  
/dev/i2c-6  
/dev/i2c-8

这是三轴加速度计。Linux将其注册为input_polled_dev类型的驱动程序

您可以使用/dev/i2c-x总线控制器设备节点来访问它,但是直接从用户空间使用它没有多大意义

I2C客户端不打算使用/dev设备节点。 它们应该注册到内核I2C框架,并通过更高层的API使用

有一个示例程序,用于使用/dev/i2c-x总线设备节点从用户空间读取类似的MMA7455L x、y、z寄存器


这是三轴加速度计。Linux将其注册为input_polled_dev类型的驱动程序

您可以使用/dev/i2c-x总线控制器设备节点来访问它,但是直接从用户空间使用它没有多大意义

I2C客户端不打算使用/dev设备节点。 它们应该注册到内核I2C框架,并通过更高层的API使用

有一个示例程序,用于使用/dev/i2c-x总线设备节点从用户空间读取类似的MMA7455L x、y、z寄存器


你知道传感器检测脚本吗?我在Ubuntu上使用它,它可能是Debian的一部分。它将检测并加载适当的模块;从来没有遇到过问题是的你知道传感器检测脚本吗?我在Ubuntu上使用它,它可能是Debian的一部分。它将检测并加载适当的模块;从未出现过问题是的,该命令为I2C总线控制器创建设备节点。问题是是否可以为mma8450 I2C客户端创建设备节点。此命令为I2C总线控制器创建设备节点。问题是是否可以为mma8450 I2C客户端创建设备节点。我认为只有I2C总线设备列在字符设备下。不是mma8450 I2C客户端。我认为只有I2C总线设备列在字符设备下。不是mma8450 I2C客户端。