つれづれなるまゝに

単なる作業メモ。主に、Linux, arduino, raspberry piとか?

mrubyのハードウェアについてのメモ

2014-09-28 22:12:10 | 電子工作
GR-SAKURAでは、バイトコンパイルして使う感じでしたが、バイトコンパイルなしにインタラクティブにつかうには、ここに書かれているように、1MのRAMが必要っぽい。

enziboardというmruby向けのボードが開発されているが、やっぱりこれが必要っぽい。ET WESTで話をした際は開発環境整備中でもうすぐ出そうな話でしたが、今はまだ注文はできない状態。

調べたところ、今動作実績あるものは以下。

1. raspberry piをベアメタルで使う方法
raspberry piだとB(rev 2)/B+で512MBが搭載されている。Raspbian一部はビデオRAMに割り当てられてるが、ベアメタルなら全領域がつかえるのかな?

raspberry pi でのやり方はここでWindows版でのやりかたが書かれてるので、Macでトライしてみるかな。

2. STM32F4DISCOVERYを使う方法
こちらに方法が書いてある。こやつは128MB+64MBのRAMをもっていて、スタックを64KBに逃がすことができるようだ。
libmapleが使えるのが良さげかも。

ここからは妄想。

CQのFM3向けにSRAMを拡張するボードがある。
これを使えばいけるんじゃないだろうか。LCDもEthrenetもつなげれるようだし。むむむ。

GR SAKURAでmruby

2014-09-28 12:37:55 | 電子工作
さて、前回作ったクロス環境を使ってmrubyを実際に動かしてみて動作するか確認。

とはいえ、手順についてはたろささんの以下のページそのままで大丈夫だったので特記することは特にありません。

GR-SAKURAでmrubyを動かす (2)
GR-SAKURAでmrubyを動かす (3)
GR-SAKURAでmrubyを動かす (4)

動いたという報告まで。

たろささんの話では、RAMが100KBほど必要とのことなので、以下のボードになら移植できるかもしれない。

NUCLEO-F411RE
 コアがCortex-M4で、RAM 128K
NUCLEO-F401RE
 コアがCortex-M4で、RAM 96Kとギリギリかも?
Interface 2012/6の付属のFM3基盤
 コアがCortex-M3で、RAM 128KのMB9BF618Tがのっている。

GR-SAKURAは、コアはRenesusのRX63Nで、RAMは128KB。NUCLEO-F401REとFM3は手元にあるのでやってみようかな。

以上

MacでGR SAKURAのクロスコンパイル環境を構築

2014-09-27 22:34:32 | プログラミング
mruby向けにGR SAKURAのクロスコンパイル環境の構築にトライ つづき

前回に書き忘れたが、gccのバージョンをあげたのはMacPortsでいれたgccが4.2でクロスコンパイル環境構築中にエラーになってうまくいかなかったから。
結論的には、4.8にしたところ上手く構築できた。

基本的には、以下のページを参考にした。

GR-SAKURAでmrubyを使う - Qiita

ただ、v12.02 と少し古めなので最新のバージョンで構築。
結果から先に書くと、以下のバージョンで構築できた。
・GNURX v14.02 Source Code of GCC
・GNURX v14.02 Source Code of Newlib
・GNURX v14.02 Source Code of Binutils
・GDBRX v14.01 Source Code of GDB

gdbだけ、v14.02だと以下のエラーが出てmakeができなかった。

Undefined symbols for architecture x86_64:
 "_n_high_128", referenced from:
  _regcache_raw_write in regcache.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [gdb] Error 1

ちょうどエラーになっている部分のコードを見ると、

/* RX hack: add the high part of 128(96) bit register */

というコメントがあった。何かのファイルもれかパス通しもれかとおもってgrepかけたけど見つからず断念。


以下、差分やポイントだけ列記。

・configureのCCは利用するバージョンになおす
 gcc-4.7 → gcc-4.8
・configureのprefixはフルパスで書かないとエラーになる
 ~/rx-tools → /Users/<ユーザ名>/rx-tools
・gccのシンボリックリンク(ln -s)の先は、使用するnewlibのバージョンにあわせたパスになおす。間違ってもエラーにならないので注意しないとエラーになってあれ?って思う。
 newlib-1.20.0 → newlib-2.1.0
・14.01のgdbのmake/make installでは以下のファイルに実行権を付与する必要あり。V14.02では解凍したファイルに実行権ついてたが、V14.01では実行権がついてない。
 configure
 gdb/observer.sh
 mkinstalldirs
 install-sh

webコンパイラ環境からGR-SAKURA用のライブラリを取得する方法ですが、参照もとでは1つ1つ落とさないといけないような感じで書かれてるが、最近はzipでまるごと落とせる。
このあたりは、たろささんの以下のページを参照にするといいかも。
GR-SAKURAでmrubyを動かす (1)

ポイントは一度ビルドしてmakefileを作成することでしょうか。

で、落としてきたファイルでmakeするとsketch.binができる。
USBでつなげて、赤いSW1を押してリセットすると、ドライブとして認識されるので、sketch.binを放り込む。
すると、強制的でドライブが解放されて、放り込んだバイナリが動作した。
 →本体のLEDが順番に点灯するデモが実行されます。


ということで、やっと本題のmrubyにとりかかれる。

<余談>
とってあったメモベースこのブログを書きながら、撮りためたアルドノア・ゼロ(8話と9話)みてましたが、結構面白いなぁ。続きみようっと

Macのgccをバージョンアップ

2014-09-25 22:21:57 | mac
mruby向けにGR SAKURAのクロスコンパイル環境の構築にトライ。
ちょうど今日はKyoto.rbだったので、そこで作業開始。

まずは、Macのgccを新しくしようと思って少しつまずいた。

入れ方としては、MacPortsをつかう方法とhomebrewをつかう方法の2つがある。
どっちにしようかまよったが、Homebrewを使うことにした。

MacPortsを使う方法は、こちらかな。

Homebrewを使う方法だが、最初、こちらを参考にしていた。
が、現在はhomebrew-dupesからgccはなくなっているもよう。

curl: (22) The requested URL returned error: 404 Not Found
Error: Failure while executing: /usr/bin/curl -f#LA Homebrew\ 0.9.5\ (Ruby\ 2.0.0-451;\ Mac\ OS\ X\ 10.9.4) https://raw.github.com/Homebrew/homebrew-dupes/master/gcc.rb -o /Library/Caches/Homebrew/Formula/gcc.rb

どうしたものかと思っていたら、隣の席のマイケルさんがhomebrew-versionsを使うのにかわったみたいだよ!と教えてくれた。ありがとうマイケルさん。
homebrew-versions使うと異なるバージョンのgccが入れれるようだ。便利~

brew tap homebrew/versions
brew install <flag> gcc48

今回はこんな感じでいれてみた。
brew install --enable-all-languages --use-llvm gcc48

この作業中で、勉強会は終了。いったん、レジューム。
帰って再開、ただいまmake中。時間はかかるなぁ。

(つづき)
1時間ちょいくらいで問題なくコンパイル完了して使えるようになりました。

次回は、クロス環境構築編です^^;