第10章 その他のデバイス

10.1. LED

Armadillo-400シリーズのLEDは、LEDクラスとして実装されています。LEDクラスディレクトリ以下のファイルによってLEDの制御を行うことができます。LEDクラスディレクトリとLEDの対応については、表10.1「LEDクラスディレクトリとLEDの対応」を参照してください。

表10.1 LEDクラスディレクトリとLEDの対応

LEDクラスディレクトリ説明
/sys/class/leds/red/LED3 (赤)
/sys/class/leds/green/LED4 (緑)
/sys/class/leds/yellow/LED5 (黄)

10.1.1. LEDを点灯/消灯する

LEDクラスディレクトリ以下のbrightnessファイルへ値を書き込むことによって、LEDの点灯/消灯を行うことができます。brightnessに書き込む有効な値は0~255です。

brightnessに0以外の値を書き込むとLEDが点灯します。Armadillo-400シリーズのLEDには輝度制御の機能が無いため値は意味を持ちません。

[armadillo ~]# echo 1 > /sys/class/leds/yellow/brightness

図10.1 LED5を点灯させる


brightnessに0値を書き込むとLEDが消灯します。

[armadillo ~]# echo 0 > /sys/class/leds/yellow/brightness

図10.2 LED5を消灯させる


brightnessを読み出すとLEDの状態が取得できます。0が消灯、0以外が点灯を表わします。

[armadillo ~]# cat /sys/class/leds/yellow/brightness
0

図10.3 LED5の状態を表示する


10.1.2. トリガを使用する

LEDクラスディレクトリ以下のtriggerファイルへ値を書き込むことによってLEDの点灯/消灯にトリガを設定することができます。triggerに書き込む有効な値は表10.1「LEDクラスディレクトリとLEDの対応」を参照してください。

表10.2 triggerの設定

設定説明
noneトリガを設定しません。
mmc0microSDカードのアクセスランプにします。
timer任意のタイミングで点灯/消灯を行います。この設定にすることにより、LEDクラスディレクトリ以下にdelay_on, delay_offファイルが出現し、それぞれ点灯時間, 消灯時間をミリ秒単位で指定します。
heartbeat心拍のように点灯/消灯を行います。
default-on主にカーネルから使用します。起動時にLEDが点灯します。

以下のコマンドを実行すると、LED3が1秒点灯、500ミリ秒消灯を繰り返します。

[armadillo ~]# echo timer > /sys/class/leds/red/trigger
[armadillo ~]# echo 1000 > /sys/class/leds/red/delay_on
[armadillo ~]# echo 500 > /sys/class/leds/red/delay_off

図10.4 LED3のトリガにtimerを指定する


triggerを読み出すとLEDのトリガが取得できます。[]が付いているものが現在のトリガです。

[armadillo ~]# cat /sys/class/leds/yellow/trigger
[none] mmc0 timer heartbeat default-on

図10.5 LED3のトリガを表示する


10.2. GPIO

Armadillo-400シリーズのGPIOは、GPIOクラスとして実装されています。GPIOクラスディレクトリ以下のファイルによってGPIOの制御を行うことができます。GPIOクラスディレクトリとGPIOの対応については、表10.3「GPIOクラスディレクトリとGPIOの対応」を参照してください。

表10.3 GPIOクラスディレクトリとGPIOの対応

GPIOクラスディレクトリ説明
/sys/class/gpio/CON9_1/CON9 1ピン
/sys/class/gpio/CON9_2/CON9 2ピン
/sys/class/gpio/CON9_11/CON9 11ピン
/sys/class/gpio/CON9_12/CON9 12ピン
/sys/class/gpio/CON9_13/CON9 13ピン
/sys/class/gpio/CON9_14/CON9 14ピン
/sys/class/gpio/CON9_15/CON9 15ピン
/sys/class/gpio/CON9_16/CON9 16ピン
/sys/class/gpio/CON9_17/CON9 17ピン
/sys/class/gpio/CON9_18/CON9 18ピン
/sys/class/gpio/CON9_21/CON9 21ピン
/sys/class/gpio/CON9_22/CON9 22ピン
/sys/class/gpio/CON9_23/CON9 23ピン
/sys/class/gpio/CON9_24/CON9 24ピン
/sys/class/gpio/CON9_25/CON9 25ピン
/sys/class/gpio/CON9_26/CON9 26ピン
/sys/class/gpio/CON9_27/CON9 27ピン
/sys/class/gpio/CON9_28/CON9 28ピン

[警告]

CON14 3 と CON14 4 ピンは linux-2.6.26-at7 (linux-a400-1.00.bin.gz) では デフォルトで GPIO として使用していました。linux-2.6.26-at8 (linux-a400-1.01.bin.gz) 以降では、デフォルトの設定で I2C2 として使用するよう変更されました。CON14 3 と CON14 4 ピンをご利用になる際は、デフォルトの設定が変更されているためご注意ください。

10.2.1. 入出力方向を変更する

GPIOクラスディレクトリ以下のdirectionファイルへ値を書き込むことによって、入出力方向を変更することができます。directionに書き込む有効な値は表10.4「directionの設定」を参照してください。

表10.4 directionの設定

設定説明
high入出力方向をOUTPUTに設定します。入力レベルの取得/設定を行うことができます。入力レベルはHIGHレベルになります。
out入出力方向をOUTPUTに設定します。入力レベルの取得/設定を行うことができます。入力レベルはLOWレベルになります。
lowoutを設定した場合と同じです。
in入出力方向をINPUTに設定します。入力レベルの取得を行うことができますが設定はできません。

10.2.2. 入力レベルを取得する

GPIOクラスディレクトリ以下のvalueファイルへ値を読み出すことによって、入力レベルを取得することができます。0はLOWレベル、1はHIGHレベルを表わします。入力レベルの取得は入出力方向がINPUT, OUTPUTのどちらでも行うことができます。

[armadillo ~]# cat /sys/devices/virtual/gpio/CON9_1/value
0

図10.6 CON9_1の入力レベルを取得する


10.2.3. 入力レベルを設定する

GPIOクラスディレクトリ以下のvalueファイルへ値を書き込むことによって、入力レベルを設定することができます。0はLOWレベル、0以外はHIGHレベルを表わします。入力レベルの設定は入出力方向がOUTPUTでなければ行うことはできません。

[armadillo ~]# echo 1 > /sys/devices/virtual/gpio/CON9_2/value

図10.7 CON9_2の入力レベルを設定する


10.3. RTC

Armadillo-440 液晶モデルは、カレンダ時計 (Real Time Clock) が実装されているため、電源をOFF/ONした場合でも日付と時刻が正しく表示されます。

RTCに日時を設定するためには、まずシステムクロックを設定します。その後に、ハードウェアクロック(RTC)をシステムクロックと一致させる手順となります。

10.3.1. システムクロックをdateで設定する

dateコマンドの引数で渡す時刻のフォーマットは[MMDDhhmmCCYY.ss]となります。以下の例では、2000年1月23日4時56分00秒に設定しています。

[armadillo ~]# date 現在のシステムクロックを表示
[armadillo ~]# date 012304562000.00
[armadillo ~]# date
※システムクロックが正しく設定されているか確認する
      

10.3.2. システムクロックをNTPクライアントで設定する

NTPクライアントを使用してシステムクロックを設定することができます。詳しくは「NTPクライアント」を参照してください。

10.3.3. ハードウェクロックを設定する

[armadillo ~]# hwclock ハードウェアクロックを表示
[armadillo ~]# hwclock --utc --systohc ハードウェアクロックをUTCで設定
[armadillo ~]# hwclock
※ハードウェアクロックが正しく設定されたか確認する