如何在设备树中定义继电器
How to define a relay in a device tree
我有一块电路板,SoC 运行 Linux 5+,带有继电器。继电器由 GPIO 触发。我正在寻找一种在设备树文件中定义中继的好方法。
我将 LED 定义为
led {
compatible = "gpio-leds";
debug {
label = "debug";
gpios = ...
default-state = "off";
};
};
这导致
# ls /sys/class/leds/
debug
我希望中继是类似的东西,例如
# ls /sys/class/{relays,outputs,gpios}/
relay1
实现此目的的好方法是什么?
由于中继的行为与 GPIO 输出(或更准确地说是 GPO)一样简单,因此您只需为相应的线路命名即可。可以通过在 ACPI 或设备树中分配 GPIO 控制器的 gpio-line-names
属性 来完成。使用 libgpiod
工具(例如 gpiofind
、gpioinfo
),通过字符设备节点访问 GPIO 控制器,您可以找到您的线路并对其进行操作。请注意,GPIO sysfs 接口已弃用,它将在 ~5 年左右的时间内从内核中删除。
我有一块电路板,SoC 运行 Linux 5+,带有继电器。继电器由 GPIO 触发。我正在寻找一种在设备树文件中定义中继的好方法。
我将 LED 定义为
led {
compatible = "gpio-leds";
debug {
label = "debug";
gpios = ...
default-state = "off";
};
};
这导致
# ls /sys/class/leds/
debug
我希望中继是类似的东西,例如
# ls /sys/class/{relays,outputs,gpios}/
relay1
实现此目的的好方法是什么?
由于中继的行为与 GPIO 输出(或更准确地说是 GPO)一样简单,因此您只需为相应的线路命名即可。可以通过在 ACPI 或设备树中分配 GPIO 控制器的 gpio-line-names
属性 来完成。使用 libgpiod
工具(例如 gpiofind
、gpioinfo
),通过字符设备节点访问 GPIO 控制器,您可以找到您的线路并对其进行操作。请注意,GPIO sysfs 接口已弃用,它将在 ~5 年左右的时间内从内核中删除。