情景1:
我有一个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源代码中看不到分配给此驱动程序的主要和次要编号)
任何帮助我们都将不胜感激
问候
发布于 2013-05-02 00:10:32
加载内核模块:
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发布于 2011-06-03 05:52:11
查找设备的主要/次要编号:
cat /proc/devices您应该看到一个用于i2c总线的设备和一个用于i2c设备本身的设备。
为i2c设备驱动程序创建设备节点:
mknod /dev/[device name] [type] [major] [minor]发布于 2019-01-29 21:34:32
这是三轴加速度计。Linux将其注册为input_polled_dev类型的驱动程序。
您可以使用/dev/i2c-x总线(控制器)设备节点来访问它,但是直接从用户空间使用它没有多大意义。
不应使用/dev设备节点来使用I2C客户端。它们应该注册到内核I2C框架中,并通过更高层的API使用。
有一些示例程序可以使用/dev/i2c-X总线设备节点从用户空间读取类似的MMA7455L x,y,z寄存器。
https://stackoverflow.com/questions/6057726
复制相似问题