はじめに
Lego Mindstorms NXTの開発環境(ARM用クロスコンパイル環境とnxtOSEK)をUbuntu上に構築しましたので,コマンドの実行履歴を参考に,作業手順をメモしておきます. 今回は下記のWebページを参考に開発環境を構築しました. なお,公式Webページの「nxtOSEK Installation in Linux (Ubuntu 11.10/10.04/9.10/8.10)」は,タイトルの通りUbuntu 11.10以前を例に記述されており,内容が少々古いようです.
- nxtOSEK Installation in Linux (Ubuntu 11.10/10.04/9.10/8.10)
- gmsanchez/nxtOSEK · GitHub
- nxtOSEKの開発環境を構築 - sat0yu's blog
私も初心者ですので,内容に誤りが含まれている場合があります. また,本記事投稿現在,サンプルプログラムのmakeが通ることは確認していますが,実機での動作確認ができていません…. つきましては,何かお気づきの際は,コメントなどでご指摘いただければ幸いです.
開発環境
仮想マシンにインストールした,Ubuntu 14.04 LTS 32bit上に構築しました.
OS | Ubuntu 14.04 LTS 32bit |
---|
今回の開発環境は,下記バージョンを使用して構築しました.
GNU Binutils | 2.20.1 |
---|---|
GCC | 4.4.7 |
Newlib | 1.18.0 |
nxtOSEK | 2.18 |
作業備忘録
- 既存環境を最新状態に更新する
- ディレクトリを作成する
- インストールスクリプトを取得する
- 必要なライブラリをインストールする
- GNU ARMのビルドとインストールを実行する
- gccの状態を確認する
- nxtOSEKのセットアップを行う
- インストール状態を確認する
下記コマンドを実行しました.
1 2 | ~$ sudo apt-get update ~$ sudo apt-get upgrade |
ホームディレクトリに,ディレクトリ「ETRobo」を作成しました.
1 | ~$ mkdir ETRobo |
「gmsanchez/nxtOSEK · GitHub」で公開されている,nxtOSEK 2.18 + Ubuntu 14.04 LTS向けのインストールスクリプトを使用することにしました. 下記コマンドを実行し,gitでインストールスクリプトのリポジトリを取得しました. gitをインストールしていない場合は,先にapt-getでインストールを完了してください.
1 2 | ~$ cd ~ /ETRobo/ ETRobo$ git clone https: //github .com /gmsanchez/nxtOSEK .git |
必要なライブラリをインストールしました. 「tk-dev」および「ncurses-dev」は不要かもしれません.
1 2 3 4 | ETRobo$ sudo apt-get install tk-dev ncurses-dev ETRobo$ sudo apt-get install build-essential texinfo libgmp-dev libmpfr-dev libppl-dev libcloog-ppl-dev ETRobo$ sudo apt-get install jlha-utils ETRobo$ sudo apt-get install wine |
インストールスクリプトを使用して,GNU ARMのビルドとインストールを実行しました. 「Build complete!」と表示されたら,成功です. この処理は,私の環境では1時間弱かかりました.
1 2 | ETRobo$ cd ~ /ETRobo/nxtOSEK/ nxtOSEK$ sh . /build_arm_toolchain .sh 2>&1 | tee . /build_arm_toolchain .sh.log |
下記コマンドを実行し,ビルドとインストールを終えたgccの状態を確認しました.
1 2 3 4 5 6 7 | nxtOSEK$ . /gnuarm/bin/arm-elf-gcc -print-multi-lib .; thumb;@mthumb fpu;@mhard-float interwork;@mthumb-interwork fpu /interwork ;@mhard-float@mthumb-interwork thumb /interwork ;@mthumb@mthumb-interwork |
下記コマンドを実行し,必要なファイルのダウンロードと,ファイルの追加処理を実行しました.
1 2 3 4 5 6 | nxtOSEK$ wget http: //sourceforge .net /projects/lejos-osek/files/nxtOSEK/nxtOSEK_v218 .zip nxtOSEK$ wget http: //www .toppers.jp /download .cgi /osek_os-1 .1.lzh nxtOSEK$ unzip nxtOSEK_v218.zip nxtOSEK$ lha -e osek_os-1.1.lzh nxtOSEK$ mv toppers_osek /sg/sg .exe . /nxtOSEK/toppers_osek/sg nxtOSEK$ rm -rf toppers_osek |
続いて,同じディレクトリでファイルの上書き処理を実行しました.
1 2 3 | nxtOSEK$ cp ecrobot.mak . /nxtOSEK/ecrobot/ nxtOSEK$ cp ecrobot++.mak . /nxtOSEK/ecrobot/ nxtOSEK$ cp tool_gcc.mak . /nxtOSEK/ecrobot/ |
テキストエディタで「tool_gcc.mak」を開きます.
1 2 | nxtOSEK$ cd ~ /ETRobo/nxtOSEK/nxtOSEK/ecrobot/ ecrobot$ vi tool_gcc.mak |
「tool_gcc.mak」の9行目を,下記のように変更します. これで開発環境の構築は完了です.
7 8 9 10 11 | # specify GNU-ARM root directory ifndef GNUARM_ROOT GNUARM_ROOT = ~/ETRobo/nxtOSEK/gnuarm #/cygdrive/C/cygwin/GNUARM endif |
下記コマンドを実行し,インストール状態を確認しました.
1 2 3 | ecrobot$ cd ~ /ETRobo/nxtOSEK/nxtOSEK/samples_c/helloworld/ helloworld$ export LC_ALL=C helloworld$ make all |
正常終了の場合は,「helloworld_OSEK.rxe」が生成されます.
1 2 3 | Generating binary image file: helloworld_OSEK_rom.bin Generating binary image file: helloworld_OSEK_ram.bin Generating binary image file: helloworld_OSEK.rxe |
下記のエラーメッセージでmakeが中断した場合は,「export LC_ALL=C」を実行し忘れていないか確認してください. この環境変数の変更処理は,日本語環境特有のようです.
1 2 3 4 | Compiling kernel_cfg.c to kernel_cfg.o arm-elf-gcc: kernel_cfg.c: そのようなファイルやディレクトリはありません arm-elf-gcc: no input files make: *** [build/./kernel_cfg.o] エラー 1 |
以上,参考になれば幸いです.
0 件のコメント:
コメントを投稿