第8章 その他のデバイス

8.1. LED

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

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

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

8.1.1. LEDを点灯/消灯する

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

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

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

図8.1 LED5を点灯させる


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

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

図8.2 LED5を消灯させる


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

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

図8.3 LED5の状態を表示する


8.1.2. トリガを使用する

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

表8.2 triggerの設定

設定説明
noneトリガを設定しません。
mmc0SDカードのアクセスランプにします。
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

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


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

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

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


8.2. GPIO

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

表8.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ピン

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

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

表8.4 directionの設定

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

[ティップ]

起動直後のGPIOの入出力方向は、CONN9_27/28以外はINPUT、CONN9_27/28はOUTPUTに設定されています。CONN9_27/28は、i.MX257内蔵プルアップを使用できないため、他のGPIOとは異なる設定になっています。

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

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

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

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


8.2.3. 出力レベルを設定する

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

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

図8.7 CON9_2の出力レベルを設定する


8.3. RTC

Armadillo-460本体にカレンダ時計(Real Time Clock)が実装されているため、電源を遮断しても一定時間時刻を保持することができます。

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

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

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

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

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

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

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

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