第6章 動作確認方法

6.1. ネットワーク

ここでは、ネットワークの設定方法やネットワークを利用するアプリケーションについて説明します。

6.1.1. デフォルト状態のネットワーク設定

ネットワーク設定は、/etc/config/interfacesに記述されています。デフォルト状態では、次のように設定されています。

表6.1 デフォルト状態のネットワーク設定

インターフェース種類設定起動時に有効化
loTCP/IPループバック有効
eth0TCP/IPDHCP有効
usb0TCP/IP手動無効

# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

auto lo eth0
iface lo inet loopback
iface eth0 inet dhcp
iface usb0 inet manual
	up ifconfig usb0 up
	post-up zcip usb0 /etc/zcip.script > /dev/null
	down ifconfig usb0 down

図6.1 デフォルト状態の/etc/config/interfaces


[ティップ]

usb0はUSBガジェットで利用することを想定した設定です。

6.1.2. ネットワークの有効化、無効化

有効化されていないインターフェースや一度無効化したインターフェースを再度有効化するには、以下のコマンドを使います。

[armadillo ~]# ifup eth0

図6.2 ネットワークインターフェース(eth0)の有効化


有効化されているインターフェースを無効化するには、以下のコマンドを使います。設定を変更する前には、かならず無効化してください。

[armadillo ~]# ifdown eth0

図6.3 ネットワークインターフェース(eth0)の無効化


コマンドの eth0 を usb0 など他のインターフェース名に変更することで、指定したインターフェースの操作をすることが可能です。

6.1.3. ネットワーク設定の変更方法

Armadilloのネットワーク設定の変更方法について説明します。

[警告]

ネットワーク接続に関する不明な点については、ネットワークの管理者へ相談してください。

Armadillo上の「/etc/config」以下にあるファイルを編集し、コンフィグ領域に保存することにより起動時のネットワーク設定を変更することができます。コンフィグ領域の保存については、7章コンフィグ領域 − 設定ファイルの保存領域を参照してください。

[注記]

設定を変更する場合は、かならずネットワークを無効化してから行ってください。変更してからネットワークを無効化しても、「新しい設定」を無効化することになります。「古い設定」が無効化されるわけではありません。

6.1.3.1. 固定IPアドレスに設定する

表6.2「固定IPアドレス設定例」に示す内容に設定変更するには、viエディタで/etc/config/interfacesを、図6.4「固定IPアドレス設定」のように編集します。

表6.2 固定IPアドレス設定例

項目設定
IPアドレス192.168.10.10
ネットマスク255.255.255.0
ネットワークアドレス192.168.10.0
ブロードキャストアドレス192.168.10.255
デフォルトゲートウェイ192.168.10.1

[armadillo ~]# vi /etc/config/interfaces
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

auto lo eth0
iface lo inet loopback
iface eth0 inet static
	address 192.168.10.10
	netmask 255.255.255.0
	network 192.168.10.0
	broadcast 192.168.10.255
	gateway 192.168.10.1
iface usb0 inet manual
	up ifconfig usb0 up
	post-up zcip usb0 /etc/zcip.script > /dev/null
	down ifconfig usb0 down

図6.4 固定IPアドレス設定


6.1.3.2. DHCPに設定する

DHCPに設定するには、viエディタで/etc/config/interfacesを、次のように編集します。

[armadillo ~]# vi /etc/config/interfaces
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

auto lo eth0
iface lo inet loopback
iface eth0 inet dhcp
iface usb0 inet manual
	up ifconfig usb0 up
	post-up zcip usb0 /etc/zcip.script > /dev/null
	down ifconfig usb0 down

図6.5 DHCP設定


6.1.3.3. DNSサーバーを指定する

DNSサーバーを指定する場合は、viエディタで/etc/config/resolv.confを編集します。

[armadillo ~]# vi /etc/config/resolv.conf
nameserver 192.168.10.1

図6.6 DNSサーバーの設定


[ティップ]

DHCPを利用している場合には、DHCPサーバーがDNSサーバーを通知する場合があります。この場合、/etc/config/resolv.confは自動的に更新されます。

6.1.4. 接続を確認する

ここでは、変更したIP設定で正常に通信が可能か確認します。設定を変更した後は、かならず変更したインターフェースを再度有効化してください。

同じネットワーク内にある通信機器とPING通信を行います。下記の例では、通信機器が「192.168.10.20」というIPアドレスを持っていると想定しています。

[armadillo ~]# ping 192.168.10.20

図6.7 PING確認


6.1.5. ファイアーウォール

Armadilloでは、簡易ファイアーウォールが動作しています。設定されている内容を参照するには、図6.8「iptables」のようにコマンド実行してください。

[armadillo ~]# iptables --list

図6.8 iptables


6.1.6. ネットワークアプリケーション

工場出荷イメージで利用することができるネットワークアプリケーションについて説明します。

[注記]

ATDEとArmadilloのネットワーク設定がデフォルト状態であることを想定して記述しています。ネットワーク設定を変更している場合は適宜読み換えてください。

6.1.6.1. TELNET

ATDEなどのPCからネットワーク経由でログインし、リモート操作することができます。ログイン可能なユーザを次に示します。

表6.3 TELNETでログイン可能なユーザ

ユーザ名パスワード
guest(なし)

TELNETを使用してATDEからArmadilloにリモートログインする場合の例を、次に示します。

[ATDE ~]$ telnet 192.168.10.10  1
Trying 192.168.10.10...
Connected to 192.168.10.10.
Escape character is '^]'.

atmark-dist v1.32.0 (AtmarkTechno/Armadillo-840)
Linux 3.4-at4 [armv7l arch]

armadillo840-0 login: guest 2
[guest@armadillo ~]$
[guest@armadillo ~]$ su 3
Password:  4
[root@armadillo ~]#
[root@armadillo ~]# exit 5
[guest@armadillo ~]$ exit 6
Connection closed by foreign host.
[ATDE ~]$ 

1

telnetの引数にArmadilloのIPアドレスを指定します。

2

"guest"と入力するとログインすることができます。パスワードの入力は不要です。

3

特権ユーザーとなる場合には"su"コマンドを実行します。

4

特権ユーザーのデフォルトパスワードは"root"です。

5

特権トユーザーからguestユーザーに戻る場合は、"exit"と入力します

6

telnetを終了するにはもう一度"exit"を入力します

図6.9 telnetでリモートログイン


6.1.6.2. FTP

ATDEなどのPCからネットワーク経由でファイル転送することができます。次に示すユーザでログインすることができます。

表6.4 ftpでログイン可能なユーザ

ユーザ名パスワード
ftp(なし)

ftpを使用してATDEからArmadilloにファイルを転送する場合の例を、次に示します。

[ATDE ~]$ ls -l file
-rw-r--r-- 1 atmark atmark 1048576 Jan 1 12:00 file
[ATDE ~]$ ftp 192.168.10.10  1
Connected to 192.168.10.10.
220 localhost FTP server (GNU inetutils 1.4.1) ready.
Name (192.168.10.10:atmark): ftp
331 Guest login ok, type your name as password.
Password: 2
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub 3
250 CWD command successful.
ftp> put file 4
local: file remote: file
200 PORT command sucessful.
150 Opening BINARY mode data connection for 'file'.
226 Transfer complete.
1048576 bytes sent in 0.14 secs (7399.5 kB/s)
ftp> quit 5
221 Goodbye.
[ATDE ~]$ 

1

ftpの引数にArmadilloのIPアドレスを指定します。

2

ftpユーザにパスワードが設定されていないためEnterキーを入力します。

3

ファイル転送することができるpubディレクトリに移動します。

4

ファイルをアップロードします。ダウンロードする場合は"get"コマンドを使用します。

5

ftpを終了する場合は"quit"と入力します。

図6.10 ftpでファイル転送


ATDEからArmadilloにファイルをアップロードすると、/home/ftp/pub/ディレクトリ以下にファイルが作成されています。ダウンロードする場合も、同じディレクトリにファイルを配置してください。

[armadillo ~]# cd /home/ftp/pub/
[armadillo /home/ftp/pub]# ls
file

図6.11 Armadillo上でアップロードされたファイルを確認


6.1.6.3. HTTPサーバー

Armadilloでは、HTTPサーバーが動作しています。ATDEなどのPCのWebブラウザからArmadilloのURL (http://[ArmadilloのIPアドレス]/ [9] または、http://armadillo840-0.local/)にアクセスすると、Armadilloのトップページ(index.html)が表示されます。

Armadilloトップページ

図6.12 Armadilloトップページ


6.2. ビデオ

Armadillo-840は画面出力インターフェースを搭載しています。 これらのインターフェースは、フレームバッファデバイス(fb)として扱うことができます。

次に、標準状態で利用可能なフレームバッファデバイスを示します。

フレームバッファデバイス - /dev/fb0

HDMIインターフェース(Armadillo-840: CON3)
解像度: 1920 x 1080[10]
カラーフォーマット: ARGB8888 (32bit)

フレームバッファデバイス - /dev/fb1

LCDインターフェース(拡張ボード01: CON2)
解像度: 800 x 480
カラーフォーマット: ARGB8888 (32bit)

6.2.1. フレームバッファデバイスにテスト画像を出力

上述した利用可能なフレームバッファデバイスに、テスト画像を出力する方法について説明します。 ここでは、テスト画像を生成するためにGStreamerの「videotestsrc」を利用します。

GStreamerのテスト画像

図6.13 GStreamerのテスト画像


次のようにコマンドを実行するとテスト画像が表示されます。

[armadillo ~]# gst-launch videotestsrc ! \
                          "video/x-raw-rgb,width=1920,height=1080" ! \ 1
                          fbdevsink device=/dev/fb0 2

  注) 本来は一行のコマンドとして実行します。

1

width, heightパラメータには、画面の解像度を指定します。

2

deviceパラメータには、出力するフレームバッファデバイスを指定します。

図6.14 テスト画像を表示するコマンド


[注記]

フレームバッファデバイスの解像度がわからない場合、次のようにfbsetコマンドを用いると現在設定されている解像度を表示することができます。

[armadillo ~]# fbset -fb /dev/fb0

mode "1920x1080-30"
        # D: 74.250 MHz, H: 33.750 kHz, V: 30.027 Hz
        geometry 1920 1080 1920 2160 32
        timings 13468 148 88 30 4 44 10
        accel false
        rgba 8/16,8/8,8/0,8/24
endmode

6.2.2. HDMI - フレームバッファデバイス /dev/fb0

Armadillo-840の標準状態では、デフォルトアプリケーションが自動的に起動されるようになっています。 このデフォルトアプリケーションは、フレームバッファデバイス /dev/fb0 に描画を行います。 そのため、HDMIインターフェース(Armadillo-840: CON3)にHDMI対応ディスプレイ(本節では単に「ディスプレイ」と称します) を接続しArmadillo-840を起動した場合には、次のような画面が表示されます。

自動起動されるデフォルトアプリケーション画面

図6.15 自動起動されるデフォルトアプリケーション画面


このデフォルトアプリケーションは、Qtを利用して作成された「Photo Viewer」というデモアプリケーションです。 指定したキーワードに対応する写真を「Flickr」という写真共有サイトから取得します。 スタックされた写真をクリックすると、指定したキーワードの写真が画面に広がります。 インターネットに繋がっていない場合にはデータを取得できないため、 図6.15「自動起動されるデフォルトアプリケーション画面」のように写真を表示することができません。 ネットワークの設定については、「ネットワーク」を確認してください。

[注記]

Armadillo-840では、ディスプレイによって自動的にビデオモードを変更する機能が搭載されています。 この機能によりフレームバッファデバイス /dev/fb0 の解像度は、 Armadillo-840とディスプレイがサポートできる最大の解像度に設定されます。 ディスプレイが接続されていない場合は、フレームバッファデバイスの解像度は FullHD (1920 x 1080 px)に設定されます。 Armadillo-840を起動した後に、FullHDに対応していないディスプレイを接続すると、 デフォルトアプリケーションが認識している解像度とフレームバッファデバイスに設定されている解像度が異なる場合があり、 正常に画面が表示できなくなることがあります。

正常に画面が表示されない場合は、デフォルトアプリケーション「Photo Viewer」を再起動させると解決することがあります。 以下のようにコマンドを実行すると、アプリケーションを再起動させることができます。

[armadillo ~]# killall qmlscene
[armadillo ~]# /etc/config/rc.local
Starting photoviewer: done
[ティップ]

利用するディスプレイによっては、ビデオモードの自動設定が完了した後であっても画像が表示されない場合があります。 これは、ディスプレイが持つ表示可能なビデオモードをArmadillo-840が再現できない場合があるためです。

画像が表示されない場合は、次のように該当箇所を変更してください。特定ビデオモードに対する排他処理機能を利用して、表示されないビデオモードを排除することができます。

[armadillo ~]# vi /etc/config/configure-fbmode.sh
PARAM=$3

MUST_VMODE_CHANGE=y
IGNORE_MODE_1='1920x1080p-60'
IGNORE_MODE_2='U:'  1

fbmode_reconfigure() {
    # p_: path
    # s_: strings

1

'U:'が含まれるビデオモードを排他します。

変更後、次回起動時に設定が反映されるようにコンフィグ領域を保存します。

[armadillo ~]# flatfsd -s

6.2.3. LCD - フレームバッファデバイス /dev/fb1

Armadillo-840の標準状態では、LCDインターフェース(拡張ボード01: CON2)に対応するフレームバッファデバイス /dev/fb1 へ描画を行うアプリケーションが自動起動するように設定されていないため、LCDの画面は黒一色となります。

画面の出力を確認する場合は、「フレームバッファデバイスにテスト画像を出力」にも記載されている、次のようなコマンドを実行してください。

[armadillo ~]# gst-launch videotestsrc ! \
                          "video/x-raw-rgb,width=800,height=480" ! \
                          fbdevsink device=/dev/fb1

図6.16 LCDにテスト画像を表示するコマンド


6.2.3.1. バックライトの輝度調整

拡張ボード01に搭載されたLCDのバックライトは、ソフトウェアで輝度を調整することができます。

LCDのバックライトは、バックライトクラスとして実装されています。 バックライトの輝度を変更するには、/sys/class/backlight/pwm-backlight.0/ディレクトリ以下の次の表に示すsysfsファイルを使用します。

表6.5 輝度設定に使用するsysfsファイル

ファイル説明
brightness0(消灯) 〜 max_brightness(最高輝度)までの数値を書き込むことで輝度を変更することができます。
max_brightnessbrightnessに書きこむ数値の最大値(最高輝度 = 255)が読み出せます。

次に、バックライトの輝度を調整する場合のコマンド例を示します。

最高輝度を取得する
[armadillo ~]# cat /sys/class/backlight/pwm-backlight.0/max_brightness
255
消灯させる
[armadillo ~]# echo 0 > /sys/class/backlight/pwm-backlight.0/brightness
任意の輝度に変更する (ここでは 128 に設定)
[armadillo ~]# echo 128 > /sys/class/backlight/pwm-backlight.0/brightness

6.3. オーディオ

ここでは、サウンドの再生および録音の方法について説明します。

Linuxでオーディオ機能を実現するには、ALSA[11]とOSS[12]の2つの方法があります。デフォルト設定では、ALSA によるオーディオ機能を提供しています。

利用可能なALSA デバイスを次に示します。

ALSAデバイス - hw:0

HDMIオーディオインターフェース(Armadillo-840: CON3)
サンプリング周波数: 48k Hz
チャンネル数: 2
フォーマット: Signed 16/24 bit, Little-endian

ALSAデバイス - hw:1

モノラルマイク入力インターフェース(拡張ボード01: CON5)
ステレオヘッドホン出力インターフェース(拡張ボード01: CON6)
サンプリング周波数: 48k, 44.1k, 32k, 16k, 8k Hz
チャンネル数: 1 or 2
フォーマット: Signed 16/24 bit, Little-endian

6.3.1. サウンドを再生する

ここでは、テストサウンドを再生する方法を示します。 テストサウンドには、Gstreamerの「audiotestsrc」を利用します。

次のようにコマンドを実行すると、ALSAデバイスに対応するオーディオ出力から正弦波(440Hz)の音が再生されます。

[armadillo ~]# gst-launch audiotestsrc ! \
                          "audio/x-raw-int,channels=2,rate=48000,width=16" ! \ 1
                          alsasink device=hw:0 2

  注) 本来は一行のコマンドとして実行します。

1

rateパラメータには、サンプリング周波数を指定します。

2

deviceパラメータには、ALSAデバイスを指定します。

図6.17 テストサウンドの再生


6.3.2. サウンドを録音する

モノラルマイク入力(拡張ボード01: CON5)に接続されたマイクから入力された音声を録音する方法を示します。 ここでは、WAV (RIFF waveform Audio Format)ファイル形式で録音する例を示します。

[armadillo ~]# gst-launch alsasrc device=hw:1 ! \ 1
                          wavenc ! \ 2
                          filesink location=sample.wav 3

  注) 本来は一行のコマンドとして実行します。

1

deviceパラメータには、ALSAデバイスを指定します。

2

ソフトウェアエンコーダに「wavenc」を指定します。他のエンコーダを指定することも可能です。

3

locationパラメータには、保存するファイル名を指定します。

図6.18 サウンドの録音


録音したファイルを再生するには、次のようにコマンドを実行します。 ここでは、ステレオヘッドホン出力(拡張ボード01: CON6) hw:1に出力するように指定しています。

[armadillo ~]# gst-launch filesrc location=sample.wav ! \
                          wavparse ! \
                          alsasink device=hw:1

図6.19 録音したファイルを再生


6.4. ストレージ

Armadillo-840でストレージとして使用可能なデバイスを次に示します。

表6.6 ストレージデバイス

デバイス種類ディスクデバイス先頭パーティション
USBフラッシュメモリ/dev/sd*[a]/dev/sd*1
SD/SDHC/SDXCカード/dev/mmcblk*[b]/dev/mmcblk*p1

[a] USBハブを利用して複数のUSBメモリを接続した場合は、認識された順に sda sdb sdc ... となります。

[b] 拡張ボード01を接続して2つのSD/SDHC/SDXCカードを接続した場合は、認識された順に mmcblk0 mmcblk1 となります。


6.4.1. ストレージの使用方法

ここでは、SDHCカードを例にストレージの使用方法を説明します。以降の説明では、共通の操作が可能な場合に、SD/SDHC/SDXCカードをSDカードと表記します。

[ティップ]

SDXCカードを使用する場合は、事前に「ストレージのパーティション変更とフォーマット」を参照してフォーマットを行う必要があります。これは、LinuxカーネルがexFATファイルシステムを扱うことができないためです。通常、購入したばかりのSDXCカードはexFATファイルシステムでフォーマットされています。

Linuxでは、アクセス可能なファイルやディレクトリは、一つの木構造にまとめられています。あるストレージデバイスのファイルシステムを、この木構造に追加することを、マウントするといいます。マウントを行うコマンドは、mountです。

mountコマンドの典型的なフォーマットは、次の通りです。

mount -t fstype device dir

図6.20 mountコマンド書式


-t オプションに続くdeviceには、ファイルシステムタイプを指定します[13]。FAT32ファイルシステムの場合はvfat[14]、EXT3ファイルシステムの場合はext3を指定します。

deviceには、ストレージデバイスのデバイスファイル名を指定します。SDカードのパーティション1の場合は/dev/mmcblk0p1、パーティション2の場合は/dev/mmcblk0p2となります。

dirには、ストレージデバイスのファイルシステムをマウントするディレクトリを指定します。

SDスロットにSDHCカードを挿入した状態で図6.21「ストレージのマウント」に示すコマンドを実行すると、/mntディレクトリにSDHCカードのファイルシステムをマウントします。SDカード内のファイルは、/mntディレクトリ以下に見えるようになります。

[armadillo ~]# mount -t vfat /dev/mmcblk0p1 /mnt

図6.21 ストレージのマウント


[注記]

FAT32ファイルシステムをマウントした場合、次の警告メッセージが表示される場合があります。

FAT-fs (mmcblk0p1): utf8 is not a recommended IO charset for
FAT filesystems, filesystem will be case sensitive!

これは無視して構いません。 UTF-8 ロケールでは結局はファイル名の表示を正しく処理できないためです。

ストレージを安全に取り外すには、アンマウントする必要があります。アンマウントを行うコマンドは、umountです。オプションとして、アンマウントしたいデバイスがマウントされているディレクトリを指定します。

[armadillo ~]# umount /mnt

図6.22 ストレージのアンマウント


6.4.2. ストレージのパーティション変更とフォーマット

通常、購入したばかりのSDHCカードやUSBメモリは、一つのパーティションを持ち、FAT32ファイルシステムでフォーマットされています。

パーティション構成を変更したい場合、fdiskコマンドを使用します。fdiskコマンドの使用例として、一つのパーティションで構成されているSDカードのパーティションを、2つに分割する例を図6.23「fdiskコマンドによるパーティション変更」に示します。一度、既存のパーティションを削除してから、新たにプライマリパーティションを二つ作成しています。先頭のパーティションには100MByte、二つめのパーティションに残りの容量を割り当てています。先頭のパーティションは/dev/mmcblk0p1、二つめは/dev/mmcblk0p2となります。fdiskコマンドの詳細な使い方は、manページ等を参照してください。

[armadillo ~]# fdisk /dev/mmcblk0

The number of cylinders for this disk is set to 62528.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): d
Selected partition 1

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-62528, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-62528, default 62528): +100M

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (3054-62528, default 3054):
Using default value 3054
Last cylinder or +size or +sizeM or +sizeK (3054-62528, default 62528):
Using default value 62528

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
 mmcblk0: p1 p2
 mmcblk0: p1 p2
Syncing disks.

図6.23 fdiskコマンドによるパーティション変更


FAT32ファイルシステムでストレージデバイスをフォーマットするには、mkfs.vfatコマンドを使用します。また、EXT2やEXT3ファイルシステムでフォーマットするには、mke2fsコマンドを使用します。SDカードのパーティション1をEXT3ファイルシステムでフォーマットするコマンド例を、次に示します。

[armadillo ~]# mke2fs -j /dev/mmcblk0p1

図6.24 EXT3ファイルシステムの構築


6.5. LED

Armadillo-840のLEDは、GPIOが接続されているためソフトウェアで制御することができます。 利用しているデバイスドライバはLEDクラスとして実装されているため、 LEDクラスディレクトリ以下のファイルによってLEDの制御を行うことができます。 LEDクラスディレクトリと各LEDの対応を次に示します。

表6.7 LED - Armadillo-840

LEDクラスディレクトリ説明デフォルトトリガ
/sys/class/leds/LED1/Armadillo-840: LED1none
/sys/class/leds/LED2/Armadillo-840: LED2none

表6.8 LED - 拡張ボード01

LEDクラスディレクトリ説明デフォルトトリガ
/sys/class/leds/EXT1/拡張ボード01: LED1none
/sys/class/leds/EXT2/拡張ボード01: LED2none
/sys/class/leds/EXT3/拡張ボード01: LED3none
/sys/class/leds/EXT4/拡張ボード01: LED4none
/sys/class/leds/EXT5/拡張ボード01: LED5none
/sys/class/leds/EXT6/拡張ボード01: LED6none

以降の説明では、任意のLEDを示すLEDクラスディレクトリを"/sys/class/leds/[LED]"のように表記します。

6.5.1. LEDを点灯/消灯する

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

brightnessに0以外の値を書き込むとLEDが点灯します。

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

図6.25 LEDを点灯させる


[ティップ]

Armadillo-840のLEDには輝度制御の機能が無いため、0 (消灯)、1〜255 (点灯)の2つの状態のみ指定することができます。

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

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

図6.26 LEDを消灯させる


brightnessを読み出すとLEDの状態が取得できます。

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

図6.27 LEDの状態を表示する


6.5.2. トリガを使用する

LEDクラスディレクトリ以下のtriggerファイルへ値を書き込むことによってLEDの点灯/消灯にトリガを設定することができます。triggerに書き込む有効な値を次に示します。

表6.9 triggerの種類

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

[a] カーネルコンフィギュレーションで該当トリガを有効にすると設定可能になります。


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

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

図6.28 LEDのトリガにtimerを指定する


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

[armadillo ~]# cat /sys/class/leds/[LED]/trigger
[none] mmc0 timer

図6.29 LEDのトリガを表示する


6.6. RTC

Armadillo-840には、カレンダ時計(Real Time Clock)が実装されています。電源を切断しても一定時間(平均300秒間、最小60秒間)時刻を保持することができます

電源が切断されても長時間時刻を保持させたい場合は、RTC外部バックアップ用電源入力インターフェース(Armadillo-840: CON12)に外付けバッテリー(対応バッテリー例: CR2032 WK11)[15]を接続することができます。

6.6.1. RTCに時刻を設定する

Linuxの時刻には、Linuxカーネルが管理するシステムクロックと、RTCが管理するハードウェアクロックの2種類があります。RTCに時刻を設定するためには、まずシステムクロックを設定します。その後に、ハードウェアクロックをシステムクロックと一致させる手順となります。

システムクロックは、dateコマンドを用いて設定します。dateコマンドの引数には、設定する時刻を[MMDDhhmmCCYY.ss]というフォーマットで指定します。時刻フォーマットの各フィールドの意味を次に示します。

表6.10 時刻フォーマットのフィールド

フィールド意味
MM
DD日(月内通算)
hh
mm
CC年の最初の2桁(省略可)
YY年の最後の2桁(省略可)
ss秒(省略可)

2013年1月23日4時56分00秒に設定する例を次に示します。

[armadillo ~]# date 1
Sat Jan  1 09:00:00 JST 2000
[armadillo ~]# date 012304562013.00 2
Wed Jan 23 04:56:00 JST 2013
[armadillo ~]# date 3
Wed Jan 23 04:56:00 JST 2013

1

現在のシステムクロックを表示します。

2

システムクロックを設定します。

3

システムクロックが正しく設定されていることを確認します。

図6.30 システムクロックを設定


システムクロックを設定後、ハードウェアクロックをhwclockコマンドを用いて設定します。

[armadillo ~]# hwclock 1
Sat Jan  1 00:00:00 2000  0.000000 seconds
[armadillo ~]# hwclock --utc --systohc 2
[armadillo ~]# hwclock --utc 3
Wed Jan 23 04:56:10 2013  0.000000 seconds

1

現在のハードウェアクロックを表示します。

2

ハードウェアクロックを協定世界時(UTC)で設定します。

3

ハードウェアクロックがUTCで正しく設定されていることを確認します。

図6.31 ハードウェアクロックを設定


6.7. GPIO

Armadillo-840のGPIOは、generic GPIOとして実装されています。GPIOクラスディレクトリ以下のファイルによってGPIOの制御を行うことができます。GPIOクラスディレクトリとGPIOの対応を次に示します。

表6.11 拡張インターフェース1(Armadillo-840: CON7)のGPIOディレクトリ

ピン番号GPIOディレクトリ
CON7 2ピン/sys/class/gpio/gpio195
CON7 3ピン/sys/class/gpio/gpio196
CON7 4ピン/sys/class/gpio/gpio23
CON7 5ピン/sys/class/gpio/gpio21
CON7 6ピン/sys/class/gpio/gpio160
CON7 7ピン/sys/class/gpio/gpio197
CON7 8ピン/sys/class/gpio/gpio198
CON7 9ピン/sys/class/gpio/gpio194
CON7 10ピン/sys/class/gpio/gpio193
CON7 12ピン/sys/class/gpio/gpio62
CON7 13ピン/sys/class/gpio/gpio63
CON7 14ピン/sys/class/gpio/gpio64
CON7 15ピン/sys/class/gpio/gpio65
CON7 16ピン/sys/class/gpio/gpio61
CON7 17ピン/sys/class/gpio/gpio165
CON7 18ピン/sys/class/gpio/gpio164
CON7 19ピン/sys/class/gpio/gpio202
CON7 20ピン/sys/class/gpio/gpio102
CON7 21ピン/sys/class/gpio/gpio59
CON7 22ピン/sys/class/gpio/gpio60
CON7 25ピン/sys/class/gpio/gpio172
CON7 26ピン/sys/class/gpio/gpio173
CON7 27ピン/sys/class/gpio/gpio4
CON7 28ピン/sys/class/gpio/gpio3
CON7 29ピン/sys/class/gpio/gpio2
CON7 30ピン/sys/class/gpio/gpio0
CON7 31ピン/sys/class/gpio/gpio1
CON7 33ピン/sys/class/gpio/gpio66
CON7 34ピン/sys/class/gpio/gpio67
CON7 35ピン/sys/class/gpio/gpio68
CON7 36ピン/sys/class/gpio/gpio69
CON7 37ピン/sys/class/gpio/gpio70
CON7 38ピン/sys/class/gpio/gpio71
CON7 39ピン/sys/class/gpio/gpio72
CON7 40ピン/sys/class/gpio/gpio73
CON7 41ピン/sys/class/gpio/gpio74
CON7 42ピン/sys/class/gpio/gpio75
CON7 43ピン/sys/class/gpio/gpio97
CON7 44ピン/sys/class/gpio/gpio98
CON7 45ピン/sys/class/gpio/gpio99
CON7 46ピン/sys/class/gpio/gpio100
CON7 61ピン/sys/class/gpio/gpio13
CON7 62ピン/sys/class/gpio/gpio12
CON7 63ピン/sys/class/gpio/gpio9
CON7 64ピン/sys/class/gpio/gpio5
CON7 65ピン/sys/class/gpio/gpio20
CON7 66ピン/sys/class/gpio/gpio10
CON7 67ピン/sys/class/gpio/gpio8
CON7 68ピン/sys/class/gpio/gpio7
CON7 70ピン/sys/class/gpio/gpio40
CON7 71ピン/sys/class/gpio/gpio41
CON7 72ピン/sys/class/gpio/gpio42
CON7 73ピン/sys/class/gpio/gpio43
CON7 74ピン/sys/class/gpio/gpio44
CON7 75ピン/sys/class/gpio/gpio45
CON7 76ピン/sys/class/gpio/gpio46
CON7 77ピン/sys/class/gpio/gpio47
CON7 78ピン/sys/class/gpio/gpio48
CON7 79ピン/sys/class/gpio/gpio49
CON7 80ピン/sys/class/gpio/gpio50
CON7 81ピン/sys/class/gpio/gpio51
CON7 82ピン/sys/class/gpio/gpio52
CON7 83ピン/sys/class/gpio/gpio53
CON7 84ピン/sys/class/gpio/gpio54
CON7 85ピン/sys/class/gpio/gpio55
CON7 86ピン/sys/class/gpio/gpio56
CON7 87ピン/sys/class/gpio/gpio57
CON7 88ピン/sys/class/gpio/gpio58
CON7 90ピン/sys/class/gpio/gpio24
CON7 91ピン/sys/class/gpio/gpio25
CON7 92ピン/sys/class/gpio/gpio26
CON7 93ピン/sys/class/gpio/gpio178
CON7 94ピン/sys/class/gpio/gpio179
CON7 95ピン/sys/class/gpio/gpio180
CON7 96ピン/sys/class/gpio/gpio181
CON7 97ピン/sys/class/gpio/gpio182

表6.12 拡張インターフェース2(Armadillo-840: CON8)のGPIOディレクトリ

ピン番号GPIOディレクトリ
CON8 4ピン/sys/class/gpio/gpio34
CON8 5ピン/sys/class/gpio/gpio33
CON8 6ピン/sys/class/gpio/gpio32
CON8 7ピン/sys/class/gpio/gpio31
CON8 8ピン/sys/class/gpio/gpio30
CON8 9ピン/sys/class/gpio/gpio29
CON8 10ピン/sys/class/gpio/gpio28
CON8 11ピン/sys/class/gpio/gpio27
CON8 13ピン/sys/class/gpio/gpio35
CON8 15ピン/sys/class/gpio/gpio38
CON8 16ピン/sys/class/gpio/gpio37
CON8 17ピン/sys/class/gpio/gpio39
CON8 19ピン/sys/class/gpio/gpio36
CON8 21ピン/sys/class/gpio/gpio158
CON8 22ピン/sys/class/gpio/gpio159
CON8 27ピン/sys/class/gpio/gpio199
CON8 28ピン/sys/class/gpio/gpio94
CON8 29ピン/sys/class/gpio/gpio93
CON8 30ピン/sys/class/gpio/gpio22
CON8 40ピン/sys/class/gpio/gpio195
CON8 41ピン/sys/class/gpio/gpio196
CON8 42ピン/sys/class/gpio/gpio23
CON8 44ピン/sys/class/gpio/gpio21
CON8 45ピン/sys/class/gpio/gpio160
CON8 46ピン/sys/class/gpio/gpio197
CON8 47ピン/sys/class/gpio/gpio198
CON8 48ピン/sys/class/gpio/gpio194
CON8 49ピン/sys/class/gpio/gpio193
CON8 50ピン/sys/class/gpio/gpio182
CON8 51ピン/sys/class/gpio/gpio181
CON8 52ピン/sys/class/gpio/gpio180
CON8 53ピン/sys/class/gpio/gpio179
CON8 54ピン/sys/class/gpio/gpio178
CON8 55ピン/sys/class/gpio/gpio26
CON8 56ピン/sys/class/gpio/gpio25
CON8 57ピン/sys/class/gpio/gpio24

以降の説明では、任意のGPIOを示すGPIOクラスディレクトリを"/sys/class/gpio/[GPIO]"のように表記します。

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

GPIOディレクトリ以下のdirectionファイルへ値を書き込むことによって、入出力方向を変更することができます。directionに書き込む有効な値を次に示します。

表6.13 directionの設定

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

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

GPIOディレクトリ以下のvalueファイルから値を読み出すことによって、入力レベルを取得することができます。"0"はLOWレベル、"1"はHIGHレベルを表わします。入力レベルの取得は入出力方向がINPUT, OUTPUTのどちらでも行うことができます。入出力方向がOUTPUTの時に読み出される値は、GPIOピンの状態ではなく、自分がvalueファイルに書き込んだ値となります。

[armadillo ~]# cat /sys/class/gpio/[GPIO]/value
0

図6.32 GPIOの入力レベルを取得する


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

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

[armadillo ~]# echo 1 > /sys/class/gpio/[GPIO]/value

図6.33 GPIOの出力レベルを設定する


6.7.4. ユーザージャンパを使用する

拡張ボード01のジャンパピンJP1はユーザージャンパとして使用できます。ユーザージャンパはgeneric GPIOとして実装されており、GPIOと同様の操作でユーザージャンパの入力レベルを取得することができます。対応するGPIOディレクトリは/sys/class/gpio/gpio75です。

ユーザージャンパの状態と取得できる値の対応表を次に示します。

表6.14 ユーザージャンパの状態と取得できる値の対応

ユーザージャンパの状態取得できる値
ショート0
オープン1


6.7.4.1. 状態を取得する

ユーザージャンパの状態を取得するには、directionをinに設定する必要があります。 詳しいGPIOのアクセス方法については、「入出力方向を変更する」および「入力レベルを取得する」を参考にしてください。

ユーザージャンパの状態を取得する例を次に示します。

[armadillo ~]# echo in > /sys/class/gpio/gpio75/direction
[armadillo ~]# cat /sys/class/gpio/gpio75/value
1

図6.34 ユーザージャンパの状態を取得する


[ティップ]

ユーザージャンパを利用して、起動時に行う処理を変更することができます。ここでは例として、Qtサンプルアプリケーションのphotoviewerの画面出力先を次のように変更してみます。

ユーザージャンパの状態画面出力先
オープンHDMI対応ディスプレイ
ショートLCD

/etc/config/rc.localを次のように編集します。

[armadillo ~]# vi /etc/config/rc.local

# First read /etc/profile
test -f /etc/profile && . /etc/profile

JP1=/sys/class/gpio/gpio75
echo in > ${JP1}/direction  1
if [ $(cat ${JP1}/value) -eq 0 ]; then  2
        export QT_QPA_EGLFS_DISPLAY=1  3
        export QT_QPA_EGLFS_WIDTH=800  4
        export QT_QPA_EGLFS_HEIGHT=480  5
fi

#
# Starting a default application
#

1

入出力方向をINPUTに設定します。

2

入力レベルを取得し、処理を分岐します。

3

画面出力先をLCDに設定します。

4

画面の幅を800ピクセルに設定します。

5

画面の高さを480ピクセルに設定します。

変更後、次回起動時に設定が反映されるようにコンフィグ領域を保存します。

[armadillo ~]# flatfsd -s

6.8. ユーザースイッチ

拡張ボード01に搭載されているユーザースイッチ(SW1〜SW4)のボタンプッシュ/リリースイベントを取得する方法について説明します。

ユーザースイッチのデバイスドライバは、インプットデバイスとして実装されています。 そのため、インプットデバイスのデバイスファイルから各イベントを取得することができます。

Armadillo-840で利用可能なユーザースイッチのインプットデバイスファイルと、各スイッチに対応したイベントコードを次に示します。

表6.15 インプットデバイスファイルとイベントコード

ユーザースイッチインプットデバイスファイルイベントコード
SW1/dev/input/event1116 (Power)
SW2158 (Back)
SW3139 (Menu)
SW4102 (Home)


[警告]

インプットデバイスは検出された順番にインデックスが割り振られます。 USBデバイスなどを接続してインプットデバイスを追加している場合は、 デバイスファイルのインデックスが異なる可能性があります。

6.8.1. イベントを確認する

ユーザースイッチのボタンプッシュ/リリースイベントは、 インプットデバイスファイルから取得することができます。 ここでは、「evtest」コマンドを利用してイベントを確認します。 evtestを停止するには、Ctrl+c を入力してください。

[armadillo ~]# evtest /dev/input/event1
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
Input device name: "gpio-keys"
Supported events:
  Event type 0 (Sync)
  Event type 1 (Key)
    Event code 102 (Home)
    Event code 116 (Power)
    Event code 139 (Menu)
    Event code 158 (Back)
Testing ... (interrupt to exit)
Event: time 946777243.784020, type 1 (Key), code 116 (Power), value 1 1
Event: time 946777243.784028, -------------- Report Sync ------------
Event: time 946777243.895528, type 1 (Key), code 116 (Power), value 0 2
Event: time 946777243.895534, -------------- Report Sync ------------
                 :
[armadillo ~]#

1

SW1のボタンプッシュイベントを検出したときの表示。

2

SW1のボタンリリースイベントを検出したときの表示。

図6.35 ユーザースイッチ: イベントの確認


6.9. タッチスクリーン

拡張ボード01には、タッチパネルLCDが搭載されています。 ソフトウェアでタッチイベントを取得することができます。

タッチスクリーンドライバは、インプットデバイスとして実装されています。 そのため、インプットデバイスのデバイスファイルからタッチイベントを取得することができます。 デバイスファイルは、/dev/input/event0です。

[警告]

インプットデバイスは検出された順番にインデックスが割り振られます。 USBデバイスなどを接続してインプットデバイスを追加している場合は、 デバイスファイルのインデックスが異なる可能性があります。

6.9.1. イベントを確認する

タッチイベントは、インプットデバイスファイルから取得することができます。 ここでは、「evtest」コマンドを利用してイベントを確認します。 evtestを停止するには、Ctrl+c を入力してください。

[armadillo ~]# evtest /dev/input/event0
Input driver version is 1.0.1
Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0
Input device name: "st1232-touchscreen"
Supported events:
  Event type 0 (Sync)
  Event type 1 (Key)
  Event type 3 (Absolute)
    Event code 48 (Touch Major)
      Value      0
      Min        0
      Max      255
    Event code 53 (Position X)
      Value      0
      Min        0
      Max      799
    Event code 54 (Position Y)
      Value      0
      Min        0
      Max      479
Testing ... (interrupt to exit)
Event: time 946699216.584437, type 3 (Absolute), code 48 (Touch Major), value 73 1
Event: time 946699216.584446, type 3 (Absolute), code 53 (Position X), value 476 2
Event: time 946699216.584451, type 3 (Absolute), code 54 (Position Y), value 251 3
Event: time 946699216.584456, -------------- Config Sync ------------
Event: time 946699216.584460, -------------- Report Sync ------------
                 :
[armadillo ~]#

1

タッチされている楕円の直径を表すイベントの表示。

2

タッチされているポイントのX座標を表すイベントの表示。

3

タッチされているポイントのY座標を表すイベントの表示。

図6.36 タッチスクリーン: イベントの確認




[9] ArmadilloのIPアドレスが 192.168.10.10 の場合、http://192.168.10.10/ となります。

[10] 接続するHDMI対応ディスプレイによって異なる場合があります。

[11] Advanced Linux Sound Architecture http://alsa.sourceforge.net

[12] Open Sound System http://developer.opensound.com/

[13] ファイルシステムタイプの指定は省略可能です。省略した場合、mountコマンドはファイルシステムタイプを推測します。この推測は必ずしも適切なものとは限りませんので、事前にファイルシステムタイプが分かっている場合は明示的に指定してください。

[14] 通常、購入したばかりのSDHCカードはFAT32ファイルシステムでフォーマットされています。

[15] 詳しくは、各Armadillo販売代理店にお問い合わせください。