【发布时间】:2019-10-23 16:43:32
【问题描述】:
我正在尝试编写一个自定义系统调用处理程序来操作 BeagleBone Black 板上的 LED。我已经浏览了内核 LED API (include/leds.h),但我找不到任何可以让我处理可用 LED 设备或其他一些机制来操作(开/关/切换)它们的东西。大多数函数似乎都需要一个 led_classdev 对象,但我找不到获得它的方法。
我可以使用 /sys/class/leds/... 接口从用户空间执行此操作。但我想从内核空间做类似的事情。我愿意对任何特定于 BeagleBone Black 的设备名称进行硬编码,因为可移植性不是问题。
【问题讨论】:
-
您要解决什么问题?为什么不能从用户空间使用 gpio inrerface 执行此操作?
-
这主要是一个学术练习。由于进行自定义系统调用,我需要操纵 LED。内核空间中的系统调用处理函数,因此需要访问 LED。
-
这个leds gpio连接了吗?
-
是的。内核已经使用 gpio/LED 进行了配置(不是由我配置的),因此它们可以在 /sys/class/leds/beaglebone\:green\:usr[0-3]/ 下使用。
-
实例化 LED 的驱动程序是它们的所有者。如果您想成为所有者,则必须实例化 LED。 Dirty hack 是在内核中打开 sysfs 文件(永远不要这样做!)。
标签: linux linux-kernel embedded-linux beagleboneblack led