簡體   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