Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

4

Share

Download to read offline

Kansai mrb gr_sakura

Download to read offline

第一回 Kansai.mrbでの発表資料です。

Related Books

Free with a 30 day trial from Scribd

See all

Kansai mrb gr_sakura

  1. 1. GR-SAKURAでmruby @ Mac OS X 2014/12/27 第1回 Kansai.mrb向け資料 by M.Kosuga
  2. 2. 自己紹介 • 趣味で、Arduino/AVRを使った電子工作や、 Raspberry pi等を使ったシステムを作ってま す。 • ガジェット好き • Kyoto.rbに出没してます。 • 本町ラスパイもくもく会をやってます。
  3. 3. はじめに • MacOSでGR-SAKURA向けのmruby環境を
 ローカル環境で構築する流れをお話しします。
  4. 4. ご注意 • 構築は、Mavericksで行いましたので、 Yosemiteだとうまくいかない可能性はゼロでは ないです。
  5. 5. mrubyの動作状況 • STM32F4 DISCOVERY(¥1,800くらい)
 CortexM4, RAM192KB(ただし、128KB+64KB) • STM32 Nucleo F401RE(¥1500くらい)
 CortexM4, RAM96KB • chipKit Max32(¥5,000くらい)
 PIC32, Arduino互換, RAM128KB • GR-SAKURA(¥3,500くらい/¥5,000くらい)
 Renesas RX63N, RAM128KB • Raspberry pi ※bare metal (B+ ¥5,500くらい)
 arm11, RAM512MB ←普通にruby動く
  6. 6. 参考にさせていただいたサイト • jjzakさん : GR-SAKURAでmrubyを使う - Qiita ※
 http://qiita.com/jjzak/items/8e9d9d98370181aa97fa • たろサさん : GR-SAKURAでmrubyを動かす
 http://d.hatena.ne.jp/tarosay/20131006/1381042546 ※記事が2013/2/23と少し古かったので、今の環境で試した 結果をフィードバック • MacでGR SAKURAのクロスコンパイル環境を構築
 http://blog.goo.ne.jp/mikotolv5/e/ e4d60ad40b9e53ad114e572662ad4972
  7. 7. 全体の流れ 1. gccのインストール 2. クロスコンパイル環境の構築 3. libmruby.aの作成 4. GR-SAKURA用のライブラリ取得 5. 作業用ディレクトリの作成 6. mrubyのプログラム作成
  8. 8. 1. gccのインストール • Xcodeのインストールで使えるようになるgccだ けだと、次のクロス環境のmakeでエラーになる
  →gcc-4.8をインストール
   (gcc-4.7でも実績報告あり) • インストール方法は2通り • MacPorts • homebrew ←私は実績のあったこちらを選択
  9. 9. 1. gccのインストール(続き) • homebrew-versionsを使用 • $ brew tap homebrew/versions • $ brew install --enable-all-languages --use- llvm gcc48
  10. 10. 1. gccのインストール(続き) • 加えて、以下のライブラリ・プログラムを Homebrewでインストール $ brew install mpfr gmp libmpc libelf texinfo mpfr a C library for multiple-precision floating-point computations with correct rounding. gmp a free library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating-point numbers. libmpc a C library for the arithmetic of complex numbers with arbitrarily high precision and correct rounding of the result. libelf ELF object file access library. texinfo single source file to produce output in a number of formats, both online and printed (dvi, html, info, pdf, xml, etc.)
  11. 11. 2. クロスコンパイル環境の構築 • KPITのサイトからソースを取得 • http://www.kpitgnutools.com/sourceCode.php • GNU v14.02を選択 • 数日前にv14.03を試してみたが、エラーになっ たので、14.02が確実(要継続調査)
  12. 12. 2. クロスコンパイル環境の構築(続き) • 以下のような構成しました /Users/<ユーザ名>/sakura/kpit/binutils-2.24 ※binutilsのソース
 /Users/<ユーザ名>/sakura/kpit/gcc-4.8.3  ※gccのソース
 /Users/<ユーザ名>/sakura/kpit/newlib-2.1.0 ※newlibのソース
 /Users/<ユーザ名>/rx-tools  ※クロスコンパイル環境
 
 /Users/<ユーザ名>/sakura/src/mruby ※mrubyのソース
 /Users/<ユーザ名>/sakura/src/sample ※作業用ディレクトリ
 /Users/<ユーザ名>/sakura/src/sample/gr_mruby
   ※mrubyのライブラリとinclude
  13. 13. 2. クロスコンパイル環境の構築(続き) • binutilsのコンパイル
 $ ./configure -target=rx-elf -prefix=/Users/<ユーザ名>/rx-tools - disable-werror CC=gcc-4.8
 $ make; make install • パスを通しておく
 export PATH=$PATH: /rx-tools/bin/
  14. 14. 2. クロスコンパイル環境の構築(続き) • gccのコンパイル
 $ mkdir build
 $ ln -s ../newlib-2.1.0/newlib .
 $ ln -s ../newlib-2.1.0/libgloss .
 $ cd build
 
 $ ../configure --prefix=/Users/<ユーザ名>/rx-tools --target=rx-elf --enable-lnguages=c,c++ --disable-libstdcxx-pch --disable- multilib --with-newlib --disable-nls --disable-libgfortran CC=gcc-4.8
 
 $ make; make install
  15. 15. 2. クロスコンパイル環境の構築(続き) • newlibのコンパイル
 $ ./configure --enable-newlib-hw-fp --target=rx-elf --prefix=/ Users/<ユーザ名>/rx-tools gcc-4.8
 $ make; make install 以上で、 /rx-tools/配下にクロスコンパイル環境 が構築されます。パスを通しておくのを忘れずに。
  16. 16. 3. libmruby.aの作成 • ソースの取得
 git clone https://github.com/mruby/mruby • include/mrbconfig.hの編集
 #define MRB_USE_FLOAT
 #define MRB_FUNCALL_ARGC_MAX 6
 #define MRB_HEAP_PAGE_SIZE 32
 #define MRB_USE_IV_SEGLIST
 #define KHASH_DEFAULT_SIZE 2
 #define POOL_PAGE_SIZE 256

  17. 17. 3. libmruby.aの作成 • build_config.rbにクロスコンパイルコードを書く
 
 MRuby::CrossBuild.new('grsakura') do ¦conf¦
 toolchain :grsakura
   ・・・
 conf.gem "#{root}/mrbgems/mruby-math"
   ・・・
 end

  18. 18. 3. libmruby.aの作成 • tasks/toolchains/に、grsakura.rakeファイルを作成
 
 MRuby::Toolchain.new(:grsakura) do ¦conf¦
 toolchain :gcc
 
 TOOL_PATH = /Users/<ユーザ名>/rx-tools/bin"
 
 conf.cc do ¦cc¦
 cc.command="#{TOOL_PATH}/rx-elf-gcc"
 cc.flags << "-Wall -g -O2"
    ・・・ • その後、makeすると出来上がる
  19. 19. 4.GR-SAKURA用のライブラリ取得 • クラウドコンパイラから取得
 http://japan.renesas.com/products/promotion/gr/ index.jsp • ログイン(ゲストログインでも可)する。 • プロジェクト作成
 (テンプレートはGR-SAKURA_Sketch_V1.xを選択) • 一度ビルド(makefileを作るため) • プロジェクト一式をダウンロード
  20. 20. 5.作業用ディレクトリの作成 • ダウンロードしてきたプロジェクト一式をコピー • gr_mrubyフォルダを作成し、mrubyのinclude とlibmruby.aをコピー • makefileに以下の修正を行う
 - LIBFILESに./gr_mruby/libmruby.aを追
 - CCINCに-I./gr_mruby/includeを追加
  21. 21. 5.作業用ディレクトリの作成(続き) • gr_sketch.cppを作成 • cdigitalWrite()処理の実装 • setup()の定義
 - 使用するGPIOの初期設定
 - mrubyの初期設定
  mrb_open,mrb_define_method, mrb_load_irep
  22. 22. 5.作業用ディレクトリの作成(続き) あと一歩! • gr_common/include/rxduino/rxduino.hを編 集
 →型定義の部分を全てコメントアウト
 (別のヘッダファイルと定義が重複しててエラー になるため)
  23. 23. おまたせしました。 これで環境が整いました。
  24. 24. 6.mrubyのプログラム作成 • sample.rb作成
 HIGH = 1
 LOW = 0
 
 cdigitalWrite(100, LOW);
 cdigitalWrite(101, LOW);
 cdigitalWrite(102, LOW);
 cdigitalWrite(103, LOW);
 
 k = Math.sqrt(4)
 if k==2 then
 cdigitalWrite(100, HIGH);
 else
 cdigitalWrite(101, HIGH);
 end
 
 loop do
 end
  25. 25. 6.mrubyのプログラム作成 • sample.rbをバイトコードに変換
 /sakura/src/mruby/bin/mrbc -Bcode sample.rb
 →sample.cが生成される。 • makefileのOBJFILESに./sample.oを追加 • make
 →sketch.binが作成されて完了
  26. 26. 最後に • 現状でmrubyのローカル環境を作るのは組み込 み/Cの知識が必要。でも、ruby使いたい
 →Wakayama.rbボードをおすすめ • GR-PEACHが登場
 →RAMが10Mもあるので、mrubyの可能性が大 きく広がる可能性(期待大)
  27. 27. 3. クロスコンパイル環境の構築(続き) • mrubyのモジュールを作るのには必要ないですが、GDBはV14.02では以下のエ ラーがでる。 • 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 */ • V14.01は問題なくビルドできた
  • alvstakahashi

    Dec. 30, 2014
  • SatoruNakaya

    Dec. 29, 2014
  • ShinjiUeno

    Dec. 29, 2014
  • tanakayoshi10

    Dec. 29, 2014

第一回 Kansai.mrbでの発表資料です。

Views

Total views

793

On Slideshare

0

From embeds

0

Number of embeds

3

Actions

Downloads

2

Shares

0

Comments

0

Likes

4

×