elmntalインストール&実行方法(win編)

必要なもの

  • windowsマシン(2000, XP推奨)
  • cygwin(最低限gcc, make)
  • windows用eyebot処理系(インストール方法はここ参照)
  • elmntal

コンパイル&インストール

windows版では、シリアルポートを用いる関係上、cygwinの上でelmntalの一連の処理を行ないます。

  • 適当なフォルダにelmntalを展開する。
 tar zxvf elmntal-0.9.2.tar.gz
  • 以下の処理は、RoBIOS Prompt(eyebot処理系)上で行なってください。
    • elmntalフォルダ内のmake_eye.batを実行する(winフォルダ内にlmntal.hexファイルが生成されます)
 cd elmntal
 make_eye.bat
  • 以下の処理は、cygwinのbash上で行なってください。
    • Makefile.winをmakeする(winディレクトリ内に生成バイナリがコピーされます。)
 cd elmntal
 make clean
 make -f Makefile.win
  • winディレクトリの中身を、適当なディレクトリにコピーする(例:/usr/local/elmntal)
 mkdir /usr/local/elmntal
 cp -r win/* /usr/local/elmntal/

環境変数の設定

elmntalでは、以下の環境変数を用います

  • PATH : 実行用コマンドシェルスクリプトへのPATHが必要です
  • LMNEYE : シェルスクリプト内で呼ばれる、バイナリファイルの所在を指定します。
  • LMNJAR : lmntal.jarの所在を示します。LMNEYEと同じ場合は省略可能。

windowsでは、以下をcygwinホームディレクトリ内の.bashrcなどに追加しておくと良いでしょう。

 export PATH=$PATH:/usr/local/elmntal/cmd
 export LMNEYE=/usr/local/elmntal/bin
 export LMNJAR=c:\\cygwin\\usr\\local\\elmntal\\bin

LMNJARはjava.exeの引数として渡されるため、このような形式(フォルダ区切りを\\と書き、windows上の絶対パスを指定)で書く必要があります。

実行方法

elmntalでは、lmntalソースコード(*.lmn)をバイナリ中間言語(*.tal)に変換し、eyebot側に転送します。eyebot側ではあらかじめelmntalを実行しておき、送られてきた*.talを解釈、実行します。中間言語や内部処理の詳細については論文参照。

elmntalが提供するコマンドは以下の4つです

  • eyeconv.sh : lmntalソースコード(*.lmn)を転送可能なバイナリ中間言語(*.tal)に変換します
  • runeye.sh : *.talをeyebotに転送し、eyebotからの出力結果を待って表示します。
  • runpc.sh : *.talの実行をPC上で行ないます。制御を行なわないlmntalプログラムは動作します。
  • setcom.sh : comポートの通信速度の設定を行ないます。

実行の流れは以下のとおり。

  • comポートの通信速度を設定します。
 setcom.sh com1
  • elmntalのシステム(lmntal.hex)をeyebotに転送します。lmntal.hexはLMNEYEディレクトリに入っています。
 cat $LMNEYE/lmntal.hex > /dev/com1
  • eyebot上でlmntal.hexを実行します。
  • lmntalソースコードをコンパイルします。hoge.lmnからhoge.tal, hoge.aidが生成されます。hoge.aidはアトム名を保持するファイルで、コンパイル中および出力表示に用いられます。
 eyeconv.sh hoge.lmn
  • 生成されたhoge.talをeyebotに転送し、実行を開始します。
 runeye.sh hoge.tal -c /dev/com1
 (eyebot側のボタンを1回押すと転送が始まる)
 (転送終了の表示がでた後、ボタンを1回押すと実行が始まる)
  • 実行終了後、ボタンを1回押すとeyebotからPCに実行結果が転送され、コンソールに実行結果データ構造が表示されます。

注意:

  • lmntal.hexを1回実行した後は、必ず電源を切断してください。2度続けて実行すると正常に動作しません。
  • runeye.shのかわりにrunpc.shを実行することで、PC上で.talファイルを解釈実行できます。制御関係の記述はできません。
  • cygwin上の/dev/com1などは、シェル起動時に存在するもののみがアクセス可能です。つまりcygwin shellを起動後にUSB-Serial変換コネクタなどでCOMポートが作成された場合、それをcygwin上でアクセスする為にはshellを再起動する必要があります。