前回はTOPPERSのビルドを行おうとして失敗してしまいましたので、その続きからです。
※今回の作業はRaspberry Pi 3で行っています。おそらくRaspberry Pi 2でも同様の手順で大丈夫だと思いますが未確認です。
まずは環境構築です。
開発環境は大きく分けてLinuxかCygwinを使うかの2つに別れますが、今回はCygwin(64bit版)を選択しました。
Cygwinのインストールは以下の通りです。
1.Cygwinのサイトに行きます
2.Install Cygwin->Installing and Updating Cygwin for 64-bit versions of Windowsから、setup-x86_64.exeをダウンロードします
3.ダウンロードしたインストーラーを起動します
4.Install from Internetを選択します
5.インストールするディレクトリを指定します。無用なトラブルを避けるために、デフォルトのままにしました
6.インストールするパッケージのダウンロードディレクトリを指定します。これもデフォルトのままです
7.インターネットへの接続方法の選択です。これもデフォルトのままですが、ご使用の環境に合わせてください
8.ダウンロードするサイトの選択です。jpドメインからにしたほうが良いと思います
9.インストールするパッケージの選択で、以下のパッケージを選択します
* gcc-core
* make
* diffutils
* perl
* ruby
(rubyはスクショ撮り忘れました…)
10.パッケージの選択が終わったら、インストールを開始します
11.デスクトップにショートカットを作ったり、スタートメニューへの登録はお好きにどうぞ
11.GCC ARM(GNU Tools for ARM Embedded Processors)をインストールします
GCC ARMのサイトからインストーラをダウンロードします
gcc-arm-none-eabi-5_4-2016q3-20160926-win32.exeをダウンロードします
12.ダウンロードしたインストーラを起動します。言語は普通に日本語で
13.後は通常のインストール画面です
14.ライセンス契約に同意します
15.インストール先の選択もデフォルトです
16.インストーラ最後の画面ですが、下二つのチェックは入れておいたほうが良いと思います
これで環境構築は終了です。
さて、いよいよTOPPERSのビルドです。
1.TOPPERSのサイトから、ASP3カーネル(Core Tile for ARM11 MPCore(ARM)簡易パッケージ)をダウンロードします
asp3_ct11mpcore_gcc-20160515.tar.gzをダウンロードしました
2.AZO様開発の成果物をダウンロードします
https://github.com/AZO234/RaspberryPi_TOPPERS_ASP3
緑色のボタンを押して、Download ZIPを選択します
RaspberryPi_TOPPERS_ASP3-master.zipをダウンロードします
3.手順1と2でダウンロードしたファイルをCygwinの適当なディレクトリに置きます
私はC:\にCygwinをインストールしたので、C:\cygwin64/home/k_takayanagi/toppersに置きました
4.TOPPERSを展開します
$ tar xzf asp3_ct11mpcore_gcc-20160515.tar.gz
asp3というディレクトリができます
5.AZO様の成果物を展開します
$ unzip RaspberryPi_TOPPERS_ASP3-master.zip
RaspberryPi_TOPPERS_ASP3-masterというディレクトリができます
6.AZO様の成果物をTOPPERSにマージします
RaspberryPi_TOPPERS_ASP3-master/asp3の中身を、エクスプローラ等でTOPPERSを展開してできたasp3の中に上書きします
7.【重要】sample/Makefile_rp23をsample/Makefileにリネームします。もとからあったMakefileは、Makefile_rp1などとしておきましょう
※この手順に気が付かなくて、長いこと悩みました…
8.ソースファイルの修正
シリアルポート経由でログを出すために、ファイルを2つ変更します
syssvc/tBannerMain.cのeBannerInitialize_main()の最初に、以下の1行を追加します
syslog_msk_log(LOG_UPTO(LOG_DEBUG), LOG_UPTO(LOG_DEBUG));
sample/sample1.cのmain_task()の最初のSVC_PERROR(…)をコメントアウトします
ファイルの修正は以上です
9.ビルドディレクトリを作成します
TOPPERSのuser.txtにはOBJというディレクトリ名があったので、一応同じにしておきます
$ mkdir OBJ
10.コンフィギュレーションを行います
$ cd OBJ
$ ruby -Eutf-8 ../configure.rb -T rp3_gcc
rubyに指定している「-Eutf-8」というオプションですが、Windows環境で必要になります
11.TOPPERSのビルドを行います
$ make
ビルドが完了すると、このようなログが出てきます
※2018/04/01追記:上記のmakeをCygwinから行うと、rubyで「invalid byte sequence in Windows-31J (ArgumentError)」のようなエラーが出ることがあります。その場合、asp3/OBJ/Makefileの105/106行目のrubyを呼び出しているところに「-Eutf-8」を追加すると解決すると思います。
以下のような修正です。
CFG = ruby -Eutf-8 $(SRCDIR)/cfg/cfg.rb TECSGEN = ruby -Eutf-8 $(SRCDIR)/tecsgen/tecsgen.rb
さて、いよいよRaspberry Piの起動です。
1.SDカードをフォーマットします
microSDカードをFAT32でフォーマットします
2.bootcode.bin、start.elfの入手
こちらからbootcode.binとstart.elfをダウンロードします
各ファイル名をクリックし、次のページのDownloadボタンをクリックしてダウンロードします
ダウンロードしたらmicroSDカードに入れてください
3.TOPPERSの配置
TOPPERSのビルドを行うと、OBJディレクトリに「kernel7.img」というファイルができるはずです。「7」がついていない場合、TOPPERSのビルド手順7を忘れている可能性があります
4.config.txtの作成
microSDカードに「config.txt」というファイルを作成し、以下の2行を貼り付けて下さい
kernel_old=1
disable_commandline_tags=1
5.シリアルケーブルの準備
Raspberry Piとの通信に、シリアルケーブルが必要です
秋月電子通商で、FTDIのTTL-232R-3V3というものを購入しました
このままではRaspberry Piと通信できないので、配線を変更します
一番左の黒はそのままで、その隣に黄色、オレンジと接続します。コネクタを抜くのは、金属の端子とその手前部分の黒いプラスチックの間に針のようなものを入れて、プラスチックを少し手前に引けば抜けます
準備したケーブルをRaspberry Piに接続します
ちょっとわかりにくいですが、基盤の外側の端から3番目に黒いケーブルが来るように接続します
6.Raspberry Piの起動
bootcode.bin、start.elf、kernel7.img、config.txtの4つのファイルをmicroSDカードに置いたら、Raspberry Piにカードを挿入します
Raspberry Piにシリアルケーブルを接続し、USBケーブル側をPCに接続したらTera Term等のターミナルソフトを起動します
設定は以下の通りです
Raspberry Piの電源を入れると、以下のようなログが出るはずです
さて、長くなってしまいましたが、これでTOPPERSをRaspberry Pi 3で動かす環境が整いました。
次回からはTOPPERSを色々といじってみたいと思います。
[…] 前回で無事にRaspberry Pi上でTOPPERSが動作するようになったので、今回からはμITRONについて、初心者向けに使い方や作り方などを説明していきたいと思います。 ITRONは2.0時代にバリバリ使 […]
[…] その2で動作する環境を作ったので、それをそのまま使用します。 ※ちなみに、今回あらためてビルドし直したらrubyで問題が出て、その解決方法をその2に追記しました。 プログラム […]