ここでは、ネットワークの設定方法やネットワークを利用するアプリケーションについて説明します。
ネットワーク設定は、/etc/config/interfaces に記述されています。デフォルト状態では、次のように設定されています。
表6.1 デフォルト状態のネットワーク設定 インターフェース | 種類 | 設定 | 起動時に有効化 |
---|
lo | TCP/IP | ループバック | 有効 | eth0 | TCP/IP | DHCP | 有効 | usb0 | TCP/IP | 手動 | 無効 |
| |
---|
usb0はUSBガジェットで利用することを想定した設定です。
|
有効化されていないインターフェースや一度無効化したインターフェースを再度有効化するには、以下のコマンドを使います。 有効化されているインターフェースを無効化するには、以下のコマンドを使います。設定を変更する前には、かならず無効化してください。 コマンドの eth0 を usb0 など他のインターフェース名に変更することで、指定したインターフェースの操作をすることが可能です。
Armadilloのネットワーク設定の変更方法について説明します。
| |
---|
ネットワーク接続に関する不明な点については、ネットワークの管理者へ相談してください。
|
Armadillo上の「/etc/config 」以下にあるファイルを編集し、コンフィグ領域に保存することにより起動時のネットワーク設定を変更することができます。コンフィグ領域の保存については、7章コンフィグ領域 − 設定ファイルの保存領域を参照してください。
| |
---|
設定を変更する場合は、かならずネットワークを無効化してから行ってください。変更してからネットワークを無効化しても、「新しい設定」を無効化することになります。「古い設定」が無効化されるわけではありません。
|
表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 |
DHCPに設定するには、viエディタで/etc/config/interfaces を、次のように編集します。
DNSサーバーを指定する場合は、viエディタで/etc/config/resolv.conf を編集します。
| |
---|
DHCPを利用している場合には、DHCPサーバーがDNSサーバーを通知する場合があります。この場合、/etc/config/resolv.conf は自動的に更新されます。
|
ここでは、変更したIP設定で正常に通信が可能か確認します。設定を変更した後は、かならず変更したインターフェースを再度有効化してください。
同じネットワーク内にある通信機器とPING通信を行います。下記の例では、通信機器が「192.168.10.20」というIPアドレスを持っていると想定しています。
Armadilloでは、簡易ファイアーウォールが動作しています。設定されている内容を参照するには、図6.8「iptables」のようにコマンド実行してください。
工場出荷イメージで利用することができるネットワークアプリケーションについて説明します。
| |
---|
ATDEとArmadilloのネットワーク設定がデフォルト状態であることを想定して記述しています。ネットワーク設定を変更している場合は適宜読み換えてください。
|
ATDEなどのPCからネットワーク経由でログインし、リモート操作することができます。ログイン可能なユーザを次に示します。
TELNETを使用してATDEからArmadilloにリモートログインする場合の例を、次に示します。
ATDEなどのPCからネットワーク経由でファイル転送することができます。次に示すユーザでログインすることができます。
ftpを使用してATDEからArmadilloにファイルを転送する場合の例を、次に示します。
ATDEからArmadilloにファイルをアップロードすると、/home/ftp/pub/ディレクトリ以下にファイルが作成されています。ダウンロードする場合も、同じディレクトリにファイルを配置してください。
Armadilloでは、HTTPサーバーが動作しています。ATDEなどのPCのWebブラウザからArmadilloのURL (http://[ArmadilloのIPアドレス]/
[]
または、http://armadillo840-0.local/)にアクセスすると、Armadilloのトップページ(index.html)が表示されます。
Armadillo-840は画面出力インターフェースを搭載しています。
これらのインターフェースは、フレームバッファデバイス(fb)として扱うことができます。
次に、標準状態で利用可能なフレームバッファデバイスを示します。
- フレームバッファデバイス - /dev/fb0
HDMIインターフェース(Armadillo-840: CON3) | 解像度: 1920 x 1080[] | カラーフォーマット: ARGB8888 (32bit) |
- フレームバッファデバイス - /dev/fb1
LCDインターフェース(拡張ボード01: CON2) | 解像度: 800 x 480 | カラーフォーマット: ARGB8888 (32bit) |
6.2.1. フレームバッファデバイスにテスト画像を出力
上述した利用可能なフレームバッファデバイスに、テスト画像を出力する方法について説明します。
ここでは、テスト画像を生成するためにGStreamerの「videotestsrc」を利用します。
次のようにコマンドを実行するとテスト画像が表示されます。
| |
---|
ユーザーランドイメージ romfs-a840-v1.01.img以前(Atmark Dist v20131018以前)では、次のようにコマンドを実行する必要があります。
コマンドの違いは、インストールされているGstreamerのバージョンによるものです。ユーザーランドイメージ romfs-a840-v1.01.img以前(Atmark Dist v20131018以前)ではGstreamer0.10がインストールされていましたが、ユーザーランドイメージ romfs-a840-v1.02.img以降(Atmark Dist v20140131以降)ではGstreamer1.0がインストールされています。
|
| |
---|
フレームバッファデバイスの解像度がわからない場合、次のようにfbsetコマンドを用いると現在設定されている解像度を表示することができます。
|
6.2.2. HDMI - フレームバッファデバイス /dev/fb0
Armadillo-840の標準状態では、デフォルトアプリケーションが自動的に起動されるようになっています。
このデフォルトアプリケーションは、フレームバッファデバイス /dev/fb0 に描画を行います。
そのため、HDMIインターフェース(Armadillo-840: CON3)にHDMI対応ディスプレイ(本節では単に「ディスプレイ」と称します)
を接続しArmadillo-840を起動した場合には、次のような画面が表示されます。
このデフォルトアプリケーションは、Qtを利用して作成された「Photo Viewer」というデモアプリケーションです。
指定したキーワードに対応する写真を「Flickr」という写真共有サイトから取得します。
スタックされた写真をクリックすると、指定したキーワードの写真が画面に広がります。
インターネットに繋がっていない場合にはデータを取得できないため、
図6.15「自動起動されるデフォルトアプリケーション画面」のように写真を表示することができません。
ネットワークの設定については、「ネットワーク」を確認してください。
| |
---|
Armadillo-840では、ディスプレイによって自動的にビデオモードを変更する機能が搭載されています。
この機能によりフレームバッファデバイス /dev/fb0 の解像度は、
Armadillo-840とディスプレイがサポートできる最大の解像度に設定されます。
ディスプレイが接続されていない場合は、フレームバッファデバイスの解像度は FullHD (1920 x 1080 px)に設定されます。
Armadillo-840を起動した後に、FullHDに対応していないディスプレイを接続すると、
デフォルトアプリケーションが認識している解像度とフレームバッファデバイスに設定されている解像度が異なる場合があり、
正常に画面が表示できなくなることがあります。
正常に画面が表示されない場合は、デフォルトアプリケーション「Photo Viewer」を再起動させると解決することがあります。
以下のようにコマンドを実行すると、アプリケーションを再起動させることができます。
|
| |
---|
利用するディスプレイによっては、ビデオモードの自動設定が完了した後であっても画像が表示されない場合があります。
これは、ディスプレイが持つ表示可能なビデオモードをArmadillo-840が再現できない場合があるためです。
画像が表示されない場合は、次のように該当箇所を変更してください。特定ビデオモードに対する排他処理機能を利用して、表示されないビデオモードを排除することができます。
変更後、次回起動時に設定が反映されるようにコンフィグ領域を保存します。
|
6.2.3. LCD - フレームバッファデバイス /dev/fb1
Armadillo-840の標準状態では、LCDインターフェース(拡張ボード01: CON2)に対応するフレームバッファデバイス /dev/fb1 へ描画を行うアプリケーションが自動起動するように設定されていないため、LCDの画面は黒一色となります。
画面の出力を確認する場合は、「フレームバッファデバイスにテスト画像を出力」にも記載されている、次のようなコマンドを実行してください。
| |
---|
ユーザーランドイメージ romfs-a840-v1.01.img以前(Atmark Dist v20131018以前)では、次のようにコマンドを実行する必要があります。
コマンドの違いは、インストールされているGstreamerのバージョンによるものです。ユーザーランドイメージ romfs-a840-v1.01.img以前(Atmark Dist v20131018以前)ではGstreamer0.10がインストールされていましたが、ユーザーランドイメージ romfs-a840-v1.02.img以降(Atmark Dist v20140131以降)ではGstreamer1.0がインストールされています。
|
拡張ボード01に搭載されたLCDのバックライトは、ソフトウェアで輝度を調整することができます。
LCDのバックライトは、バックライトクラスとして実装されています。
バックライトの輝度を変更するには、/sys/class/backlight/pwm-backlight.0/ディレクトリ以下の次の表に示すsysfsファイルを使用します。
表6.5 輝度設定に使用するsysfsファイル ファイル | 説明 |
---|
brightness | 0(消灯) 〜 max_brightness(最高輝度)までの数値を書き込むことで輝度を変更することができます。 | max_brightness | brightnessに書きこむ数値の最大値(最高輝度 = 255)が読み出せます。 |
次に、バックライトの輝度を調整する場合のコマンド例を示します。
- 任意の輝度に変更する (ここでは 「128」 に設定)
ここでは、サウンドの再生および録音の方法について説明します。 Linuxでオーディオ機能を実現するには、ALSA[]とOSS[]の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 |
ここでは、テストサウンドを再生する方法を示します。
テストサウンドには、Gstreamerの「audiotestsrc」を利用します。
次のようにコマンドを実行すると、ALSAデバイスに対応するオーディオ出力から正弦波(440Hz)の音が再生されます。
| |
---|
ユーザーランドイメージ romfs-a840-v1.01.img以前(Atmark Dist v20131018以前)では、次のようにコマンドを実行する必要があります。
コマンドの違いは、インストールされているGstreamerのバージョンによるものです。ユーザーランドイメージ romfs-a840-v1.01.img以前(Atmark Dist v20131018以前)ではGstreamer0.10がインストールされていましたが、ユーザーランドイメージ romfs-a840-v1.02.img以降(Atmark Dist v20140131以降)ではGstreamer1.0がインストールされています。
|
6.3.2. サウンドを録音する
モノラルマイク入力(拡張ボード01: CON5)に接続されたマイクから入力された音声を録音する方法を示します。
ここでは、WAV (RIFF waveform Audio Format)ファイル形式で録音する例を示します。
| |
---|
ユーザーランドイメージ romfs-a840-v1.01.img以前(Atmark Dist v20131018以前)では、次のようにコマンドを実行する必要があります。
|
録音したファイルを再生するには、次のようにコマンドを実行します。
ここでは、ステレオヘッドホン出力(拡張ボード01: CON6) hw:1に出力するように指定しています。
| |
---|
ユーザーランドイメージ romfs-a840-v1.01.img以前(Atmark Dist v20131018以前)では、次のようにコマンドを実行する必要があります。
|
Armadillo-840でストレージとして使用可能なデバイスを次に示します。
表6.6 ストレージデバイス デバイス種類 | ディスクデバイス | 先頭パーティション |
---|
USBフラッシュメモリ | /dev/sd* [] | /dev/sd*1 | SD/SDHC/SDXCカード | /dev/mmcblk* [] | /dev/mmcblk*p1 |
ここでは、SDHCカードを例にストレージの使用方法を説明します。以降の説明では、共通の操作が可能な場合に、SD/SDHC/SDXCカードをSDカードと表記します。
| |
---|
SDXCカードを使用する場合は、事前に「ストレージのパーティション変更とフォーマット」を参照してフォーマットを行う必要があります。これは、LinuxカーネルがexFATファイルシステムを扱うことができないためです。通常、購入したばかりのSDXCカードはexFATファイルシステムでフォーマットされています。
|
Linuxでは、アクセス可能なファイルやディレクトリは、一つの木構造にまとめられています。あるストレージデバイスのファイルシステムを、この木構造に追加することを、マウントするといいます。マウントを行うコマンドは、mountです。
mountコマンドの典型的なフォーマットは、次の通りです。
-t オプションに続くdevice には、ファイルシステムタイプを指定します[]。FAT32ファイルシステムの場合はvfat []、EXT3ファイルシステムの場合はext3 を指定します。
device には、ストレージデバイスのデバイスファイル名を指定します。SDカードのパーティション1の場合は/dev/mmcblk0p1 、パーティション2の場合は/dev/mmcblk0p2 となります。
dir には、ストレージデバイスのファイルシステムをマウントするディレクトリを指定します。
SDスロットにSDHCカードを挿入した状態で図6.21「ストレージのマウント」に示すコマンドを実行すると、/mntディレクトリにSDHCカードのファイルシステムをマウントします。SDカード内のファイルは、/mntディレクトリ以下に見えるようになります。
| |
---|
FAT32ファイルシステムをマウントした場合、次の警告メッセージが表示される場合があります。
これは無視して構いません。 UTF-8 ロケールでは結局はファイル名の表示を正しく処理できないためです。
|
ストレージを安全に取り外すには、アンマウントする必要があります。アンマウントを行うコマンドは、umountです。オプションとして、アンマウントしたいデバイスがマウントされているディレクトリを指定します。
6.4.2. ストレージのパーティション変更とフォーマット
通常、購入したばかりのSDHCカードやUSBメモリは、一つのパーティションを持ち、FAT32ファイルシステムでフォーマットされています。
パーティション構成を変更したい場合、fdiskコマンドを使用します。fdiskコマンドの使用例として、一つのパーティションで構成されているSDカードのパーティションを、2つに分割する例を図6.23「fdiskコマンドによるパーティション変更」に示します。一度、既存のパーティションを削除してから、新たにプライマリパーティションを二つ作成しています。先頭のパーティションには100MByte、二つめのパーティションに残りの容量を割り当てています。先頭のパーティションは/dev/mmcblk0p1、二つめは/dev/mmcblk0p2となります。fdiskコマンドの詳細な使い方は、manページ等を参照してください。
FAT32ファイルシステムでストレージデバイスをフォーマットするには、mkfs.vfatコマンドを使用します。また、EXT2やEXT3ファイルシステムでフォーマットするには、mke2fsコマンドを使用します。SDカードのパーティション1をEXT3ファイルシステムでフォーマットするコマンド例を、次に示します。
AVコーデックミドルウェアを使い、H.264/AVC及びAACでエンコードされている動画を再生する方法について説明します。動画はMP4(MPEG-4 Part 14)コンテナに格納されているものを使用します。
| |
---|
AVコーデックミドルウェアには、Atmark Dist v20140131以降(ユーザーランドイメージ romfs-a840-v1.02.img以降)、Linuxカーネル v3.4-at6以降(カーネルイメージ linux-a840-v1.02.img.gz 以降)で対応しています。それ以前のものを使用されている場合、本節で説明する動作確認を行う前にイメージを対応バージョンに書き換えてください。
|
動作確認に利用する動画はサイズが大きいため、Armadilloサイトから取得し、ストレージに保存します。「ネットワーク」を参照してネットワーク設定を行い、Armadilloからインターネットに接続できる状態にしておいてください[]。また、USBメモリやSDカード等のストレージを/mntにマウントしているという前提で説明を行います。「ストレージ」を参照して適切なデバイスをマウントしておいてください。
表6.7 サンプル動画 種類 | ファイル名 |
---|
Full HDサイズ30秒動画 | big-buck-bunny-30sec-fullhd.mp4 | 800×480サイズ30動画 | big-buck-bunny-30sec-800x480.mp4 |
次のようにコマンドを実行し、Armadilloサイトから動画ファイルを取得してください。
| |
---|
30 秒動画に使われている Big Buck Bunny は、Creative Commons Attribution 3.0 Unported License で提供されています。(c) copyright 2008, Blender Foundation / www.bigbuckbunny.org
|
HDMIインターフェース(Armadillo-840: CON3)に接続したHDMI対応ディスプレイに動画を表示します。本節で示すコマンド例をそのまま実行するためには、HDMI対応ディスプレイはFull HDサイズの表示に対応している必要があります。対応するフレームバッファは/dev/fb0です。
サウンドについても、HDMI対応ディスプレイに出力します。対応するALSAデバイスはhw:0です。
下記コマンドを実行しデフォルトアプリケーション「Photo Viewer」を停止しておいてください。
次のようにコマンドを実行すると動画が再生されます。動画の再生を途中で停止する場合は、Ctrl+cを入力してください。
| |
---|
このコマンドはとても長く間違えやすいので、コマンドを本マニュアルからシリアル通信プログラムにコピー&ペーストすることをお勧めします。コマンドプロンプト ( [armadillo ~]# ) はコピーしないよう注意してください。
|
| |
---|
HDMI対応ディスプレイがFull HDサイズの表示に対応していない場合は、解像度を指定しなければ動画が再生されません。解像度が 1280 x 720 の場合のコマンド例を次に示します。
|
6.5.2. LCDへの表示
LCDインターフェース(拡張ボード01: CON2)に接続されたLCDに動画を表示します。対応するフレームバッファは/dev/fb1です。
サウンドは、ステレオヘッドホン出力インターフェース(拡張ボード01: CON6)に接続されたスピーカ又はヘッドホンに出力します。対応するALSAデバイスはhw:1です。
次のようにコマンドを実行すると動画が再生されます。動画の再生を途中で停止する場合は、Ctrl+cを入力してください。
| |
---|
このコマンドはとても長く間違えやすいので、コマンドを本マニュアルからシリアル通信プログラムにコピー&ペーストすることをお勧めします。コマンドプロンプト ( [armadillo ~]# ) はコピーしないよう注意してください。
|
Armadillo-840のLEDは、GPIOが接続されているためソフトウェアで制御することができます。
利用しているデバイスドライバはLEDクラスとして実装されているため、
LEDクラスディレクトリ以下のファイルによってLEDの制御を行うことができます。
LEDクラスディレクトリと各LEDの対応を次に示します。
表6.8 LED - Armadillo-840 LEDクラスディレクトリ | 説明 | デフォルトトリガ |
---|
/sys/class/leds/LED1/ | Armadillo-840: LED1 | none | /sys/class/leds/LED2/ | Armadillo-840: LED2 | none |
表6.9 LED - 拡張ボード01 LEDクラスディレクトリ | 説明 | デフォルトトリガ |
---|
/sys/class/leds/EXT1/ | 拡張ボード01: LED1 | none | /sys/class/leds/EXT2/ | 拡張ボード01: LED2 | none | /sys/class/leds/EXT3/ | 拡張ボード01: LED3 | none | /sys/class/leds/EXT4/ | 拡張ボード01: LED4 | none | /sys/class/leds/EXT5/ | 拡張ボード01: LED5 | none | /sys/class/leds/EXT6/ | 拡張ボード01: LED6 | none |
以降の説明では、任意のLEDを示すLEDクラスディレクトリを"/sys/class/leds/[LED] "のように表記します。
LEDクラスディレクトリ以下のbrightnessファイルへ値を書き込むことによって、LEDの点灯/消灯を行うことができます。brightnessに書き込む有効な値は0〜255です。
brightnessに0以外の値を書き込むとLEDが点灯します。
| |
---|
Armadillo-840のLEDには輝度制御の機能が無いため、0 (消灯)、1〜255 (点灯)の2つの状態のみ指定することができます。
|
brightnessに0を書き込むとLEDが消灯します。
brightnessを読み出すとLEDの状態が取得できます。
LEDクラスディレクトリ以下のtriggerファイルへ値を書き込むことによってLEDの点灯/消灯にトリガを設定することができます。triggerに書き込む有効な値を次に示します。
表6.10 triggerの種類 設定 | 説明 |
---|
none | トリガを設定しません。 | mmc0 | SDカードのアクセスランプにします。 | timer | 任意のタイミングで点灯/消灯を行います。この設定にすることにより、LEDクラスディレクトリ以下にdelay_on, delay_offファイルが出現し、それぞれ点灯時間, 消灯時間をミリ秒単位で指定します。 | heartbeat[] | 心拍のように点灯/消灯を行います。工場出荷イメージでは設定することができません。 | default-on[] | 主にカーネルから使用します。起動時にLEDが点灯します。工場出荷イメージでは設定することができません。 |
以下のコマンドを実行すると、LEDが2秒点灯、1秒消灯を繰り返します。
triggerを読み出すとLEDのトリガが取得できます。"[ ]"が付いているものが現在のトリガです。
Armadillo-840には、カレンダ時計(Real Time Clock)が実装されています。電源を切断しても一定時間(平均300秒間、最小60秒間)時刻を保持することができます
電源が切断されても長時間時刻を保持させたい場合は、RTC外部バックアップ用電源入力インターフェース(Armadillo-840: CON12)に外付けバッテリー(対応バッテリー例: CR2032 WK11)[]を接続することができます。
Linuxの時刻には、Linuxカーネルが管理するシステムクロックと、RTCが管理するハードウェアクロックの2種類があります。RTCに時刻を設定するためには、まずシステムクロックを設定します。その後に、ハードウェアクロックをシステムクロックと一致させる手順となります。
システムクロックは、dateコマンドを用いて設定します。dateコマンドの引数には、設定する時刻を[MMDDhhmmCCYY.ss]というフォーマットで指定します。時刻フォーマットの各フィールドの意味を次に示します。
表6.11 時刻フォーマットのフィールド フィールド | 意味 |
---|
MM | 月 | DD | 日(月内通算) | hh | 時 | mm | 分 | CC | 年の最初の2桁(省略可) | YY | 年の最後の2桁(省略可) | ss | 秒(省略可) |
2013年1月23日4時56分00秒に設定する例を次に示します。
システムクロックを設定後、ハードウェアクロックをhwclockコマンドを用いて設定します。
Armadillo-840のGPIOは、generic GPIOとして実装されています。GPIOクラスディレクトリ以下のファイルによってGPIOの制御を行うことができます。GPIOクラスディレクトリとGPIOの対応を次に示します。
表6.12 拡張インターフェース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.13 拡張インターフェース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] "のように表記します。
GPIOディレクトリ以下のdirectionファイルへ値を書き込むことによって、入出力方向を変更することができます。directionに書き込む有効な値を次に示します。
表6.14 directionの設定 設定 | 説明 |
---|
high | 入出力方向をOUTPUTに設定します。出力レベルの取得/設定を行うことができます。出力レベルはHIGHレベルになります。 | out | 入出力方向をOUTPUTに設定します。出力レベルの取得/設定を行うことができます。出力レベルはLOWレベルになります。 | low | outを設定した場合と同じです。 | in | 入出力方向をINPUTに設定します。入力レベルの取得を行うことができますが設定はできません。 |
GPIOディレクトリ以下のvalueファイルから値を読み出すことによって、入力レベルを取得することができます。"0"はLOWレベル、"1"はHIGHレベルを表わします。入力レベルの取得は入出力方向がINPUT, OUTPUTのどちらでも行うことができます。入出力方向がOUTPUTの時に読み出される値は、GPIOピンの状態ではなく、自分がvalueファイルに書き込んだ値となります。
GPIOディレクトリ以下のvalueファイルへ値を書き込むことによって、出力レベルを設定することができます。"0"はLOWレベル、"0"以外はHIGHレベルを表わします。出力レベルの設定は入出力方向がOUTPUTでなければ行うことはできません。
6.8.4. ユーザージャンパを使用する
拡張ボード01のジャンパピンJP1はユーザージャンパとして使用できます。ユーザージャンパはgeneric GPIOとして実装されており、GPIOと同様の操作でユーザージャンパの入力レベルを取得することができます。対応するGPIOディレクトリは/sys/class/gpio/gpio75です。
ユーザージャンパの状態と取得できる値の対応表を次に示します。
表6.15 ユーザージャンパの状態と取得できる値の対応 ユーザージャンパの状態 | 取得できる値 |
---|
ショート | 0 | オープン | 1 |
ユーザージャンパの状態を取得するには、directionをinに設定する必要があります。
詳しいGPIOのアクセス方法については、「入出力方向を変更する」および「入力レベルを取得する」を参考にしてください。
ユーザージャンパの状態を取得する例を次に示します。
| |
---|
ユーザージャンパを利用して、起動時に行う処理を変更することができます。ここでは例として、Qtサンプルアプリケーションのphotoviewerの画面出力先を次のように変更してみます。
/etc/config/rc.local を次のように編集します。
変更後、次回起動時に設定が反映されるようにコンフィグ領域を保存します。
|
6.9. ユーザースイッチ
拡張ボード01に搭載されているユーザースイッチ(SW1〜SW4)のボタンプッシュ/リリースイベントを取得する方法について説明します。
ユーザースイッチのデバイスドライバは、インプットデバイスとして実装されています。
そのため、インプットデバイスのデバイスファイルから各イベントを取得することができます。
Armadillo-840で利用可能なユーザースイッチのインプットデバイスファイルと、各スイッチに対応したイベントコードを次に示します。
表6.16 インプットデバイスファイルとイベントコード ユーザースイッチ | インプットデバイスファイル | イベントコード |
---|
SW1 | /dev/input/event1 | 116 (Power) | SW2 | 158 (Back) | SW3 | 139 (Menu) | SW4 | 102 (Home) |
| |
---|
インプットデバイスは検出された順番にインデックスが割り振られます。
USBデバイスなどを接続してインプットデバイスを追加している場合は、
デバイスファイルのインデックスが異なる可能性があります。
|
ユーザースイッチのボタンプッシュ/リリースイベントは、
インプットデバイスファイルから取得することができます。
ここでは、「evtest」コマンドを利用してイベントを確認します。
evtestを停止するには、Ctrl+c を入力してください。
6.10. タッチスクリーン
拡張ボード01には、タッチパネルLCDが搭載されています。
ソフトウェアでタッチイベントを取得することができます。
タッチスクリーンドライバは、インプットデバイスとして実装されています。
そのため、インプットデバイスのデバイスファイルからタッチイベントを取得することができます。
デバイスファイルは、/dev/input/event0 です。
| |
---|
インプットデバイスは検出された順番にインデックスが割り振られます。
USBデバイスなどを接続してインプットデバイスを追加している場合は、
デバイスファイルのインデックスが異なる可能性があります。
|
タッチイベントは、インプットデバイスファイルから取得することができます。
ここでは、「evtest」コマンドを利用してイベントを確認します。
evtestを停止するには、Ctrl+c を入力してください。
| |
|