Version 7 (modified by 7 years ago) ( diff ) | ,
---|
ECNLプロトタイピング・ツール
ECNLプロトタイピング・ツールは、mruby版ECNLを含むGR-PEACHの動作環境と、Blocklyを使用したRubyコードを出力するWebアプリで構成されたツールです。現状では作成したファイルが保存できないなど、未完成な部分の多いプレビュー的なリリースです。
ダウンロード
ソースコードのダウンロードは、こちらの「Download in other formats: Zip Archive」からどうぞ。
実行ファイルはこちらです。GR-PEACHのmbedドライブに書き込んでください。
操作イメージ
一般照明の動作状態のON/OFFで、GR-PEACHの緑LEDを点灯/消灯を行う操作方法。
GR-PEACH上のmruby実行環境
Rubyファイルをmrubyコマンドで実行。mrbcコマンドでバイトコードにコンパイル。mruby -bでバイトコードを実行。
ビルド
ビルド環境のOSはWindowsで、7と10では確認しました。 ビルドに必要なのは、
Webアプリ | Visual Studio 2015 |
mrbc.js | Emscripten (SDK Ver.1.37.10) |
mruby | Ruby (2.3.3 64bit) |
GR-PEACHアプリ | e2studio (5.3.1) |
GR-PEACHアプリ | arm-none-eabi-gcc (v16.01) |
以下はリポジトリに含まれています。
mruby | bison (2.4.1) |
JavaScript minifier | yuicompressor (2.4.8) |
Webアプリのビルド
Visual Studio 2015を使用します。「webapp/webmrbc/webmrbc.sln」を開いてビルドします。C#で書かれたコードはBridge.NETによりJavaScriptにコンパイルされ、「webapp/webmrbc/js」フォルダに「webmrbc.js」が出力されます。Bridge.NETはNuGetパッケージで、Visual Studio 2015のビルド時に自動的にダウンロード、インストールされて、ビルドに使用されます。Webアプリはこのプロジェクトで、デバッグすることが出来ます。 ビルドが成功するとビルド後のビルドイベントのコマンド実行により、「httpd-fs」フォルダにGR-PEACHに書き込むWebコンテンツがコピーされ、「tools\makefsdata.exe」で「httpd-fs.bin」にFatFSのディスクイメージとして、まとめられます。
ビルドの順番はこちらの方を先に行いますが、変更の頻度は低いため説明は後にしました。 Rubyコードをブラウザ上でmrubyのバイトコードにコンパイルするために「mrbc.js」というファイルがあります。これはmrbcをEmscriptenでJavaScriptにコンパイルしたものです。 mrubyのビルド環境にEmscriptenのtoolchainを追加してビルドしたものです。 リポジトリにある「mruby-1.2.0\build_config.rb」は、GR-PEACH向けのビルドのみが有効になっていますが、コメントアウトされた最後のブロックを有効にすることでmrbc.jsをコンパイルできます。=beginから=endまでのコメントアウトされたブロックがmrbc.js用のビルドになります。 このコメントアウトを戻して、通常のmrubyのビルドと同様にmakeを実行すると「mruby-1.2.0\build\emscripten\bin」に「mrbc.js」が出力されます。他のJavaScriptは「tools\yuicompressor-2.4.8.jar」でミニファイしていますが、mrbc.jsはうまくミニファイ出来ないので、https://jscompress.com/のサイトを利用してミニファイしています。mrbc.jsとmrbc.min.jsは、「webapp\webmrbc」フォルダにコピーしておきます。
GR-PEACH側アプリのビルド
Renesasの総合開発環境のe2studioとGNU Tools(旧KPIT)のコンパイラ・ツール・チェーン「GNUARM-NONE Toolchain v16.01」を使用します。
e2studioのメニュー「ファイル」→「インポート」で、EcnlProtoToolを展開したフォルダを指定します。以下のプロジェクトが表示されるので、すべて取り込みます。
asp3_dcre | TOPPERS/ASP3+mbed | libkernel.a | |
ntshell | Natural tiny shell、FatFS、TINET、Socketなど | ntshell.bin | asp3_dcreに依存 |
onigmo-5.15.0 | mruby用正規表現ライブラリ | libonigmo.a | |
mrbgems | mruby-onig-regexp mruby-io、mruby-pack、mruby-socket、mruby-dir mruby-ecnl mruby-arduino(Wakayama.rb Ruby Board V2 library) | - | ファイル管理のみ |
mruby-1.2.0 | mruby | libmruby.a | onigmo-5.15.0、mrbgemsに依存 |
tcc-0.9.26 | Tiny C compiler | libtcc.a | |
prototool | GR-PEACH側アプリ | prototool.bin | ntshell、mruby-1.2.0、tcc-0.9.26に依存 |
tools | ビルドに必要なコマンド | - | ファイル管理のみ |
e2studioですべてのプロジェクトをビルドします。最終的には「prototool\Debug\prototool.bin」が出力され、これをGR-PEACHに書き込みます。 デバッグは、ntshellとprototoolで出来ますが、それぞれに登録されたソースコードのみがシンボルデバッグできます。
使用しているオープンソース
GR-PEACH側には、BusyBoxのviが入っています。BusyBoxはGPLv2でその他のソフトウェアとは性格の違うライセンスとなっていますので、再頒布する際は注意してください。「prototool\src\libbb」フォルダがBusyBoxのソースを含んでいます。
Webアプリ
Bridge.NET | Apache License 2.0 |
jQuery | MIT license |
Bootstrap | MIT license |
Blockly | Apache License 2.0 |
blockly2ruby | MIT license |
mruby | MIT license |
Ace (Ajax.org Cloud9 Editor) | BSD 3-clause License |
xterm.js | MIT License |
jay | 4-clause BSD licensed |
Smalruby | MIT License |
GR-PEACH側アプリ
TOPPERS/ASP3 | TOPPERS License |
mbed | Apache License 2.0 |
TINET | TOPPERS License |
mruby | MIT license |
mruby-io | MIT license |
mruby-pack | MIT license |
mruby-socket | MIT license |
mruby-dir | MIT license |
mruby-onig-regexp | MIT license |
Onigmo (Oniguruma-mod) | BSD license |
FAT File System Module | BSDライク |
Wakayama.rb Ruby Board V2 library | MIT license |
Natual Tiny Shell | MIT license |
TLSF | BSD license |
Tiny C Compiler | LGPL |
BusyBox(vi) | GPLv2 |
http-parser | MIT license |
mod_websocket | lighttpd LICENCE (revised BSD license) |
uIP | BSD 3-clause license |
TCP Socket API
mrubyの拡張機能mrbgemのiij/mruby-socketを含んでいるので、Ruby版Socket APIを使用出来ます。
おまけ
Tiny C Compilerで、C言語ファイルをELFファイルにコンパイル。リンクや実行は出来ません。
Attachments (4)
- proto_tool.gif (2.3 MB ) - added by 7 years ago.
- mruby_shell.gif (587.8 KB ) - added by 7 years ago.
- tcp_echo.gif (1.1 MB ) - added by 7 years ago.
- tcc_shell.gif (723.4 KB ) - added by 7 years ago.