Linux 環境の legOS/brickOS 開発環境は、現在(2004年1月)は、brickOS Ver 0.2.6.10 が標準になっています。 ここでは、Linux 上の brickOS 0.2.6.10 の使用方法、プログラム開発方法を示します。これにより、RCX 間の通信などの機能が使えるようになりました。ただし、 使用法およびコーディングに若干に変更が必要になります。その詳細を 以下に示します。
なお、Linux 版 brickOS 0.2.6.10 ではサウンド機能を使うと OS がハングアッ プします。 RCX 間通信機能とサウンド機能の両方を使いたい方は、 Windows 環境での brickOS アプリケーションの開 発 したがって、Windows 環境の brickOS を利用して下さい。
もし、音もせずランプも点灯しないようなら、再度付け直してみて、それでもダメなら、USBタワーを付けた状態で、 PCを再起動して下さい。それでもダメなら、担当者に連絡して下さい。
$ /usr/brickOS/util/firmdl3 --tty=/dev/usb/lego0 -s /usr/brickOS/boot/brickOS.srec |
3.1 Makefile とデモプラグラムのコピーホームディレクトリ直下に brickOS というディレクトリを作成し、そこに必要な ファイルを置くこととします。そこにデモプログラムと Makefile をコピーしま す。
$ cd ~ $ mkdir brickOS $ cd brickOS $ cp /usr/brickOS/demo/Makefile ./ $ cp /usr/brickOS/demo/helloworld.c ./ 3.2 Makefileの編集 (2005年10月からこの作業は必要なくなりました。)
コピーした Makefile のPROGRAMS 行を、コンパイルしたいファイル名に置き換 えます。
vi Makefile
変更前 変更後 -- prefix_dir=/usr/brickOS KERNEL=../boot/brickOS KERNEL=$(prefix_dir)/boot/brickOS PROGRAMS=helloworld.lx rover.lx linetrack.lx robots.lx c++.lx sound.lx PROGRAMS=helloworld.lx include ../Makefile.common
include ../Makefile.userinclude $(prefix_dir)/Makefile.common
include $(prefix_dir)/Makefile.userall clean realclean depend::
$(MAKE) -C c++ $@>#all clean realclean depend::
# $(MAKE) -C c++ $@>3.3 ソースコードのコンパイル
make コマンドで実行ファイルを作成します。RCX 用実行ファイルの拡張子は lx です。
$ make 3.4 ファイルのアップロード
次のようにしてファイルのコンパイルしたファイル(*.lx)を USB タワーを介して RCX にアップロードします。
$ /usr/brickOS/util/dll --tty=/dev/usb/lego0 helloworld.lx 3.5 実行
Run ボタンを押すと、RCXの液晶パネルに Hello World と表示されます。 ただし、パネル表示の限界から、H と W は正しく表示されませんし、大文字 小文字は適当に変換されます。
毎回、 フルパスの dll コマンドを打つのは面倒な ので、シェルの環境設定変更ファイルに、以下の行を加えておきます。
これで次回以降、例えば、helloworld.lx をアップロードする場合は、
- CSHELL(csh) の場合(17期生以前のディフォルト)
~/.cshrc の最後の部分に以下の3行を追加(既にある場合は変更)します。
alias dll="/usr/brickOS/util/dll --tty=/dev/usb/lego0" alias firmdl3="/usr/brickOS/util/firmdl3 --tty=/dev/usb/lego0 -s /usr/brickOS/boot/brickOS.srec" setenv LEGOS_ROOT /usr/brickOS/ - BSHELL(bash) の場合(18期生以降のディフォルト)
~/.bashrc の最後の部分に以下の3行を追加(既にある場合は変更)します。
alias dll='/usr/brickOS/util/dll --tty=/dev/usb/lego0' alias firmdl3='/usr/brickOS/util/firmdl3 --tty=/dev/usb/lego0 -s /usr/brickOS/boot/brickOS.srec' export LEGOS_ROOT=/usr/brickOS/ ファームウェアを再アップロードする場合は、
$ dll helloworld.lx とタイプすればよいことになります。
$ firmdl3
なお、変更した~/.cshrc や ~/.bashrcの設定が有効になるのは、再度ログインした後か、 新しく開いた端末(コマンド入力)画面に対してです。
BrickOS のタスク型は tid_t です。 LegOS では pid_t となっており、いくつかのサンプルやデモプログラムでは pid_t となっている場合がありますので、注意して下さい。 (その場合は、pid_t を tid_t というように、ソースコードを変更して下さい。)
ソースコードを再コンパイルする場合は以下のようにします。
$ make clean $ make