wiki:EcnlProtoTool

Version 7 (modified by coas-nagasima, 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.jsEmscripten (SDK Ver.1.37.10)
mrubyRuby (2.3.3 64bit)
GR-PEACHアプリe2studio (5.3.1)
GR-PEACHアプリarm-none-eabi-gcc (v16.01)

以下はリポジトリに含まれています。

mrubybison (2.4.1)
JavaScript minifieryuicompressor (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_dcreTOPPERS/ASP3+mbedlibkernel.a
ntshellNatural tiny shell、FatFS、TINET、Socketなどntshell.binasp3_dcreに依存
onigmo-5.15.0mruby用正規表現ライブラリlibonigmo.a
mrbgemsmruby-onig-regexp
mruby-io、mruby-pack、mruby-socket、mruby-dir
mruby-ecnl
mruby-arduino(Wakayama.rb Ruby Board V2 library)
-ファイル管理のみ
mruby-1.2.0mrubylibmruby.aonigmo-5.15.0、mrbgemsに依存
tcc-0.9.26Tiny C compilerlibtcc.a
prototoolGR-PEACH側アプリprototool.binntshell、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.NETApache License 2.0
jQueryMIT license
BootstrapMIT license
BlocklyApache License 2.0
blockly2rubyMIT license
mrubyMIT license
Ace (Ajax.org Cloud9 Editor)BSD 3-clause License
xterm.jsMIT License
jay4-clause BSD licensed
SmalrubyMIT License

GR-PEACH側アプリ

TOPPERS/ASP3TOPPERS License
mbedApache License 2.0
TINETTOPPERS License
mrubyMIT license
mruby-ioMIT license
mruby-packMIT license
mruby-socketMIT license
mruby-dirMIT license
mruby-onig-regexpMIT license
Onigmo (Oniguruma-mod)BSD license
FAT File System ModuleBSDライク
Wakayama.rb Ruby Board V2 libraryMIT license
Natual Tiny ShellMIT license
TLSFBSD license
Tiny C CompilerLGPL
BusyBox(vi)GPLv2
http-parserMIT license
mod_websocketlighttpd LICENCE (revised BSD license)
uIPBSD 3-clause license

TCP Socket API

mrubyの拡張機能mrbgemのiij/mruby-socketを含んでいるので、Ruby版Socket APIを使用出来ます。

おまけ

Tiny C Compilerで、C言語ファイルをELFファイルにコンパイル。リンクや実行は出来ません。

Attachments (4)

Note: See TracWiki for help on using the wiki.