Armadillo-200シリーズはARM9を搭載したLinuxが動作可能な組込みCPUボードです。Armadillo-210, 220, 230, 240 があり、それぞれ以下の様な仕様となっています。
210は他とは基板サイズが異なりかなり小型のボードです。220が最もベーシックなタイプで、230はUSBの代わりに、もう一つのネットワークアダプタがついているタイプ、240はシリアルコネクタの代わりにVGAがついており、モニタへの出力ができます。(ただし、このVGAは通常コンソールとしては利用できずフレームバファデバイス経由でのみアクセス可能です。)
詳細な仕様については、アットマークテクノのサイトを参照してください。
小型の組込みCPUですので、キーボードやマウス、モニタ等は接続できず、センサを接続したり、特定のデバイスやロボットなどを制御するために使用するのが一般的な使用方法です。 外部とのインターフェースはシリアル (RS232C) と Ethernet (LAN) があります。 運用時などは、ネットワーク経由でコマンドを送ったり、モニタリングします。あるいは、Armadillo側が自発的に外部に接続してデータのやり取りを行うかもしれません。
開発時には、PCとシリアルケーブルで接続して、シリアルコンソールからLinuxにログインしてデバッグなどを行います。 X-Windowなども動作しませんので、GUIでの操作は通常出来ません。
コマンドラインでの操作やviエディタの使用に慣れておくことをおすすめします。
Armadilloは特定の用途向けのアプリケーションのみを実行することを前提としているため、一般的なPCとは異なり十分な容量のハードディスクやメモリを搭載していません。 したがって、アプリケーション・プログラムの開発もArmadillo上で行うのではなく、PC上の開発環境内で行い、コンパイルしたバイナリを何らかの方法でArmadilloに転送して実行します。 一般的なPCのCPUはIntelのx86系アーキテクチャのものですが、ArmadilloはARMという異なるアーキテクチャのCPUを搭載しています。x86用のバイナリはARM上では実行できませんし、その逆も不可能です。 PC上の開発環境ではARM用の実行ファイルをコンパイルできるコンパイラを動作させ、アプリケーションを開発することになります。 こうした開発方法をクロス開発と呼びます(下図)。
Armadilloは開封すると、ベースとなる基板とピンヘッダや各種コネクタ (USB、シリアル、VGA、DC、Ehternet等) 、LEDなどが同梱されています。 必要な部品類を半田付けして組み立てましょう。 詳細は、Armadilloのハードウエアマニュアルを参照してください。
開発時には Armadillo はPCからシリアルコンソールで操作しますので、下図のように Armadillo と PC をシリアルケーブルで接続します。
PC側のシリアルポートとArmadilloのシリアルポートを接続してください。 Armadillo-220では基板上にD-SUBのRS232Cコネクタがありますので、Armadilloに付属のクロスケーブルでPCと接続します。 Armadillo-240の場合は、D-SUBコネクタがありませんので、Armadilloに付属しているシリアルポート変換ケーブルを基板上のピンヘッダへ接続して、反対側のD-SUBコネクタをシリアルケーブルにつなぎこれをPCに接続します。
最近のPCやノートPCではシリアルポートが無いことがあります。その場合はUSBシリアル変換 (ケーブルタイプのものやコネクタタイプのものなどがあります) を使用してください。
また、LANケーブルをLANコネクタに接続します。Armadilloは通常DHCPでIPアドレスを取得しますので、DHCPが利用できるネットワーク環境を用意してください。
PCとArmadilloをシリアルケーブルで接続したら、シリアルコンソールを利用するためのターミナルアプリケーションをインストールします。 様々な種類のターミナルソフトがありますが、おすすめはTeraTermです。 以降TeraTermの利用を前提として説明します
TeratTermを起動します。
はじめにSSHおよびシリアル接続を選択するダイアログが表示されます。 利用可能なシリアルポートがあれば、ダイアログの下部のシリアルポートが選択できます。この場合COM2がArmadilloに接続されているシリアルポートなので、COM2を選択します。
Armadilloに接続可能なシリアルポートがどれかわからない場合は、デバイスマネージャなどで調べることができます。 Windows7の場合、「コントロールパネル」->「システムとセキュリティー」->「システム」->「デバイスマネージャ」からアクセスできます。
Armadilloに電源を入れると、以下のように起動します。
ログインプロンプトが出たら起動完了です。アカウント名 root, パスワード rootでログインしてみてください。 ほぼ通常のLinuxのように利用できます。
ifconfigコマンドを入力してArmadilloのIPアドレスを調べます。
[root@a240-0 (ttyAM0) ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:11:0C:05:07:60 inet addr:192.168.0.12 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::211:cff:fe05:760/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:5760 errors:0 dropped:0 overruns:0 frame:0 TX packets:53 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:39 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:9 errors:0 dropped:0 overruns:0 frame:0 TX packets:9 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:480 (480.0 B) TX bytes:480 (480.0 B)
eth0がLANのインターフェースです。192.168.0.12 というのがこのArmadilloのIPアドレスです。 ブラウザでこのアドレスにアクセスしてみてください。
AT AdminというArmadilloの管理ページが表示されるはずです。 Systemメニューを表示するには以下のIDとパスワードが必要です。
AT Adminのページが表示されない場合、ArmadilloにインストールされているromfsイメージがAT Adminに対応していない可能性がありますので、後述の「イメージの書き換え(Hermit-At)」で、デフォルトのイメージ (BaseではなくRecover) に書き換えてください。
AT AdminはブラウザからArmadilloの各種設定を行えて便利なのですが、ArmadilloのIPアドレスを毎回調べなければなりません。そこで、これを解決するために Bonjour (およびAvahi) を利用します。
BonjourはAppleが提唱するネットワーク上のサービスを自動的に検索して利用できるようにするためのサービスです。 Armadilloでは通常、AT-AdminというブラウザからArmadilloをリモート管理するためのサービスがBonjourから利用できるようになっています。 Bonjourのサービスを検索するためには、PCにBonjourがインストールされている必要があります。
Mac OS XではデフォルトでBonjourが利用できるようになっています。 LinuxではAvahiというBonjour互換サービス (Avahi) が利用できます。詳細な利用方法はディストリビューションごとのマニュアルを参照してください。
Windowsではデフォルトではインストールされていません。最も簡単にBonjourを導入する方法は iTunes をインストールすることです。
どうしてもiTunesをインストールしたくない場合は、アーカイバアプリケーションなどで、ダウンロードした iTunesSetup.exe を展開すると BonjourSetup.exe を抽出することもできます。
また、以下のApple Bonjour印刷サービスにもBonjourが同梱されています。(iTunesに同梱されているものよりバージョンが若干古いようです。)
現在ApplieではBonjour for Windows単体としては配布は行なっていませんが、かつて配布していたものを再配布しているサイトも幾つかあります。(ただし、古いバージョンしか入手できないようです。) 以下はAppleサイト以外のBonjourダウンロードサイトです。自己責任でご利用ください。
FirefoxにはBonjourサービスを検索するアドオンが用意されています。
Firefoxで上記サイトをアクセスし、「+Firefoxに追加」をクリックしインストールしてください。 インストールするとアドレスバーの左側に、図のようなアイコンが現れます。
このアイコンをクリックすると
同一ネットワークでArmadilloが動作している場合、AT Admin on axxx... といったメニューが表示されるかもしれません。これをクリックすると図のような AT Adminのサービス画面が表示されます。
ここから、Armadilloの様々な設定をブラウザから行うことができます。
Bonjourが正しくインストールさていない場合、以下のように No servicesと表示されます。
古いバージョンのBonjour (v1.0系) をインストールすると、Internet Explorer (IE) のエクスプローラバーにBonjourサービスを表示するアドオンがインストールされます。 (これはBonjour v1.0.6.2とIE9 (64bit) の組み合わせで動作しました。他のバージョンでも動作する可能性はありますが未検証です。)
図のようにメニューから「表示(V)」->「エクスプローラーバー(E)」->「Bonjour」を選択すると、Bonjourのサービス一覧を表示するペインが左側に現れます。 メニューが表示されない場合、メニューが非表示になっている可能性があります。Altキーを押してメニューを表示してください。 (メニューにBonjourがない場合、BonjourとIEのバージョンがそれぞれ動作しない組み合わせである可能性があります。Firefoxを利用することをおすすめします。)
同一ネットワークでArmadilloが動作している場合、AT Admin on axxx... といったメニューが表示されるかもしれません。これをクリックすると、Armadillono管理サービスAT Adminの画面がブラウザに表示されます。
ファイヤウォールが動作している場合、Bonjourがうまく機能しないことがあります。 その場合、UDPポート5353を開放するかファイヤウォールをOFFにしてください。
AT Adminが使えない場合、もしくは独自のシステムに入れ替える場合、Armadillo上のLinuxシステムを書き換える必要があります。 ArmadilloのFlashメモリには
といった領域があり、それぞれ必要に応じて入れ替えることができます。 各領域は、メモリ上で実際に動作する際の状態(あるいはそれを圧縮した状態)で格納されており、これを通常イメージと呼びます。 ブートローダが他の領域をメインメモリ(RAM)利用域にコピーまたは展開して、システムが動き出します。 bootloaderおよびconfigは通常入れ替える必要はほとんどなく、システムの構成を変更する際は主にLinuxカーネルとユーザランドを入れ替えます。
LinuxカーネルはLinuxのOSそのものであり、すべてのアプリケーション・プログラムはLinuxカーネルの制御下で動作します。 アプリケーション・プログラムが利用するファイル、メモリやデバイスの管理・リソース割り当て等を行います。 Linuxのカーネルの書き換えは、主にカーネルにデバイスドライバを追加(または削除)したい場合、Linuxカーネルの機能を有効(または無効)にしたい場合などに行います。
一方、ユーザランドはシステムが利用するプログラム等を含むLinuxのファイルシステムです。 新しいコマンドやライブラリ、アプリケーション・プログラムを追加したい場合はユーザランドをコンパイルしなおして、ArmadilloのFlashメモリ内のユーザランドイメージを書き換える必要があります。
Armadilloでは主に以下の2種類のイメージの書き換え方法があります。
最も基本的な書き換え方法です。 PC上で動作するHermit-Atというアプリケーションからシリアルポート経由でFlashメモリを書き換えます。 シリアルポートを利用するため、後述のnetflashより遅いという欠点がありますが、Armadillo上のLinuxシステムが動作していなくても、イメージを書き換えることができます。
システムのイメージが不正な状態で起動しない場合などはこの方法で書き換えて復活させるしか方法がありません。
Hermit-AtはアットマークテクノのWebサイトからダウンロードできます。
また、デフォルトのカーネルイメージとユーザランドイメージに書き換える場合は、以下の2つのイメージもダウンロードしてください。
ArmadilloのDCコネクタ付近に4本(2x2)のピンヘッダが出ています。 このうち、逆サイドのLANコネクタやUSBコネクタに近い2ピンをジャンパでショートさせます。 これで、hermitによるROM書き込みモードになります。 この段階ではまだArmadilloに電源を入れないでください。
hermit.exe を起動するとこのようなウインドウが現れます。
まず、使用するシリアルポートを選択します。 ここでは、COM2がArmadilloに接続されているシリアルポートです。
Memmapボタンを押してみてください。PCとArmadilloが正しく接続されており、ArmadilloがHermitのダウンロードモードになっていれば、メモリマップが表示されます。
これから書き換えようとしているのは、kernel のカーネル領域と、userlandのユーザランド領域です。
まず、カーネルの書き換えを行います。 Erase ボタンを押し、Regionのプルダウンで kernelを選択し、実行ボタンを押します。
ダイアログが表示されカーネル領域が削除されます。
linux.bin.gz (拡張子が見えず linux.bin と表示されますが、種類がGZファイルとなっているほう) を選択します。以上が終わったら実行ボタンをクリックします。 書き込みダイアログが表示され、数分でカーネルの書き込みは終了します。
次にユーザランドを書き換えます。 カーネル同様、Erase メニューで userland を削除してからDownloadメニューで、
を選択し、書き込みを行います。 ユーザランドはファイルサイズが大きいため、書き換えには十数分かかります。
以上で、カーネルとユーザランドの書き換えは終了です。
NetflashはローカルのファイルまたはインターネットからイメージファイルをダウンロードしFlashメモリを直接書き換えるツールです。 シリアルコンソールからArmadilloにログインしnetflashコマンドを利用する方法と、AT Adminから利用する2通りの方法があります。
netflashは以下の様なオプションを取ります。
usage: netflash [-bCfFhijklntuv?] [-c console-device] [-d delay] [-o offset] [-r flash-device] [net-server] file-name
[root@a240-0 (ttyAM0) ~]# ls /dev/flash/ bootloader config kernel nand nandblock userland
利用するのは主に /dev/flash/kernel と /dev/flash/userland です。
カーネルを書き換える場合は以下のように入力します。
[root@a240-0 (ttyAM0) ~]# netflash -k -n -r /dev/flash/kernel http://armadillo.atmark-techno.com/files/downloads/armadillo-240/images/linux-a240-1.10.bin.gz : (中略) netflash: programming FLASH device /dev/flash/kernel ....................... Restarting system.
書き換えが終わると再起動します。 ユーザランドを書き換える場合は以下のように入力します。
[root@a240-0 (ttyAM0) ~]# netflash -k -n -r /dev/flash/userland http://armadillo.atmark-techno.com/files/downloads/armadillo-240/images/romfs-a240-recover-1.11.img.gz : (中略) netflash: programming FLASH device /dev/flash/userland ....................................................................................................... Restarting system.
こちらも書き換えが終わるとシステムが再起動されます。 ユーザランドの書き換えも2分程度で終わります。シリアル経由で書き換えた場合に比べ非常に早く書き換えが可能です。
ArmadilloでAT Adminが動作していれば、Systemメニューから書き換えを行うことができます。
AT AdminのSystemメニューをクリックし、Frimwareサブメニューに入ります。
「Get firmware options」をクリックすると、利用可能なユーザランドイメージとカーネルイメージが自動的に取得され、プルダウンメニューから選択可能になります。
通常、最も新しいバージョンのイメージを選択します。
Allow all image types にチェックを入れ、「Update userland」を押すと、イメージの書き換えが始まります。
カーネルで1分程度、ユーザランドで2-3分程度で書き替えが終わります。書き換えが終わると、元のFirmware画面に戻ります。
サンプルのRTコンポーネントをArmadillo上で起動し、PC上のコンポーネントと通信させてみます。 PC上にOpenRTM-aist C++ (の最新版) をインストールしてください。 以下ではPCのOSがWindowsであることを前提として話を進めます。
OpenRTM-aistのコンポーネントをUSBメモリから自動起動するためのカーネルとユーザランドイメージへ書き換えを行います。
AT Admin の「System」->「Firmware」メニューにアクセスします。
上図のように、ページ下部
Current firmware download location: http://download.atmark-techno.com/armadillo-2x0/images/ change
のchange をクリックします。 下図のように、Firmwareのダウンロードサイトを入力する画面になりますので、
http://openrtm.org/pub/Armadillo/images/Armadillo-240
と入力しUpdateボタンを押します。
先ほどのFirmwareページに戻りますので、「Get firmware options」 ボタンを押すと、上記サイトのFirmwareオプションが選択できるようになります。
幾つかあるイメージのうち、以下のイメージを使用します。
x.y は最新のバージョンに読み替えてください。
上記で説明したように、ユーザランドとカーネルをそれぞれ書き換えてください。 (ユーザランドを書き換えるときはAllow all image types をチェックしてください。)
Armadilloは設定を恒久的に保存できるようにフラッシュメモリの一部にconfig領域を持っています。 以前に使用されたことがあるArmadilloの基盤の場合、config保存領域 (/etc/config 以下) に古い設定ファイルが残っているケースがあります。 romfsを更新したので、それにあわせてconfigファイル群も更新する必要があります。Armadilloを起動、ログインしシェルから
# flatfsd -w
と入力すると、romfsの /etc/default のファイルが config 領域に書き込まれます。 flatfsdコマンドの主なオプションは以下の通りです。
空のUSBフラッシュメモリを用意してください。 以下のZIPファイルをダウンロードし、USBメモリ上に展開してください。 USBメモリのルートディレクトリに boot.sh が配置されるようにします。
このファイルにはOpenRTM-aistのサンプル SeqInComp が含まれています。ArmadilloにUSBメモリを挿入すると、自動的にSeqOutCompが起動します。 このSeqInCompと、PC上のSeqOutCompを接続してみます。
PC上でネームサーバを起動しこれを利用するので、USBメモリ上のrtc.confのネームサーバ位の設定を書き換えます。PCのアドレスが仮に 192.168.0.10 であるばあい、rtc.confの corba.nameservers の設定を以下のように書き換えます。
corba.nameservers: 192.168.0.10
PC上でネームサーバを起動します。Windowsの場合は、スタートメニューからOpenRTM-aistのtoolフォルダ内にある「Start Naming Service」から起動します。
「OpenRTM-aist」->「C++」->「」 PCに複数のネットワークインターフェースが存在する場合は注意が必要で、 rtm-naming.bat 内の
OMNIORB_HOST
の値をArmadillo が接続されているネットワークに接続されているインターフェースのIPアドレスにセットする必要があるかもしれません。
OpenRTM-aistのサンプルフォルダ内のSeqInCompを起動します。 ネームサービス同様、PCにネットワークインターフェースが複数ある場合は、SeqInComp.exeと同じフォルダにあるrtc.confを書き換える必要があるかもしれません。
corba.nameservers: 192.168.0.10 corba.endpoints: 192.168.0.10:
ArmadilloにUSBメモリを挿入します。もしくは、USBメモリを挿した状態でArmadilloを起動します。 うまく行けば、Armadillo上でSeqOutCompが起動します。シリアルコンソールをつないでいる場合はPCからArmadilloにログインし、mountコマンドやpsコマンドで状態を確認します。
[root@a240-0 (ttyp0) /home/openrtm]# mount
:中略 /dev/sda1 on /home/openrtm type vfat (rw,nodiratime,fmask=0000,dmask=0022,codepage=cp932,iocharset=euc-jp) [root@a240-0 (ttyp0) /home/openrtm]# ps : 中略 854 root 7396 S < /home/openrtm/rtc/SeqOutComp -f /home/openrtm/rtc.con 855 root 7396 S < /home/openrtm/rtc/SeqOutComp -f /home/openrtm/rtc.con 856 root 7396 S < /home/openrtm/rtc/SeqOutComp -f /home/openrtm/rtc.con 857 root 7396 S < /home/openrtm/rtc/SeqOutComp -f /home/openrtm/rtc.con 858 root 7396 S < /home/openrtm/rtc/SeqOutComp -f /home/openrtm/rtc.con
USBメモリがマウントされ、SeqOutCompが起動していることがわかります。
RTSystemEditorを起動します。「OpenRTM-aist」→「C++」→「tools」->「RTSystemEditor」から起動します。 ネームサービスビューの上部のコンセントのアイコンのボタンをクリックし、上記のPCアドレス (192.168.0.10) を入力しネームサーバいへ接続します。
正常であれば、図のようにSeqInとSeqOutの2つのコンポーネントが見えるはずです。 メニューバーのONボタンをクリックし、中央にエディタを開きます。 これら両方のコンポーネントを、ネームサービスビューから中央のエディタへドラッグアンドドロップします。
8個のポートがあるコンポーネントがそれぞれ起動します。ポート間をRTsystemEditorで接続し、メニューバーの緑の再生ボタンのようなAll Activateボタンを押すと、2つのコンポーネントが緑になりActive化され動き出します。
SeqInコンポーネントのコンソール画面に様々な数字がスクロールして表示されます。 Armadillo上で動いているSeqOutCompからPC上で動いているSeqInCompへデータが送られていることが分かります。
これで、Armadillo上でRTコンポーネントを動作させる方法が何となくわかったのではないかと思います。次は、実際にコンポーネントのクロス開発環境を構築する方法について説明します。
モーションエディタ/シミュレータ
動力学シミュレータ
統合開発プラットフォーム
産総研が提供するRTC集
東京オープンソースロボティクス協会
ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク
サンプルコンポーネントの実行
Armadillo-200シリーズ
Armadillo-200シリーズはARM9を搭載したLinuxが動作可能な組込みCPUボードです。Armadillo-210, 220, 230, 240 があり、それぞれ以下の様な仕様となっています。
PoE(Type B) 対応
210は他とは基板サイズが異なりかなり小型のボードです。220が最もベーシックなタイプで、230はUSBの代わりに、もう一つのネットワークアダプタがついているタイプ、240はシリアルコネクタの代わりにVGAがついており、モニタへの出力ができます。(ただし、このVGAは通常コンソールとしては利用できずフレームバファデバイス経由でのみアクセス可能です。)
詳細な仕様については、アットマークテクノのサイトを参照してください。
外部とのインターフェース
小型の組込みCPUですので、キーボードやマウス、モニタ等は接続できず、センサを接続したり、特定のデバイスやロボットなどを制御するために使用するのが一般的な使用方法です。 外部とのインターフェースはシリアル (RS232C) と Ethernet (LAN) があります。 運用時などは、ネットワーク経由でコマンドを送ったり、モニタリングします。あるいは、Armadillo側が自発的に外部に接続してデータのやり取りを行うかもしれません。
開発時には、PCとシリアルケーブルで接続して、シリアルコンソールからLinuxにログインしてデバッグなどを行います。 X-Windowなども動作しませんので、GUIでの操作は通常出来ません。
コマンドラインでの操作やviエディタの使用に慣れておくことをおすすめします。
クロス開発
Armadilloは特定の用途向けのアプリケーションのみを実行することを前提としているため、一般的なPCとは異なり十分な容量のハードディスクやメモリを搭載していません。 したがって、アプリケーション・プログラムの開発もArmadillo上で行うのではなく、PC上の開発環境内で行い、コンパイルしたバイナリを何らかの方法でArmadilloに転送して実行します。 一般的なPCのCPUはIntelのx86系アーキテクチャのものですが、ArmadilloはARMという異なるアーキテクチャのCPUを搭載しています。x86用のバイナリはARM上では実行できませんし、その逆も不可能です。 PC上の開発環境ではARM用の実行ファイルをコンパイルできるコンパイラを動作させ、アプリケーションを開発することになります。 こうした開発方法をクロス開発と呼びます(下図)。
Armadilloを組み立てる
Armadilloは開封すると、ベースとなる基板とピンヘッダや各種コネクタ (USB、シリアル、VGA、DC、Ehternet等) 、LEDなどが同梱されています。 必要な部品類を半田付けして組み立てましょう。 詳細は、Armadilloのハードウエアマニュアルを参照してください。
Armadilloの起動
PCとArmadilloの接続
開発時には Armadillo はPCからシリアルコンソールで操作しますので、下図のように Armadillo と PC をシリアルケーブルで接続します。
PC側のシリアルポートとArmadilloのシリアルポートを接続してください。 Armadillo-220では基板上にD-SUBのRS232Cコネクタがありますので、Armadilloに付属のクロスケーブルでPCと接続します。 Armadillo-240の場合は、D-SUBコネクタがありませんので、Armadilloに付属しているシリアルポート変換ケーブルを基板上のピンヘッダへ接続して、反対側のD-SUBコネクタをシリアルケーブルにつなぎこれをPCに接続します。
最近のPCやノートPCではシリアルポートが無いことがあります。その場合はUSBシリアル変換 (ケーブルタイプのものやコネクタタイプのものなどがあります) を使用してください。
また、LANケーブルをLANコネクタに接続します。Armadilloは通常DHCPでIPアドレスを取得しますので、DHCPが利用できるネットワーク環境を用意してください。
ターミナルソフトのインストール
PCとArmadilloをシリアルケーブルで接続したら、シリアルコンソールを利用するためのターミナルアプリケーションをインストールします。 様々な種類のターミナルソフトがありますが、おすすめはTeraTermです。 以降TeraTermの利用を前提として説明します
電源を入れる
TeratTermを起動します。
はじめにSSHおよびシリアル接続を選択するダイアログが表示されます。 利用可能なシリアルポートがあれば、ダイアログの下部のシリアルポートが選択できます。この場合COM2がArmadilloに接続されているシリアルポートなので、COM2を選択します。
Armadilloに接続可能なシリアルポートがどれかわからない場合は、デバイスマネージャなどで調べることができます。 Windows7の場合、「コントロールパネル」->「システムとセキュリティー」->「システム」->「デバイスマネージャ」からアクセスできます。
Armadilloに電源を入れると、以下のように起動します。
ログインプロンプトが出たら起動完了です。アカウント名 root, パスワード rootでログインしてみてください。 ほぼ通常のLinuxのように利用できます。
ifconfigコマンドを入力してArmadilloのIPアドレスを調べます。
eth0がLANのインターフェースです。192.168.0.12 というのがこのArmadilloのIPアドレスです。 ブラウザでこのアドレスにアクセスしてみてください。
AT AdminというArmadilloの管理ページが表示されるはずです。 Systemメニューを表示するには以下のIDとパスワードが必要です。
AT Adminのページが表示されない場合、ArmadilloにインストールされているromfsイメージがAT Adminに対応していない可能性がありますので、後述の「イメージの書き換え(Hermit-At)」で、デフォルトのイメージ (BaseではなくRecover) に書き換えてください。
Bonjourのインストール
AT AdminはブラウザからArmadilloの各種設定を行えて便利なのですが、ArmadilloのIPアドレスを毎回調べなければなりません。そこで、これを解決するために Bonjour (およびAvahi) を利用します。
BonjourはAppleが提唱するネットワーク上のサービスを自動的に検索して利用できるようにするためのサービスです。 Armadilloでは通常、AT-AdminというブラウザからArmadilloをリモート管理するためのサービスがBonjourから利用できるようになっています。 Bonjourのサービスを検索するためには、PCにBonjourがインストールされている必要があります。
Mac OS XではデフォルトでBonjourが利用できるようになっています。 LinuxではAvahiというBonjour互換サービス (Avahi) が利用できます。詳細な利用方法はディストリビューションごとのマニュアルを参照してください。
Windowsではデフォルトではインストールされていません。最も簡単にBonjourを導入する方法は iTunes をインストールすることです。
どうしてもiTunesをインストールしたくない場合は、アーカイバアプリケーションなどで、ダウンロードした iTunesSetup.exe を展開すると BonjourSetup.exe を抽出することもできます。
参考 (上記の方法でBonjourをインストールした場合は不要)
また、以下のApple Bonjour印刷サービスにもBonjourが同梱されています。(iTunesに同梱されているものよりバージョンが若干古いようです。)
現在ApplieではBonjour for Windows単体としては配布は行なっていませんが、かつて配布していたものを再配布しているサイトも幾つかあります。(ただし、古いバージョンしか入手できないようです。) 以下はAppleサイト以外のBonjourダウンロードサイトです。自己責任でご利用ください。
Firefox アドオンのインストール
FirefoxにはBonjourサービスを検索するアドオンが用意されています。
Firefoxで上記サイトをアクセスし、「+Firefoxに追加」をクリックしインストールしてください。 インストールするとアドレスバーの左側に、図のようなアイコンが現れます。
このアイコンをクリックすると
同一ネットワークでArmadilloが動作している場合、AT Admin on axxx... といったメニューが表示されるかもしれません。これをクリックすると図のような AT Adminのサービス画面が表示されます。
ここから、Armadilloの様々な設定をブラウザから行うことができます。
Bonjourが正しくインストールさていない場合、以下のように No servicesと表示されます。
Internet Explorerによる検索
古いバージョンのBonjour (v1.0系) をインストールすると、Internet Explorer (IE) のエクスプローラバーにBonjourサービスを表示するアドオンがインストールされます。 (これはBonjour v1.0.6.2とIE9 (64bit) の組み合わせで動作しました。他のバージョンでも動作する可能性はありますが未検証です。)
図のようにメニューから「表示(V)」->「エクスプローラーバー(E)」->「Bonjour」を選択すると、Bonjourのサービス一覧を表示するペインが左側に現れます。 メニューが表示されない場合、メニューが非表示になっている可能性があります。Altキーを押してメニューを表示してください。 (メニューにBonjourがない場合、BonjourとIEのバージョンがそれぞれ動作しない組み合わせである可能性があります。Firefoxを利用することをおすすめします。)
同一ネットワークでArmadilloが動作している場合、AT Admin on axxx... といったメニューが表示されるかもしれません。これをクリックすると、Armadillono管理サービスAT Adminの画面がブラウザに表示されます。
Bonjourがうまく機能しない場合
ファイヤウォールが動作している場合、Bonjourがうまく機能しないことがあります。 その場合、UDPポート5353を開放するかファイヤウォールをOFFにしてください。
イメージの書き換え
AT Adminが使えない場合、もしくは独自のシステムに入れ替える場合、Armadillo上のLinuxシステムを書き換える必要があります。 ArmadilloのFlashメモリには
といった領域があり、それぞれ必要に応じて入れ替えることができます。 各領域は、メモリ上で実際に動作する際の状態(あるいはそれを圧縮した状態)で格納されており、これを通常イメージと呼びます。 ブートローダが他の領域をメインメモリ(RAM)利用域にコピーまたは展開して、システムが動き出します。 bootloaderおよびconfigは通常入れ替える必要はほとんどなく、システムの構成を変更する際は主にLinuxカーネルとユーザランドを入れ替えます。
LinuxカーネルはLinuxのOSそのものであり、すべてのアプリケーション・プログラムはLinuxカーネルの制御下で動作します。 アプリケーション・プログラムが利用するファイル、メモリやデバイスの管理・リソース割り当て等を行います。 Linuxのカーネルの書き換えは、主にカーネルにデバイスドライバを追加(または削除)したい場合、Linuxカーネルの機能を有効(または無効)にしたい場合などに行います。
一方、ユーザランドはシステムが利用するプログラム等を含むLinuxのファイルシステムです。 新しいコマンドやライブラリ、アプリケーション・プログラムを追加したい場合はユーザランドをコンパイルしなおして、ArmadilloのFlashメモリ内のユーザランドイメージを書き換える必要があります。
Armadilloでは主に以下の2種類のイメージの書き換え方法があります。
Hermit-Atを利用した書き換え
最も基本的な書き換え方法です。 PC上で動作するHermit-Atというアプリケーションからシリアルポート経由でFlashメモリを書き換えます。 シリアルポートを利用するため、後述のnetflashより遅いという欠点がありますが、Armadillo上のLinuxシステムが動作していなくても、イメージを書き換えることができます。
システムのイメージが不正な状態で起動しない場合などはこの方法で書き換えて復活させるしか方法がありません。
Hermit-AtはアットマークテクノのWebサイトからダウンロードできます。
また、デフォルトのカーネルイメージとユーザランドイメージに書き換える場合は、以下の2つのイメージもダウンロードしてください。
ジャンパピンの変更
ArmadilloのDCコネクタ付近に4本(2x2)のピンヘッダが出ています。 このうち、逆サイドのLANコネクタやUSBコネクタに近い2ピンをジャンパでショートさせます。 これで、hermitによるROM書き込みモードになります。 この段階ではまだArmadilloに電源を入れないでください。
Hermit-At Win32 の起動
hermit.exe を起動するとこのようなウインドウが現れます。
まず、使用するシリアルポートを選択します。 ここでは、COM2がArmadilloに接続されているシリアルポートです。
Memmapボタンを押してみてください。PCとArmadilloが正しく接続されており、ArmadilloがHermitのダウンロードモードになっていれば、メモリマップが表示されます。
これから書き換えようとしているのは、kernel のカーネル領域と、userlandのユーザランド領域です。
カーネルの書き換え
まず、カーネルの書き換えを行います。 Erase ボタンを押し、Regionのプルダウンで kernelを選択し、実行ボタンを押します。
ダイアログが表示されカーネル領域が削除されます。
次にダウンロードボタンを押し、linux.bin.gz (拡張子が見えず linux.bin と表示されますが、種類がGZファイルとなっているほう) を選択します。以上が終わったら実行ボタンをクリックします。 書き込みダイアログが表示され、数分でカーネルの書き込みは終了します。
ユーザランドの書き換え
次にユーザランドを書き換えます。 カーネル同様、Erase メニューで userland を削除してからDownloadメニューで、
を選択し、書き込みを行います。 ユーザランドはファイルサイズが大きいため、書き換えには十数分かかります。
以上で、カーネルとユーザランドの書き換えは終了です。
Netflashを利用した書き換え
NetflashはローカルのファイルまたはインターネットからイメージファイルをダウンロードしFlashメモリを直接書き換えるツールです。 シリアルコンソールからArmadilloにログインしnetflashコマンドを利用する方法と、AT Adminから利用する2通りの方法があります。
コンソールから書き換え
netflashは以下の様なオプションを取ります。
利用するのは主に /dev/flash/kernel と /dev/flash/userland です。
カーネルを書き換える場合は以下のように入力します。
書き換えが終わると再起動します。 ユーザランドを書き換える場合は以下のように入力します。
こちらも書き換えが終わるとシステムが再起動されます。 ユーザランドの書き換えも2分程度で終わります。シリアル経由で書き換えた場合に比べ非常に早く書き換えが可能です。
AT Adminから書き換え
ArmadilloでAT Adminが動作していれば、Systemメニューから書き換えを行うことができます。
AT AdminのSystemメニューをクリックし、Frimwareサブメニューに入ります。
「Get firmware options」をクリックすると、利用可能なユーザランドイメージとカーネルイメージが自動的に取得され、プルダウンメニューから選択可能になります。
通常、最も新しいバージョンのイメージを選択します。
Allow all image types にチェックを入れ、「Update userland」を押すと、イメージの書き換えが始まります。
カーネルで1分程度、ユーザランドで2-3分程度で書き替えが終わります。書き換えが終わると、元のFirmware画面に戻ります。
コンポーネントの起動
サンプルのRTコンポーネントをArmadillo上で起動し、PC上のコンポーネントと通信させてみます。 PC上にOpenRTM-aist C++ (の最新版) をインストールしてください。 以下ではPCのOSがWindowsであることを前提として話を進めます。
OpenRTM-aist用イメージへの書き換え
OpenRTM-aistのコンポーネントをUSBメモリから自動起動するためのカーネルとユーザランドイメージへ書き換えを行います。
AT Admin の「System」->「Firmware」メニューにアクセスします。
上図のように、ページ下部
のchange をクリックします。 下図のように、Firmwareのダウンロードサイトを入力する画面になりますので、
と入力しUpdateボタンを押します。
先ほどのFirmwareページに戻りますので、「Get firmware options」 ボタンを押すと、上記サイトのFirmwareオプションが選択できるようになります。
幾つかあるイメージのうち、以下のイメージを使用します。
x.y は最新のバージョンに読み替えてください。
上記で説明したように、ユーザランドとカーネルをそれぞれ書き換えてください。 (ユーザランドを書き換えるときはAllow all image types をチェックしてください。)
flatfsdによるconfigファイルの更新
Armadilloは設定を恒久的に保存できるようにフラッシュメモリの一部にconfig領域を持っています。 以前に使用されたことがあるArmadilloの基盤の場合、config保存領域 (/etc/config 以下) に古い設定ファイルが残っているケースがあります。 romfsを更新したので、それにあわせてconfigファイル群も更新する必要があります。Armadilloを起動、ログインしシェルから
と入力すると、romfsの /etc/default のファイルが config 領域に書き込まれます。 flatfsdコマンドの主なオプションは以下の通りです。
USBメモリの準備
空のUSBフラッシュメモリを用意してください。 以下のZIPファイルをダウンロードし、USBメモリ上に展開してください。 USBメモリのルートディレクトリに boot.sh が配置されるようにします。
このファイルにはOpenRTM-aistのサンプル SeqInComp が含まれています。ArmadilloにUSBメモリを挿入すると、自動的にSeqOutCompが起動します。 このSeqInCompと、PC上のSeqOutCompを接続してみます。
PC上でネームサーバを起動しこれを利用するので、USBメモリ上のrtc.confのネームサーバ位の設定を書き換えます。PCのアドレスが仮に 192.168.0.10 であるばあい、rtc.confの corba.nameservers の設定を以下のように書き換えます。
ネームサーバの起動
PC上でネームサーバを起動します。Windowsの場合は、スタートメニューからOpenRTM-aistのtoolフォルダ内にある「Start Naming Service」から起動します。
「OpenRTM-aist」->「C++」->「」 PCに複数のネットワークインターフェースが存在する場合は注意が必要で、 rtm-naming.bat 内の
OMNIORB_HOST
の値をArmadillo が接続されているネットワークに接続されているインターフェースのIPアドレスにセットする必要があるかもしれません。
SeqInCompの起動
OpenRTM-aistのサンプルフォルダ内のSeqInCompを起動します。 ネームサービス同様、PCにネットワークインターフェースが複数ある場合は、SeqInComp.exeと同じフォルダにあるrtc.confを書き換える必要があるかもしれません。
USBメモリの挿入
ArmadilloにUSBメモリを挿入します。もしくは、USBメモリを挿した状態でArmadilloを起動します。 うまく行けば、Armadillo上でSeqOutCompが起動します。シリアルコンソールをつないでいる場合はPCからArmadilloにログインし、mountコマンドやpsコマンドで状態を確認します。
[root@a240-0 (ttyp0) /home/openrtm]# mount
USBメモリがマウントされ、SeqOutCompが起動していることがわかります。
コンポーネントの接続
RTSystemEditorを起動します。「OpenRTM-aist」→「C++」→「tools」->「RTSystemEditor」から起動します。 ネームサービスビューの上部のコンセントのアイコンのボタンをクリックし、上記のPCアドレス (192.168.0.10) を入力しネームサーバいへ接続します。
正常であれば、図のようにSeqInとSeqOutの2つのコンポーネントが見えるはずです。 メニューバーのONボタンをクリックし、中央にエディタを開きます。 これら両方のコンポーネントを、ネームサービスビューから中央のエディタへドラッグアンドドロップします。
8個のポートがあるコンポーネントがそれぞれ起動します。ポート間をRTsystemEditorで接続し、メニューバーの緑の再生ボタンのようなAll Activateボタンを押すと、2つのコンポーネントが緑になりActive化され動き出します。
SeqInコンポーネントのコンソール画面に様々な数字がスクロールして表示されます。 Armadillo上で動いているSeqOutCompからPC上で動いているSeqInCompへデータが送られていることが分かります。
これで、Armadillo上でRTコンポーネントを動作させる方法が何となくわかったのではないかと思います。次は、実際にコンポーネントのクロス開発環境を構築する方法について説明します。