如何访问i2c设备驱动节点

发布于 2024-11-08 18:02:38 字数 516 浏览 0 评论 0原文

情况 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 源代码中看不到分配给该驱动程序的主要和次要编号)

任何帮助

感谢

Situation 1:

I have an i2c chip driver as part of linux kernel. I can verify the i2c chip driver is in the kernel from kernel boot messages (my chip driver is mma8450)

dmesg:

mma8450 0-001c: uevent

I can also see this driver in (0x1c is i2c address of chip)

cat /sys/bus/i2c/devices/0-001c/name
mma8450

I can not see this driver node in /dev interface. My question is how can I create node of this device in /dev so that I can access this device in a user program ?

Situation 2:

I create the module of the same chip driver and does not make it a part of kernel. I can load this module using insmod mma8450, how can I create a node of this device as I don't have its major / minor numbers ? (I can not see major & minor numbers assigned to this driver in mma8450 source code)

Any help is appreciated

Regards

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

丿*梦醉红颜 2024-11-15 18:02:38

加载内核模块:

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

Load the kernel module:

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
好听的两个字的网名 2024-11-15 18:02:38

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

cat /proc/devices

您应该看到一个用于 i2c 总线的设备和一个用于 i2c 设备本身的设备。

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

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

Find the major/minor numbers for your device:

cat /proc/devices

You should see a device for the i2c bus and one for the i2c device itself.

Create the device node for the i2c device driver:

mknod /dev/[device name] [type] [major] [minor]
橘和柠 2024-11-15 18:02:38

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

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

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

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

读取加速度计使用 I²C

This is 3-Axis Accelerometer. Linux registers it as a driver for input_polled_dev type.

You can uaccess it using /dev/i2c-x bus (controller) device node, but there is no much sense using it that way directly from userspace.

I2C clients are not meant to be used using /dev device nodes.
They should be registered to Kernel I2C framework and used through higher layers API.

There is sample program for reading similar MMA7455L x,y,z registers from userspace using /dev/i2c-X bus device node.

Reading the Accelerometer With I²C

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文