【发布时间】:2016-10-05 11:24:09
【问题描述】:
我有一个 i2c 设备,内置在我正在开发的板上。它响应单个地址,但第一个字节(有时称为“命令”或“寄存器”)指示所寻址的函数。
我可以通过i2cset/get/detect 使用来自用户空间的设备,所以我知道一切正常。
设备控制 LED(因此应出现在 /sys/class/leds 中)。
它也有 GPIO(因此应该出现在 /sys/class/gpio 中)。
还有六个不同的地方应该出现设备的部分功能。
我应该这样编码吗:
- 一个 i2c 客户端模块,并找到一种方法将内容列在
/sys的正确位置。 - 一个平台模块和许多驱动程序模块,都共享一个 i2c 设备(不知何故)及其模块代码在特定功能的地方。
(这是我自 2.4 后期或 2.6 早期以来的第一个内核模块,那是很久以前的事了。)
【问题讨论】:
-
我很难在答案部分进行微调。在此之前,您是否可以共享您要使用的设备名称/编号?要回答您的问题,是的,您需要在相应的层中为设备本身编写驱动程序。例如,在 linux/driver/leds/ 中编写 led 驱动程序。由于 led 本身导出类 /sys/class/leds,您可能需要了解 led 核心层并在其之上进行编写。如果我知道设备本身,我将能够具体回答。
标签: c linux linux-kernel kernel-module i2c