2015/01/12

Ubuntu上にnxtOSEKの開発環境を構築する

はじめに

Lego Mindstorms NXTの開発環境(ARM用クロスコンパイル環境とnxtOSEK)をUbuntu上に構築しましたので,コマンドの実行履歴を参考に,作業手順をメモしておきます. 今回は下記のWebページを参考に開発環境を構築しました. なお,公式Webページの「nxtOSEK Installation in Linux (Ubuntu 11.10/10.04/9.10/8.10)」は,タイトルの通りUbuntu 11.10以前を例に記述されており,内容が少々古いようです.

私も初心者ですので,内容に誤りが含まれている場合があります. また,本記事投稿現在,サンプルプログラムの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
作業備忘録
  1. 既存環境を最新状態に更新する
  2. 下記コマンドを実行しました.

    1
    2
    ~$ sudo apt-get update
    ~$ sudo apt-get upgrade
  3. ディレクトリを作成する
  4. ホームディレクトリに,ディレクトリ「ETRobo」を作成しました.

    1
    ~$ mkdir ETRobo
  5. インストールスクリプトを取得する
  6. 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
  7. 必要なライブラリをインストールする
  8. 必要なライブラリをインストールしました. 「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
  9. GNU ARMのビルドとインストールを実行する
  10. インストールスクリプトを使用して,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
  11. gccの状態を確認する
  12. 下記コマンドを実行し,ビルドとインストールを終えた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
  13. nxtOSEKのセットアップを行う
  14. 下記コマンドを実行し,必要なファイルのダウンロードと,ファイルの追加処理を実行しました.

    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
  15. インストール状態を確認する
  16. 下記コマンドを実行し,インストール状態を確認しました.

    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 件のコメント:

コメントを投稿