TOPへ 2.プログラムのコンパイル・転送・実行

1.開発環境構築


nxtOSEKのプログラムを作るには、以下の手順を踏んで準備が必要です。

  1. Cygwinのインストール
  2. GNU ARMのインストール
  3. nxtOSEKのインストール・設定
  4. LEGO MINDSTORMS NXT Driverのインストール
  5. NeXTToolのインストール
  6. 拡張NXTファームウェアのインストール
  7. 拡張NXTファームウェアのNXTへのアップロード
この章では、それを順を追って説明します。


Cygwinとは、UNIX系で普及している開発ツールをWindows環境に移植したものです。
これをインストールすると、Windows上で各種のLinuxソフトウェアを実行できるようになります。

Cygwinのサイトから、32bit版のCygwinインストーラをダウンロードします。(ARMクロスコンパイラが32bit版のため、OSが32bitか64bitかに関わらす32bit版を選択して下さい。)

インストーラを起動します。
次へをクリックします。

"Install form Internet"を選択し、
次へをクリックします。

Choose Installation Directory画面では、Rootフォルダを全角文字やスペースを含まないディレクトリに設定します。

Local Package Directoryは、ダウンロードされたファイルが保管されるところです
任意の場所を指定し、次へをクリックします。

何度か"次へ"をクリック(標準設定で良い)し、
"Choose Download Site"では、適当なサイトを選択します。
例えば、ftp://ftp.jaist.ac.jp

"Select Packages"では、Develカテゴリを開き、

make, gcc-common, g++ を選択します。また Editorカテゴリから vim も選択しておきましょう。
次へをクリックすると、インストールが始まります。

しばらく時間がかかります。
アイコンを作るかどうかを選択し、完了をクリックします。

これでCygwinがインストールできました。


GNU ARMはGCCコンパイラパッケージの一つで、NXTに搭載されているARM7コアプロセッサ(ATMEL AT91SAM7S256)にも対応しています。

FEI ARM Wizardから GCC-4.0.2 ツールチェイン (bu-2.16.1_gcc-4.0.2-c-c++_nl-1.14.0_gi-6.4.exe) をダウンロードします。

※ GCC-4.0.2以外のバージョンを使用した場合、コンパイル時のエラーの要因となりますので、必ずGCC-4.0.2を選択してください。

インストーラを起動します。

ライセンス条項に同意できれば"I accept…"を選択し、Nextをクリック

全角文字やスペースを含まないディレクトリにインストール(例、C:\cygwin\GNUARM)します。

"Select Components"画面では、"Big Endiran"のチェックをはずし、"Little Endian"の中の、

Floating Point Unitのチェックをはずします。

"Select Additional Tasks"画面の、"Install Cygwin DLL"のチェックをはずします。

"Install"をクリックすると、インストールが始まります。

インストール終了時に、GNU ARMインストールディレクトリに対するWindows環境変数(パス)登録を確認されますが、パス登録をする必要はありません。


バージョン2.09以降のnxtOSEKをDownloads のページからダウンロードしてインストールしてください。なお、このページの説明(お知らせ)にあるように sg.exe (システムジェネレータ)が nxtOSEK 本体から切り離されており、別途インストールする必要があるので注意して下さい。

nxtOSEKフォルダを全角文字やスペースを含まないディレクトリ(通常は、C:\cygwin\nxtOSEK)に解凍してください。

nxtOSEKパッケージは解凍後、右図のようなディレクトリ構造で展開されます。

ecrobotディレクトリ下にtool_gcc.makファイルが格納されています。GNUARM_ROOT, NEXTOOL_ROOTを開発環境に合わせて設定する必要がありますが、このページで説明している標準のパスにファイルを展開していれば修正の必要はありません。

# specify GNU-ARM root directory
ifndef GNUARM_ROOT
GNUARM_ROOT = /cygdrive/C/cygwin/GNUARM
endif

# specify NeXTTool root directory
ifndef NEXTTOOL_ROOT
NEXTTOOL_ROOT = /cygdrive/C/cygwin/nexttool
endif

DLLのコピー

ARMコンパイラが cygintl-3.dll を要求するため、cygintl-8.dll を cygintl-3.dll にコピーします。 cygwin を起動して、次のコマンドをタイプして下さい。

cp /bin/cygintl-8.dll /bin/cyginitl-3.dll

NXTとPCの間でUSB通信するためのデバイスドライバです。

LEGO software update website より NXT Fantom Driver をダウンロードしてください。

setup.exeを起動してインストールしてください。
※ドライバのインストールは、管理者権限で実行する必要があります。


NeXTToolはNXTとの通信用PCコンソールプログラムです。
アプリケーションプログラム(*.rxeファイル)およびファームウェア(*.rfwファイル)をNXT へアップロードすることができます。

John Hansen氏のWebサイトの"Utilities"から、NeXTToolをダウンロードします。

全角文字やスペースを含まないディレクトリ(通常は cygwinの root ディレクトリ直下、C:\cygwin\nexttool)に解凍します。

※NeXTToolは標準NXTファームウェーアを対象に開発されたもので、上記機能以外にも様々な機能を提供していますが、nxtOSEKではNXTのBluetooth/USB通信プロトコルを独自に実装しているため対応していません。


拡張NXTファームウェアは標準NXTファームウェアをベースに機能拡張されたもので、NXTに搭載されているARM7コアCPUのネイティブコードも実行することができます 。

John Hansen氏のWebサイトから 拡張NXTファームウェア をダウンロードし解凍します。

拡張NXTファームウェア(lms_arm_nbcnxc_10x.rfw)をNeXTTool格納ディレクトリにコピーしてください。


拡張NXTファームウェアをNXTへアップロードするためには、NXTをファームウェアアップデートモードにする必要があります。
拡張NXTファームウェアをNXTへアップロードするためには、NXTをファームウェアアップデートモードにする必要があります。
NXTの電源がONの状態で、ハードウェアリセットボタン (NXT背面の上部左側のUSBコネクタ背後に配置されている穴の内部にあります)を5秒以上押し続けます。
ファームウェアアップデートモードになると、NXTから小さなクリック音が聞こえるようになります。

Cygwinを起動し、次のコマンドを入力してカレントディレクトリをNeXTToolが格納されているディレクトリにしてください。

 例:$ cd C:/cygwin/nexttool

次のコマンドをCygwin上で入力し、拡張NXTファームウェアをNXTへアップロードします。多少時間がかかります。

$ ./NeXTTool.exe /COM=usb
-firmware=../nxtOSEK/lms_arm_nbcnxc_107.rfw

アップロードが完了すると、NXTの液晶画面がTVの砂嵐画面のようになったり、NXTのボタン操作が効かなくなる場合があります。
その場合は、NXTのバッテリを外し、再び装着することで拡張NXTファームウェアが起動します。
拡張NXTファームウェアは標準NXTファームウェアと同じGUIを提供しています。

これで、プログラムを開発する準備が整いました。次の2.プログラムの転送・実行に従って動作確認を行ってみて下さい。なお多くのサンプルプログラムが cygwin 内の /nxtOSEK/sample_c 以下に用意されています。


TOPへ 2.プログラムのコンパイル・転送・実行