FAQ (2009/01 更新)
ここではnxtOSEKについて聞かれる質問について紹介しています。
nxtOSEK全般
nxtOSEKソフトウェア
nxtOSEKハードウェア
nxtOSEKプロジェクト
nxtOSEK全般:
Q: nxtOSEKはleJOS NXJプロジェクトの一部か? または、NXT用の別のJavaバーチャルマシンの実装?
A: nxtOSEKプロジェクトはleJOS NXJプロジェクトの一部ではなく、全く別のプロジェクトです。
nxtOSEKではleJOS NXJプロジェクトの承諾を得たうえで、leJOS NXJのC言語/アセンブラで記述されたI/Oドライバを使用しています。
nxtOSEKはNXT向けのリアルタイムOSであり、ANSI C/C++言語を用いてアプリケーションプログラムを作成することができます。
Q: nxtOSEKのライセンス形態は?
A: nxtOSEKはleJOS NXJとTOPPERS ATKという2つのオープンソースプロジェクトの成果物を利用しています。
- leJOS NXJにはMozilla Public License Version 1.0 が適用されています
- TOPPERS ATKにはTOPPERS License が適用されています (TOPPERSプロジェクトに対しても成果物報告を済ませています)
nxtOSEKオリジナルソースコードについては、leJOS NXJと同様にMozilla Public License Version 1.0を適用します。
Q: nxtOSEKプロジェクトに貢献または参加することはできるか?
A: nxtOSEKプロジェクトは少人数で運営されています。また、leJOS NXJとTOPPERS ATKという2つのオープンソースプロジェクトの成果物の集合体なので、今のところ開発プロジェクト自体も、nxtOSEKそのものの拡張よりも、nxtOSEKを使ったアプリケーションに焦点をおいています。もしnxtOSEKに関連した開発成果を共有されたい場合は、メールで直接連絡いただくか、leJOS/NXTasy.org/LUGNETのいずれかのフォーラムに投稿してください。
nxtOSEKソフトウェア:
Q: nxtOSEKのMakefile中のパス指定を絶対パスに変更するには?
A: nxtOSEKのMakefileでは相対パスを使用しています。絶対パスを使用する場合は次の各ファイルの相対パス記述箇所を修正してください。
各サンプルプログラムのMakefileファイル
lejos_osek\ecrobotディレクトリ下にあるlejos_osek.tmfファイル
なお、GNU Make 3.81-1はパスをDOS表記 (例, C:/Cygwin)で記述するとエラーになります。絶対パスは /cygdrive/C/Cygwinといった形で記述してください。ただし、lejos_osek.tmfファイル中のTOPPERS ATKのSG.exeのパス指定に関してだけはDOS表記で記述してください。
TOPPERS_OSEK_ROOT_SG =$(ROOT)/toppers_osek
TOPPERS ATKのSG (System Generator)のパス設定を/cygdrive/C/Cygwin...といった形で記述するとSGの実行エラーとなります。
Q: アプリケーションプログラム専用のコンパイラマクロはどうやって定義するのか?
A: nxtOSEKでは下のようにUSER_DEFというMakefileマクロをコンパイラマクロ定義用に使用することができます。
# Target specific macros
TARGET = HelloWorld
TARGET_SOURCES := \
helloworld.c
TOPPERS_OSEK_OIL_SOURCE := ./helloworld.oil
USER_DEF = FOO FOO1 |
Q: アプリケーションプログラム専用のインクルードパスはどうやって定義するのか?
A: nxtOSEKでは下のようにUSER_INC_PATHというMakefileマクロをアプリケーション専用のインクロードパス定義用に使用することができます。
# Target specific macros
TARGET = HelloWorld
TARGET_SOURCES := \
helloworld.c
TOPPERS_OSEK_OIL_SOURCE := ./helloworld.oil
USER_INC_PATH = ../FOO ../../FOO1
|
Q: アプリケーションプログラム専用のライブラリはどうやって定義するのか?
A: nxtOSEKでは下のようにUSER_LIBというMakefileマクロをアプリケーション専用のライブラリ定義用に使用することができます。
なおライブラリ定義時には併せてUSER_INC_PATHにライブラリへのパスを定義する必要があります。
# Target specific macros
TARGET = HelloWorld
TARGET_SOURCES := \
helloworld.c
TOPPERS_OSEK_OIL_SOURCE := ./helloworld.oil
USER_LIB = FOO
USER_INC_PATH = ../FOO_lib |
Q: 64Kbyteを超えるプログラムをビルドしようとすると、リンクエラーになる
A: nxtOSEKアプリケーションプログラムサイズには制限があります(Flash: 最大224Kbyte、RAM:最大64Kbyte)。この制限を越えるプログラムをビルドしようとすると、リンク時にエラーとなります。なお、ビルド時のエラーを抑止するために、各アプリケーション用Makefile中にBUILD_MODEマクロを定義して、生成する実行形式ファイルの種類を指定することができます。
BUILD_MODEマクロは未定義(デフォルト): 拡張NXT標準ファームウェア用、Flash用およびRAM用の実行形式ファイルを生成します。
BUILD_MODE = ROM_ONLY: Flash用の実行形式ファイルのみ生成します。
BUILD_MODE = RAM_ONLY: RAM用の実行形式ファイルのみ生成します。
BUILD_MODE = RXE_ONLY: 拡張NXT標準ファームウェア用の実行形式ファイルのみ生成します。
# Target specific macros
TARGET = HelloWorld
TARGET_SOURCES := \
helloworld.c
TOPPERS_OSEK_OIL_SOURCE := ./helloworld.oil
BUILD_MODE = ROM_ONLY |
Q: nxtOSEK起動時のスプラッシュ画面をカスタマイズすることはできますか?
A: 次の手順に沿って、独自のスプラッシュ画面を表示させることができます:
1. ecrobotディレクトリ内にあるecrobot_splash.bmpを開き、独自のスプラッシュ画面を描画します。
2. ecrobot_splash.bmpを保存する際には、白黒BMPファイルでかつピクセルサイズは100(幅) x 64(高さ)である必要があります。
3. 既にアプリケーションのビルドに成功している場合、Cygwin上でecrobotディレクトリに移動し、make とタイプしてください。libecrobot.aライブラリがビルドされます。
4. さらに、make releaseとタイプすることで、不要なオブジェクトファイルが削除されます。
5. アプリケーションプログラムをビルド後、NXTへアップロードしてください。カスタマイズしたスプラッシュ画面が表示されます。
Q: nxtOSEKプログラムをNXTのRAMにアップロードし、起動することはできますか?
A: はい。詳細は下記をみてください。しかし、制約(Windows XPのみ)や操作性の問題からお勧めできません。
ファームウェア無しでのnxtOSEKのインストールおよびアップロード
nxtOSEKハードウェア:
Q: アプリケーションプログラムのNXTへのアップロードは、NXT内蔵のFlashメモリの寿命に影響するか?
A: nxtOSEK 2.00からは、nxtOSEKアプリケーションプログラムのFlashへのアップロードが可能になりました。Flashメモリの寿命に対する影響という観点からいうと、NXT BIOSのFlashのアップロードはLEGO標準ファームウェアのアップロードと等価になります。またnxtOSEKアプリケーションのFlashへのアップロードはLEGO標準ソフトウェア生成アプリケーションのアップロードと等価になります。
プログラムをRAMへアップロードする場合はNXTのFLASHメモリの寿命に影響を与えません。詳細についてはnxtasy.orgのフォーラムに関連スレッドがあるので参照してください。
Q: NXTにプログラムをアップロードしたにも関わらず、RUN/STOP/EXITボタンを押しても反応がありません。どうすれば良いですか?
A: NXTの内部には2つのCPUが搭載されています(メインのARM7コアCPUと周辺制御用AVR CPU)。この問題はARM7とAVR間の通信エラーに起因しています。対策として次の手順に沿ってプログラムをアップロードしてください:
1. USBケーブルをNXTから外してください。
2. バッテリをNXTから外し、約5秒間後にバッテリをNXTに再装着してください。
3. USBケーブルを接続してください。
4. ENTERボタンを押してください。
5. プログラムをアップロードしてください。
Q: プログラムアップロード後にRUNボタンを押して、アプリケーションプログラムを実行しようとしても、ボタン操作画面のままでアプリケーションプログラムが実行されない。またバッテリ電圧が0のままになっている。
A: バッテリを外し、約5秒後に再装着してください。
Q: LibUSB(ファームウェア無し)を使用している場合に プログラムアップロード時に次のメッセージがCygwin上に表示された。
NXT not found. Is it properly plugged in via USB?
A1: PCとNXTがUSBケーブルで接続されていることを確認してください。
A2: バッテリを外し、約5秒後に再装着してください。
A3: PCのUSBポートを変更してください。
A4: libUSBを再インストールしてください。(インストールディレクトリにはスペースおよびマルチバイト文字が含まないようにしてください)
A5: コントロールパネル->システム->ハードウェア->デバイス マネージャ->LEGO Devices->LEGO MINDSTORMS NXT Firmware Update Mode->(LEGO MINDSTORMS NXT Firmware Update Mode上でマウスを右クリックし) プロパティ->ドライバ->ドライバの詳細を参照してください。LEGO標準のfantom.sysに加えて、libusb0.sys が認識されている必要があります。認識されていない場合はLibUsbを再インストールしてください。
nxtOSEKプロジェクト:
Q: NXT GTの性能は?
A: NXT GTでは標準のサーボモータを使用していますが、40:16のギア比で増速しています。NXT GTの最高速度は約1.3m/sec (バッテリ電圧約8V時)となります。NXT GTの詳細情報についてはこちらを参照してください。
Home |