日記/2008-12-13/LED クラスドライバ
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
] [
リンク元
]
開始行:
* LED クラスドライバ [#g223f2a6]
最近の Linux カーネルには LED クラスドライバ(というのか...
もっとも,PC/AT 互換機ではこのドライバで扱えるデバイスは...
** 参考文献 [#vf239fa6]
Linux カーネルソースの linux/Documentation/leds-class.txt...
** HDL-GXR では [#bbb13729]
先日の HDL-GXR 対応パッチでは,LED デバイスとして
- status (STATUS 窓の 緑 LED)
- error (STATUS 窓の 赤 LED)
- eSATA1 (eSATA1 接続中)
- USB1 (USB1 接続中)
- USB2 (USB2 接続中)
を登録してあります.
さらに,
- fan (ファン制御)
- buzzer (ブザー制御)
も,ホントは LED ではないのだけど登録してあります.
というわけで,これらも LED と同じ手順で制御できます.
** いじってみる [#nc40b437]
ユーザランドからは /sys の下のダミーのファイルから制御し...
というわけで,HDL-GXR で実際に見てみます.
# cd /sys/class/leds
# ls -l
合計 0 ...
drwxr-xr-x 2 root root 0 2008-12-13 21:44 USB1 ...
drwxr-xr-x 2 root root 0 2008-12-13 21:44 USB2 ...
drwxr-xr-x 2 root root 0 2008-12-13 21:44 buzzer ...
drwxr-xr-x 2 root root 0 2008-12-13 21:44 eSATA1 ...
drwxr-xr-x 2 root root 0 2008-12-13 21:44 error ...
drwxr-xr-x 2 root root 0 2008-12-13 21:44 fan ...
drwxr-xr-x 2 root root 0 2008-12-13 21:44 status ...
#
確かに登録したデバイスが見えています.
今回は USB1 LED をいじってみましょう.
# cd USB1
# ls -l
合計 0 ...
-rw-r--r-- 1 root root 4096 2008-12-13 22:14 brightness ...
lrwxrwxrwx 1 root root 0 2008-12-13 22:14 device -> ....
/leds-gpio ...
lrwxrwxrwx 1 root root 0 2008-12-13 22:14 subsystem -...
-rw-r--r-- 1 root root 4096 2008-12-13 22:14 trigger ...
-rw-r--r-- 1 root root 4096 2008-12-13 21:44 uevent ...
#
** 手動制御 [#f121da36]
ユーザランドから逐次制御するには brightness ファイルに値...
値は輝度で 0 〜 255 の値を取ります.
が,輝度制御できない LED の場合は 0 で消灯,それ以外は点...
HDL-GXR の LED は輝度制御の機能は無いので,後者の制御パタ...
やってみましょう.
# echo 1 > brightness
USB1 LED が点灯しました.
# echo 0 > brightness
USB1 LED が消灯しました.
** ハートビート [#db01e697]
LED ドライバには,ユーザランドからの手動制御以外にも,カ...
# cat trigger
[none] timer heartbeat default-on
#
ここはディスクの I/O スケジューラと同じようなインターフェ...
- 組み込まれているロジックの名前が表示
- 現在有効のロジック名が [ ] で囲まれている
となっています.
ここでは none (自動制御なし)が有効になっています.
制御ロジックを変更するのも I/O スケジューラと同様に,変更...
つまり,heartbeat ロジックに変更する場合は
# echo heartbeat > trigger
でおっけー.
LED が点滅しだしましたね.
しかし,この点滅パターン,「ピカッピカッ……ピカッピカッ……...
** timer ロジック [#fdc591be]
さて,先ほどの trigger の中身に timer というロジックがあ...
これに切り替えてみましょう.
# echo timer > trigger
…何も起きませんね.LED は消灯したまま.
ところが
# ls -l
合計 0 ...
-rw-r--r-- 1 root root 4096 2008-12-13 22:22 brightness ...
-rw-r--r-- 1 root root 4096 2008-12-13 22:34 delay_off ...
-rw-r--r-- 1 root root 4096 2008-12-13 22:34 delay_on ...
lrwxrwxrwx 1 root root 0 2008-12-13 22:14 device -> ....
/leds-gpio ...
lrwxrwxrwx 1 root root 0 2008-12-13 22:14 subsystem -...
-rw-r--r-- 1 root root 4096 2008-12-13 22:32 trigger ...
-rw-r--r-- 1 root root 4096 2008-12-13 21:44 uevent ...
delay_off と delay_on という 2 つのファイルが突如あらわれ...
ドキュメントによると
- delay_off は消灯時間,delay_on は点灯時間
- 単位はミリ秒
- ここで指定されたパターンで点滅を繰り返す
のだそうです.
やってみましょう.
# echo 1000 > delay_off
# echo 1000 > delay_on
1秒点灯→1秒消灯→…,のパターンで点滅しました.
** その他の制御ロジック [#d9d566ba]
*** default-on [#cb98030e]
ドライバの起動時に on になる,というだけのロジックです.
ユーザランドからの制御では意味がありません.
カーネル側で「ユーザランドからの未制御時は on になって欲...
HDL-GXR では fan の制御で指定しています.
未制御時にファンが止まってたらマズイですね.
ホンモノの LED の場合は power LED なんかに使うのかなぁ?
*** ide-disk [#b41b810b]
IDE HDD のアクセスランプになるらしいですが,HDL-GXR では...
終了行:
* LED クラスドライバ [#g223f2a6]
最近の Linux カーネルには LED クラスドライバ(というのか...
もっとも,PC/AT 互換機ではこのドライバで扱えるデバイスは...
** 参考文献 [#vf239fa6]
Linux カーネルソースの linux/Documentation/leds-class.txt...
** HDL-GXR では [#bbb13729]
先日の HDL-GXR 対応パッチでは,LED デバイスとして
- status (STATUS 窓の 緑 LED)
- error (STATUS 窓の 赤 LED)
- eSATA1 (eSATA1 接続中)
- USB1 (USB1 接続中)
- USB2 (USB2 接続中)
を登録してあります.
さらに,
- fan (ファン制御)
- buzzer (ブザー制御)
も,ホントは LED ではないのだけど登録してあります.
というわけで,これらも LED と同じ手順で制御できます.
** いじってみる [#nc40b437]
ユーザランドからは /sys の下のダミーのファイルから制御し...
というわけで,HDL-GXR で実際に見てみます.
# cd /sys/class/leds
# ls -l
合計 0 ...
drwxr-xr-x 2 root root 0 2008-12-13 21:44 USB1 ...
drwxr-xr-x 2 root root 0 2008-12-13 21:44 USB2 ...
drwxr-xr-x 2 root root 0 2008-12-13 21:44 buzzer ...
drwxr-xr-x 2 root root 0 2008-12-13 21:44 eSATA1 ...
drwxr-xr-x 2 root root 0 2008-12-13 21:44 error ...
drwxr-xr-x 2 root root 0 2008-12-13 21:44 fan ...
drwxr-xr-x 2 root root 0 2008-12-13 21:44 status ...
#
確かに登録したデバイスが見えています.
今回は USB1 LED をいじってみましょう.
# cd USB1
# ls -l
合計 0 ...
-rw-r--r-- 1 root root 4096 2008-12-13 22:14 brightness ...
lrwxrwxrwx 1 root root 0 2008-12-13 22:14 device -> ....
/leds-gpio ...
lrwxrwxrwx 1 root root 0 2008-12-13 22:14 subsystem -...
-rw-r--r-- 1 root root 4096 2008-12-13 22:14 trigger ...
-rw-r--r-- 1 root root 4096 2008-12-13 21:44 uevent ...
#
** 手動制御 [#f121da36]
ユーザランドから逐次制御するには brightness ファイルに値...
値は輝度で 0 〜 255 の値を取ります.
が,輝度制御できない LED の場合は 0 で消灯,それ以外は点...
HDL-GXR の LED は輝度制御の機能は無いので,後者の制御パタ...
やってみましょう.
# echo 1 > brightness
USB1 LED が点灯しました.
# echo 0 > brightness
USB1 LED が消灯しました.
** ハートビート [#db01e697]
LED ドライバには,ユーザランドからの手動制御以外にも,カ...
# cat trigger
[none] timer heartbeat default-on
#
ここはディスクの I/O スケジューラと同じようなインターフェ...
- 組み込まれているロジックの名前が表示
- 現在有効のロジック名が [ ] で囲まれている
となっています.
ここでは none (自動制御なし)が有効になっています.
制御ロジックを変更するのも I/O スケジューラと同様に,変更...
つまり,heartbeat ロジックに変更する場合は
# echo heartbeat > trigger
でおっけー.
LED が点滅しだしましたね.
しかし,この点滅パターン,「ピカッピカッ……ピカッピカッ……...
** timer ロジック [#fdc591be]
さて,先ほどの trigger の中身に timer というロジックがあ...
これに切り替えてみましょう.
# echo timer > trigger
…何も起きませんね.LED は消灯したまま.
ところが
# ls -l
合計 0 ...
-rw-r--r-- 1 root root 4096 2008-12-13 22:22 brightness ...
-rw-r--r-- 1 root root 4096 2008-12-13 22:34 delay_off ...
-rw-r--r-- 1 root root 4096 2008-12-13 22:34 delay_on ...
lrwxrwxrwx 1 root root 0 2008-12-13 22:14 device -> ....
/leds-gpio ...
lrwxrwxrwx 1 root root 0 2008-12-13 22:14 subsystem -...
-rw-r--r-- 1 root root 4096 2008-12-13 22:32 trigger ...
-rw-r--r-- 1 root root 4096 2008-12-13 21:44 uevent ...
delay_off と delay_on という 2 つのファイルが突如あらわれ...
ドキュメントによると
- delay_off は消灯時間,delay_on は点灯時間
- 単位はミリ秒
- ここで指定されたパターンで点滅を繰り返す
のだそうです.
やってみましょう.
# echo 1000 > delay_off
# echo 1000 > delay_on
1秒点灯→1秒消灯→…,のパターンで点滅しました.
** その他の制御ロジック [#d9d566ba]
*** default-on [#cb98030e]
ドライバの起動時に on になる,というだけのロジックです.
ユーザランドからの制御では意味がありません.
カーネル側で「ユーザランドからの未制御時は on になって欲...
HDL-GXR では fan の制御で指定しています.
未制御時にファンが止まってたらマズイですね.
ホンモノの LED の場合は power LED なんかに使うのかなぁ?
*** ide-disk [#b41b810b]
IDE HDD のアクセスランプになるらしいですが,HDL-GXR では...
ページ名:
-->