繁体   English   中英

如何从 kernel 代码(BeagleBone Black)访问或枚举可用的 LED?

[英]How can I access or enumerate available LEDs from kernel code (BeagleBone Black)?

我正在尝试编写一个自定义系统调用处理程序来操作 BeagleBone Black 板上的 LED。 我已经浏览了 kernel LED API(include/leds.h),但我找不到任何可以让我处理可用 LED 设备或其他一些机制来操纵(开/关/切换)它们的东西。 大多数功能似乎都需要一个 led_classdev object,但我找不到获得它的方法。

我可以使用 /sys/class/leds/... 接口从用户空间执行此操作。 但我想从 kernel 空间做类似的事情。 我愿意对任何特定于 BeagleBone Black 的设备名称进行硬编码,因为可移植性不是问题。

我想出了一种从 kernel 空间访问/控制 LED 的方法 - 通过创建自定义 LED 触发器。 它没有提供枚举可用设备的方法,并且需要通过写入 /sys/class/leds/foo/trigger 从用户空间为 LED 分配自定义触发器。 但是,一旦分配了触发器,它就可以让您从 kernel 代码中操作 LED。

struct led_trigger *trigger;
...
led_trigger_register_simple("myled", &trigger); //create and register the trigger
...
//assign the trigger "myled" to the desired LED(s) from user-space
//by writing to the corresponding trigger files in /sys/class/leds/foo/
...
led_trigger_event(trigger, LED_FULL); //turn-on the LED(s) connected to the trigger
led_trigger_event(trigger, LED_OFF);  //turn-off

例如,触发器的创建和注册可以在模块 init 中完成。 此外,如果需要独立操作多个 LED,那么据我所知,需要为每个 LED 创建单独的触发器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM