RM-boardの開発環境整備2

iXsリサーチから提供されているRM-boardの開発環境は、VMWare上のDebianを使ったC言語のクロスコンパイル環境です。

これならRM-boardのパフォーマンスを最大限に生かすプログラムを作れますが、まだ何から手をつけてよいかわからない段階では、いちいちコンパイルして転送して実行するのは面倒くさいです。

何か良い言語がないかと思ったのですが、ゼミでやっているLuaがちょうど良いのではないかと考えました。たしか、4足でJollyPochieチームもLuaを使っていたはずですし。

とりあえず最新の5.1.4をダウンロードすると216Kbyte程度しかありません。シンプルでよいですね。Macではあっけなくコンパイル&実行できました。

次にVirtualBox上のUbuntuに転送し、先に構築したクロス環境でビルドしてみました。そのままではエラーやら出たので、src/Makefileに以下のような行を適当なところに挿入。

CC = arm-linux-gcc
LD = arm-linux-ld

さらにgeneric:の行をコピーして、以下のように変更。
rmboard:
$(MAKE) all MYCFLAGS="-I/usr/arm-linux/include -DLUA_USE_MKSTEMP"

こうしてビルドしてみると見事にluaとluacが出来上がりました。

恐る恐る実機に転送して実行してみると、ちゃんとLuaが起動して実行することができました。

サーボを制御するCモジュールとリンクさせればLuaからコントロールさせることもできそうです。

実験システムとしてはとりあえず満足なのですが、せっかくなので他の手も使えないかと模索中です。これは後ほど。

RM-boardの開発環境整備

ようやく本格的にRM-boardに取り組むことにしました。
以前にやったことをおさらいしながら、最初はRM-boardでサーボを動かすことを目標に進めていきます。

まず必要なのは開発環境です。メインで使っているのがSnowLeopard/MacBookです。iXsリサーチから提供されている開発環境はVMware Player上のDebianです。Debian上の環境をそのままSnowLeopardに持ってくるのは面倒くさそうなので、同様に仮想化ソフトを使おうと思います。

RM-boardの開発環境

普段からVirtualBoxを使っているので、できればその上で開発したいと思います。VirtualBoxではVMware Playerのイメージを直接読み込むことができるので、仮想メディアマネージャでHDDのイメージを追加し、新しい仮想マシンを定義して起動させてみました。

しかし、何度起動させても途中でKernel Panicになってしまいます。/dev/consoleが開けないのが原因のようですが、よくわからないので直接的な起動はあきらめました。

VirtualBoxにはubuntuをインストールしていたので、これに先ほどのイメージをマウントし、ソフトウェアのビルドに必要なファイル一式をコピーして使うことにしました。RM-boardのベースになっているarmadilloに関係するファイルや、サンプルプログラムは/home/user配下にあるのでそのままコピーします。

これだけではarmのコンパイラやライブラリなどが不足するため、findなどでファイルを探しながら、ビルドに必要なソフトを見つけ出しました。必要なものは、/usr/lib/gcc/arm-linux/と/usr/arm-linux/のフォルダ一式と、/usr/bin/以下のarm-で始まるファイルおよび、genext2fsのようです。

これらをubuntuの同じディレクトリにコピーして、サンプルプログラムをビルドすると、test_appというファイルが出来上がりました。

(開発環境上で)
$ cd prog/sample
$ make
arm-linux-gcc -c -o main.o main.c
arm-linux-gcc -c -o sbus.o sbus.c
arm-linux-gcc -c -o rmeye.o rmeye.c
arm-linux-gcc -o test_app main.o sbus.o rmeye.o
$

サーボをつないでいない状態で、scpを使ってコピーし実行させてみると、とりあえず画面に何かしらのメッセージが出るので動いているようです。

(開発環境上で)
$ scp test_app guest@192.168.254.xx:~

(RM-boardにguestでログインした後、suでrootになった後)
$ /home/guest/test_app
SBUS INIT :OK
TEST LOOP [0]
AN0 = 403
AN1 = 489
AN2 = 490
AN3 = 497
AN4 = 464
AN5 = 473
AN6 = 481
AN7 = 469
(Ctrl-Cで停止)

サーボをS23に接続した状態で起動すると、サーボが動き出すことも確認できました。

プロジェクト課題(4)

後期に開発するソフトウェアは「4択問題集」です。

ソフトウェアの概要

  • 問題とその選択肢(4つ)が表示され、利用者は選択肢の番号を入力していく。
  • 全ての出題が終わると、点数(正解数÷出題数)や正答・誤答の詳細が表示される。
  • さまざまな学習に役立つように工夫する。

課題4

  • 一組の4択問題(問題文、選択肢)を表す複合的データ(オブジェクト)を作成しなさい。
    クラス定義が必要な言語ではクラスを定義した上でオブジェクトを作成しなさい。
  • 課題3のプログラムのデータの扱いを、上記のオブジェクトを利用する形に書き換えなさい。