我有一个i2c芯片驱动程序作为linux内核的一部分。我可以通过内核启动消息验证i2c芯片驱动程序是否在内核中(我的芯片驱动程序是mma8450)
dmesg的:
mma8450 0-001c: uevent
我也可以看到这个驱动程序(0x1c是芯片的i2c地址)
cat /sys/bus/i2c/devices/0-001c/name
mma8450
我在/ dev界面中看不到这个驱动程序节点。我的问题是如何在/ dev中创建此设备的节点,以便我可以在用户程序中访问此设备?
我创建了相同芯片驱动程序的模块,但没有将其作为内核的一部分。我可以使用insmod mma8450加载这个模块,我怎么能创建这个设备的节点,因为我没有它的主要/次要数字? (我在mma8450源代码中看不到为此驱动程序分配的主要和次要编号)
感谢任何帮助
此致
答案 0 :(得分:3)
查找设备的主要/次要号码:
cat /proc/devices
您应该看到i2c总线的设备和i2c设备本身的设备。
为i2c设备驱动程序创建设备节点:
mknod /dev/[device name] [type] [major] [minor]
答案 1 :(得分:3)
加载内核模块:
modprobe i2c-dev
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
答案 2 :(得分:0)
这是3轴加速度计。 Linux将其注册为input_polled_dev
类型的驱动程序。
您可以使用/ dev / i2c-x总线(控制器)设备节点对其进行uaccess,但是直接从用户空间使用这种方式没有太大意义。
I2C客户端不能用于/ dev设备节点。 它们应该注册到内核I2C框架,并通过更高层的API使用。
有一个示例程序可以使用/ dev / i2c-X总线设备节点从用户空间读取类似的MMA7455L x,y,z寄存器。