Armadillo-810をUSBデバイスとして使用することができます。ここでは動作確認をATDE5で行うため、「取り外し可能デバイスの使用」を参照してATDE5とArmadillo-810のCON4をUSB2.0 ケーブルで接続する必要があります。
USBデバイスの機能は、LinuxカーネルのUSBガジェットドライバによって提供されます。USBガジェットドライバは様々な種類のものが用意されていますが、工場出荷イメージではArmadillo-810をUSB複合デバイス[]として使用することができる「UVC Composite Gadget」が有効になっています。
UVC Composite Gadgetは以下に示す3種類のUSBデバイス機能を持っています。各機能は同時に利用することができます。
- UVCガジェット
Armadilloをビデオ出力デバイス、ATDEをビデオ入力デバイスとして扱うことができます。V4L2インターフェースを利用するキャプチャーアプリケーションなどで利用することができます。
- シリアルガジェット
ArmadilloとATDEを、互いにシリアルデバイスとして扱うことができます。シリアル(tty)デバイスで通信するアプリケーションなどで利用することができます。
- イーサネットガジェット
ArmadilloとATDEを、互いにネットワークデバイスとして扱うことができます。ソケットで通信するアプリケーションで利用することができます。
Armadillo-810のUVCガジェットは、「UVC(USB Video Class)」として実装されています。ATDEがUVCガジェットを認識すると、/dev/video0というデバイスファイルが作成されます。アプリケーションは、このデバイスを介して画像を取得することができます。ここでは、「guvcview」というアプリケーションで動作の確認を行います。
図6.1「guvcviewを起動」を実行すると、図6.2「guvcviewのビデオウィンドウ」と図6.3「guvcviewのコントロールウィンドウ」の2つのウィンドウが立ち上がります。ビデオウィンドウには、UVCガジェットから取得した映像が表示され、コントロールウィンドウで解像度の切り替えなどを行うことが出来ます。
| |
---|
UVCガジェットの機能は、UVCガジェットドライバとカメラドライバで画像を転送するような形で実現しています。2つのドライバは「V4L2(Video for Linux 2)」という共通のインターフェースを持っています。V4L2を利用して画像を転送するのが「uvc-gadget」というアプリケーションです。UVCガジェットの概念図を次に示します。
|
Armadillo-810のシリアルガジェットは、「CDC-ACM(USB Communication Device Class - Abstract Control Model)」として実装されています。Armadillo-810では/dev/ttyGS0
を、ATDEでは/dev/ttyACM0
を使用したシリアル通信を行うことができます。
シリアルガジェットの動作を確認するには、Armadillo-810の/dev/ttyGS0
にシリアルコンソールを起動させます。ATDEのシリアル通信ソフトウェア(minicom)を用いることで、シリアルガジェット経由でArmadillo-810にログインすることができます。
手順6.1 CDC-ACM通信確認手順
ATDEでminicomを起動します。シリアルデバイスには/dev/ttyACM0
を指定します。
Armadilloでgettyを起動します。シリアルデバイスにはttyGS0
[]を指定します。/etc/inittab
の設定を有効にするためには、プロセスIDが1であるinitプロセスにSIGHUPシグナルを送る必要があります。
ATDEのminicomにログインプロンプトが表示されます。ユーザー「guest」でログインすることができます。
| |
---|
以下のように/etc/securetty に端末(シリアルデバイス)を登録すると、特権ユーザー「root」でログインすることが可能になります。
|
Armadillo-810のイーサネットガジェットは、「RNDIS(Remote NDIS)」として実装されています。Armadillo-810とATDEは、互いにネットワークインターフェースusb0を使用したネットワーク通信を行うことができます。
Armadillo-810とATDEをイーサネットガジェットで接続すると、IPv4LLという機構を使ってリンクローカルアドレス[]が設定されます。
| |
---|
ATDE5のネットワーク設定は、ネットワークマネージャーを利用せずに "/etc/network/interfaces " に基づいて設定されています。
|
ATDEでイーサネットガジェットを認識したかどうかは、"ifconfig"コマンドの出力結果をみると判断することができます。
| |
---|
イーサネットガジェットのネットワークインターフェース(usb0)のMACアドレスには、Linuxカーネルが生成したランダム値が設定されます。このMACアドレスのうち、特定の意味を持つI/G(Individual/Group)およびU/L(Universal/Local)ビットについてはランダム値ではなく固定の値が設定されます。I/Gビットは0(ユニキャストアドレス)に、U/Lビットは1(ローカルアドレス)に設定されます。
|
Armadillo-810とATDEをイーサネットガジェットで接続すると、マルチキャストDNS(mDNS)という技術を利用してローカルネットワークで利用することができるホスト名が設定されます。mDNSにより設定されるホスト名を次に示します。
表6.1 mDNSで設定されるホスト名
ホスト | ホスト名 |
---|
Armadillo-810 | armadillo810-0.local |
ATDE5 | atde5.local |
| |
---|
ATDE5が所属するネットワーク内に複数のATDE5が存在する場合は、mDNSで設定されるホスト名が重複しないように"atde5-2.local"のようなホスト名が設定されます。
ATDE5にmDNSで設定されたホスト名を確認するには、次のようにコマンドを実行します。
|
ネットワーク設定が完了すると、ネットワーク通信ができる状態となります。pingで通信させてみましょう。
イーサネットガジェットを利用することにより、ネットワーク機能を利用することができます。ここでは、ネットワークの設定方法やネットワークを利用するアプリケーションについて説明します。
Armadilloのネットワーク設定の変更方法について説明します。
| |
---|
ネットワーク接続に関する不明な点については、ネットワークの管理者へ相談してください。
|
6.2.1.1. Armadilloにログインしてネットワーク設定を変更する
Armadillo上の「/etc/config
」以下にあるファイルを編集し、コンフィグ領域に保存することにより起動時のネットワーク設定を変更することができます。コンフィグ領域の保存については、7章コンフィグ領域 − 設定ファイルの保存領域を参照してください。
6.2.1.1.1. デフォルト状態のネットワーク設定
ネットワーク設定は、/etc/config/interfaces
に記述されています。デフォルト状態では、次のように設定されています。
表6.2「固定IPアドレス設定例」に示す内容に設定変更するには、viエディタで/etc/config/interfaces
を、図6.9「固定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 |
| |
---|
イーサネットガジェットは、IPv4LLによってリンクローカルアドレスが設定されるため、通常DHCPに設定する必要はありません。
|
DHCPに設定するには、viエディタで/etc/config/interfaces
を、次のように編集します。
DNSサーバーを指定する場合は、viエディタで/etc/config/resolv.conf
を編集します。
| |
---|
DHCPを利用している場合には、DHCPサーバーがDNSサーバーを通知する場合があります。この場合、/etc/config/resolv.conf は自動的に更新されます。
|
ここでは、変更したIP設定で正常に通信が可能か確認します。次のように設定を反映させます。
同じネットワーク内にある通信機器とPING通信を行います。
Armadilloでは、簡易ファイアーウォールが動作しています。設定されている内容を参照するには、図6.14「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://armadillo810-0.local/ または、http://[ArmadilloのIPアドレス]/
[]
)にアクセスすると、Armadilloのトップページ(index.html)が表示されます。
Armadillo-810でシリアルポートとして使用可能なデバイスを次に示します。
表6.5 シリアルデバイス
インターフェース | デバイスファイル(ATDE5) | デバイスファイル(Armadillo-810) |
---|
シリアルインターフェース1(CON2) | /dev/ttyS0 | /dev/ttySC8 |
シリアルインターフェース2(CON3) | /dev/ttyUSB0 | /dev/ttySC2 |
USBインターフェース(CON4)[] | /dev/ttyACM0 | /dev/ttyGS0 |
シリアルの動作を確認するには、シリアルコンソールを起動させます。ATDEのシリアル通信ソフトウェア(minicom)を用いることで、シリアル経由でArmadilloにログインすることができます。
| |
---|
Armadillo-810の工場出荷イメージでは、シリアルインターフェース2(CON3)が標準でシリアルコンソールとして使用できるようになっています。
|
シリアルインターフェース1(CON2)をシリアルコンソールとして使用する手順を次に示します。
手順6.2 シリアルコンソールとして使用
ATDEでminicomを起動します。シリアルデバイスには/dev/ttyS0
を指定します。
Armadilloでgettyを起動します。シリアルデバイスには ttySC8
[]を指定します。/etc/inittab
の設定を有効にするためには、プロセスIDが1であるinitプロセスにSIGHUPシグナルを送る必要があります。
ATDEのminicomにログインプロンプトが表示されます。ユーザー「guest」でログインすることができます。
| |
---|
以下のように/etc/securetty に端末(シリアルデバイス)を登録すると、特権ユーザー「root」でログインすることが可能になります。
|
Armadillo-810でストレージとして使用可能なデバイスを次に示します。
表6.6 ストレージデバイス
デバイス種類 | ディスクデバイス | 先頭パーティション |
---|
USBフラッシュメモリ | /dev/sd* [] | /dev/sd*1 |
SDカード | /dev/mmcblk0 | /dev/mmcblk0p1 |
ここでは、SDカードを例にストレージの使用方法を説明します。
Linuxでは、アクセス可能なファイルやディレクトリは、一つの木構造にまとめられています。あるストレージデバイスのファイルシステムを、この木構造に追加することを、マウントするといいます。マウントを行うコマンドは、mountです。
mountコマンドの典型的なフォーマットは、次の通りです。
-t
オプションに続くdevice
には、ファイルシステムタイプを指定します[]。FAT32ファイルシステムの場合はvfat
[]、EXT3ファイルシステムの場合はext3
を指定します。
device
には、ストレージデバイスのデバイスファイル名を指定します。SDカードのパーティション1の場合は/dev/mmcblk0p1
、パーティション2の場合は/dev/mmcblk0p2
となります。
dir
には、ストレージデバイスのファイルシステムをマウントするディレクトリを指定します。
SDスロットにSDカードを挿入した状態で図6.20「ストレージのマウント」に示すコマンドを実行すると、/mntディレクトリにSDカードのファイルシステムをマウントします。SDカード内のファイルは、/mntディレクトリ以下に見えるようになります。
| |
---|
FAT32ファイルシステムをマウントした場合、次の警告メッセージが表示される場合があります。
これは無視して構いません。 UTF-8 ロケールでは結局はファイル名の表示を正しく処理できないためです。
|
ストレージを安全に取り外すには、アンマウントする必要があります。アンマウントを行うコマンドは、umountです。オプションとして、アンマウントしたいデバイスがマウントされているディレクトリを指定します。
6.4.2. ストレージのパーティション変更とフォーマット
通常、購入したばかりのSDカードやUSBメモリは、一つのパーティションを持ち、FAT32ファイルシステムでフォーマットされています。
パーティション構成を変更したい場合、fdiskコマンドを使用します。fdiskコマンドの使用例として、一つのパーティションで構成されているSDカードのパーティションを、2つに分割する例を図6.22「fdiskコマンドによるパーティション変更」に示します。一度、既存のパーティションを削除してから、新たにプライマリパーティションを二つ作成しています。先頭のパーティションには100MByte、二つめのパーティションに残りの容量を割り当てています。先頭のパーティションは/dev/mmcblk0p1、二つめは/dev/mmcblk0p2となります。fdiskコマンドの詳細な使い方は、manページ等をご参照ください。
FAT32ファイルシステムでストレージデバイスをフォーマットするには、mkfs.vfatコマンドを使用します。また、EXT2やEXT3ファイルシステムでフォーマットするには、mke2fsコマンドを使用します。SDカードのパーティション1をEXT3ファイルシステムでフォーマットするコマンド例を、次に示します。
Armadillo-810のLEDは、LEDクラスとして実装されています。LEDクラスディレクトリ以下のファイルによってLEDの制御を行うことができます。LEDクラスディレクトリとLEDの対応については、表6.7「LEDクラスディレクトリとLEDの対応」を参照してください。
表6.7 LEDクラスディレクトリとLEDの対応
LEDクラスディレクトリ | 説明 | デフォルトトリガ |
---|
/sys/class/leds/LED1/ | LED1 (黄) | none |
/sys/class/leds/LED2/ | LED2 (黄) | none |
/sys/class/leds/LED3/ | LED3 (黄) | none |
/sys/class/leds/LED4/ | LED4 (黄) | none |
以降の説明では、任意のLEDを示すLEDクラスディレクトリを"/sys/class/leds/[LED]
"のように表記します。
LEDクラスディレクトリ以下のbrightnessファイルへ値を書き込むことによって、LEDの点灯/消灯を行うことができます。brightnessに書き込む有効な値は0〜255です。
brightnessに0以外の値を書き込むとLEDが点灯します。
| |
---|
Armadillo-810のLEDには輝度制御の機能が無いため、0 (消灯)、1〜255 (点灯)の2つの状態のみ指定することができます。
|
brightnessに0を書き込むとLEDが消灯します。
brightnessを読み出すとLEDの状態が取得できます。
LEDクラスディレクトリ以下のtriggerファイルへ値を書き込むことによってLEDの点灯/消灯にトリガを設定することができます。triggerに書き込む有効な値を次に示します。
表6.8 triggerの種類
設定 | 説明 |
---|
none | トリガを設定しません。 |
mmc0 | SDカードのアクセスランプにします。 |
timer | 任意のタイミングで点灯/消灯を行います。この設定にすることにより、LEDクラスディレクトリ以下にdelay_on, delay_offファイルが出現し、それぞれ点灯時間, 消灯時間をミリ秒単位で指定します。 |
heartbeat | 心拍のように点灯/消灯を行います。工場出荷イメージでは設定することができません。 |
default-on | 主にカーネルから使用します。起動時にLEDが点灯します。工場出荷イメージでは設定することができません。 |
以下のコマンドを実行すると、LEDが1秒点灯、500ミリ秒消灯を繰り返します。
triggerを読み出すとLEDのトリガが取得できます。"[ ]"が付いているものが現在のトリガです。
Armadillo-810のGPIOは、generic GPIOとして実装されています。GPIOクラスディレクトリ以下のファイルによってGPIOの制御を行うことができます。GPIOクラスディレクトリとGPIOの対応を次に示します。
表6.9 Armadillo-810 拡張ボード01 (Aコネクタ用)のCON2のGPIOディレクトリ
ピン番号 | GPIOディレクトリ |
---|
CON2 1ピン | /sys/class/gpio/gpio66/ |
CON2 2ピン | /sys/class/gpio/gpio67/ |
CON2 3ピン | /sys/class/gpio/gpio68/ |
CON2 4ピン | /sys/class/gpio/gpio69/ |
CON2 5ピン | /sys/class/gpio/gpio70/ |
CON2 6ピン | /sys/class/gpio/gpio71/ |
CON2 7ピン | /sys/class/gpio/gpio72/ |
CON2 8ピン | /sys/class/gpio/gpio73/ |
CON2 9ピン | /sys/class/gpio/gpio74/ |
CON2 10ピン | /sys/class/gpio/gpio75/ |
CON2 13ピン | /sys/class/gpio/gpio160/ |
CON2 14ピン | /sys/class/gpio/gpio161/ |
CON2 15ピン | /sys/class/gpio/gpio159/ |
CON2 16ピン | /sys/class/gpio/gpio162/ |
CON2 18ピン | /sys/class/gpio/gpio7/ |
CON2 19ピン | /sys/class/gpio/gpio8/ |
CON2 20ピン | /sys/class/gpio/gpio10/ |
CON2 21ピン | /sys/class/gpio/gpio11/ |
CON2 22ピン | /sys/class/gpio/gpio20/ |
CON2 23ピン | /sys/class/gpio/gpio12/ |
CON2 24ピン | /sys/class/gpio/gpio5/ |
CON2 25ピン | /sys/class/gpio/gpio13/ |
CON2 26ピン | /sys/class/gpio/gpio9/ |
以降の説明では、任意のGPIOを示すGPIOクラスディレクトリを"/sys/class/gpio/[GPIO]
"のように表記します。
GPIOディレクトリ以下のdirectionファイルへ値を書き込むことによって、入出力方向を変更することができます。directionに書き込む有効な値を次に示します。
表6.10 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でなければ行うことはできません。
Armadillo-810 拡張ボード01 (Aコネクタ用)には、カレンダ時計(Real Time Clock)が実装されています。電源を切断しても一定時間(平均300秒間、最小60秒間)時刻を保持することができます
| |
---|
長時間電源が切断されても時刻データを保持させたい場合は、Armadillo-810 拡張ボード01 (Aコネクタ用)のCON8(RTC外部バックアップ)にバッテリ(対応電池: CR2032)を接続します。
|
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コマンドを用いて設定します。