Changes between Version 7 and Version 8 of EcnlProtoTool
- Timestamp:
- May 6, 2017, 1:18:12 AM (7 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
EcnlProtoTool
v7 v8 1 [[PageOutline(2-3, 目次)]] 2 1 3 = ECNLプロトタイピング・ツール = 2 4 3 ECNLプロトタイピング・ツールは、mruby版ECNLを含むGR-PEACHの動作環境と、Blocklyを使用したRubyコードを出力するWebアプリで構成されたツールです。現状では作成した ファイルが保存できないなど、未完成な部分の多いプレビュー的なリリースです。5 ECNLプロトタイピング・ツールは、mruby版ECNLを含むGR-PEACHの動作環境と、Blocklyを使用したRubyコードを出力するWebアプリで構成されたツールです。現状では作成したプロジェクト全体を保存できないなど、未完成な部分の多いプレビューとしてのリリースとなっています。随時、更新していく予定です。 4 6 5 7 == ダウンロード == 6 8 7 ソースコードのダウンロードは、[browser:"EcnlProtoTool/trunk" こちら]の 「Download in other formats: Zip Archive」からどうぞ。9 ソースコードのダウンロードは、[browser:"EcnlProtoTool/trunk" こちら]のページの下にある「Download in other formats: Zip Archive」からどうぞ。 8 10 9 11 実行ファイルは[browser:"EcnlProtoTool/trunk/bin/prototool.bin" こちら]です。GR-PEACHのmbedドライブに書き込んでください。 … … 11 13 == 操作イメージ == 12 14 13 一般照明の動作状態のON/OFFで、GR-PEACHの緑LEDを点灯/消灯を行う操作方法。15 ECHONET Liteの機器の一般照明の動作状態のON/OFFで、GR-PEACHの緑LEDを点灯/消灯を行う操作方法を説明します。 14 16 15 17 [[Image(proto_tool.gif)]] 16 18 19 1.GR-PEACHは固定のIPアドレス「192.168.137.110」となっているので、サブネットの合っているPCのブラウザから「[http://192.168.137.110/]」をURLとして開きます。(IE、Edge、Chrome、FireFoxでは、表示されますが、Operaでは表示が途中て止まってしまいます。原因は未調査です。) 20 21 2.画面は、ブロック、Ruby、出力のタブがあり、ブロックのタブにはメインループやECHONET機器やノードに対応するクラスを選択する領域と、Blocklyによるプログラミング画面があります。Blocklyの部分にはツールボックスがあり、標準のブロックの他にTOPPERS/ECNLのAPIブロックとECHONET機器のプロパティブロックがあります。また、GR-PEACH自体の制御のためにArduinoブロックがあります。ArduinoブロックはGR-CITRUSのRuby版Arduino APIをブロック化してあります。動作はLEDのdigitalWriteしか確認が出来ていない状況です。 22 23 3.上の操作例では、「新しい機器オブジェクト」の追加画面から「一般照明」を選択して追加します。 24 25 4.「クラス」の領域で選択した一般照明で表示されているBlocklyの画面で、ツールボックスからECHONET Lite Propertyの中から「動作状態」を選んで配置します。このブロックには、「動作状態」を「ON」にする電文を受信した時と、「OFF」にする電文を受信した時の処理を、ブロックで記述することが出来ます。 26 27 5.動作状態がONに設定されたときは、Arduino APIのデジタルライトで緑のLEDをHIGHになるようにし、OFFに設定されたときは、緑のLEDをLOWになるように処理を書きます。 28 29 6.「クラス」の領域で「!MainLoop」を選択し、緑のLEDのピンが出力ポートになるよう、「PINモードの設定」をOUTPUTにします。 30 31 7.右上の「実行」ボタンの押下で、GR-PEACHに今定義した動作が書き込まれ実行されます。 32 33 8.実行状態でECHONET Liteの確認用ソフトの「[https://smarthouse-center.org/sdk/download/ SSNG]」などで、GR-PEACHのIPアドレスに対して一般照明の動作状態を0x30や0x31に設定する電文を送信すると、GR-PEACHの緑のLEDがON/OFFします。 34 17 35 == GR-PEACH上のmruby実行環境 == 18 36 19 Rubyファイルをmrubyコマンドで実行。mrbcコマンドでバイトコードにコンパイル。mruby -bでバイトコードを実行。 37 通常は上記のWebアプリから動作を書き込んで利用しますが、GR-PEACHのmbedデバッグポートからコマンドを入力することもできます。コマンド一覧は「help」コマンドで表示できます。 38 39 下の例では、Rubyファイルを「mruby」コマンドで実行するのと、「mrbc」コマンドでバイトコードにコンパイルし、「mruby -b」でバイトコードを実行する例です。 20 40 21 41 [[Image(mruby_shell.gif)]] … … 23 43 == ビルド == 24 44 25 ビルド環境のOSはWindowsで、7と10では確認しました。 26 ビルドに必要なのは、 27 ||Webアプリ||[https://www.microsoft.com/ja-jp/dev/default.aspx Visual Studio 2015]|| 28 ||mrbc.js||[http://kripken.github.io/emscripten-site/ Emscripten] (SDK Ver.1.37.10)|| 29 ||mruby||[http://rubyinstaller.org/downloads/ Ruby] (2.3.3 64bit)|| 30 ||GR-PEACHアプリ||[https://www.renesas.com/ja-jp/products/software-tools/tools/ide/e2studio.html e2studio] (5.3.1)|| 31 ||GR-PEACHアプリ||[https://gcc-renesas.com/ja/rz/rz-download-toolchains/ arm-none-eabi-gcc] (v16.01)|| 45 ビルド環境のOSはWindowsで、7と10でビルド出来ることを確認しました。 46 47 ビルドに必要であらかじめインストールしてある必要があるのは、以下のアプリです。 48 ||[https://www.microsoft.com/ja-jp/dev/default.aspx Visual Studio 2015]||Webアプリのビルド|| 49 ||[http://kripken.github.io/emscripten-site/ Emscripten] (SDK Ver.1.37.10)||mrbc.jsのビルド|| 50 ||[http://rubyinstaller.org/downloads/ Ruby] (2.3.3 64bit)||mrubyのビルド|| 51 ||[https://www.renesas.com/ja-jp/products/software-tools/tools/ide/e2studio.html e2studio] (5.3.1)||GR-PEACHアプリのビルド|| 52 ||[https://gcc-renesas.com/ja/rz/rz-download-toolchains/ arm-none-eabi-gcc] (v16.01)||GR-PEACHアプリのビルド|| 53 ||[https://www.java.com/ja/ Java]||JavaScriptのミニファイ|| 32 54 33 55 以下はリポジトリに含まれています。 34 || mruby||[http://gnuwin32.sourceforge.net/packages/bison.htm bison] (2.4.1)||35 || !JavaScript minifier||[https://yui.github.io/yuicompressor/ yuicompressor] (2.4.8)||56 ||[http://gnuwin32.sourceforge.net/packages/bison.htm bison] (2.4.1)||mrubyのビルド|| 57 ||[https://yui.github.io/yuicompressor/ yuicompressor] (2.4.8)||JavaScriptのミニファイ|| 36 58 37 59 === Webアプリのビルド === 38 60 39 Visual Studio 2015を使用します。「webapp/webmrbc/webmrbc.sln」を開いてビルドします。C#で書かれたコードはBridge.NETによりJavaScriptにコンパイルされ、「webapp/webmrbc/js」フォルダに「webmrbc.js」が出力されます。Bridge.NETはNuGetパッケージで、Visual Studio 2015のビルド時に自動的にダウンロード、インストールされて、ビルドに使用されます。Webアプリはこのプロジェクトで、デバッグすることが出来ます。 61 WebアプリのビルドにはVisual Studio 2015を使用します。 62 63 「webapp\webmrbc\webmrbc.sln」を開いてビルドします。C#で書かれたコードはBridge.NETによりJavaScriptにコンパイルされ、「webapp\webmrbc\js」フォルダに「webmrbc.js」が出力されます。Bridge.NETはNuGetパッケージで、Visual Studio 2015のビルド時に自動的にダウンロード、インストールされて、ビルドに使用されます。Webアプリはこのプロジェクトで、デバッグすることが出来ます。 64 40 65 ビルドが成功するとビルド後のビルドイベントのコマンド実行により、「httpd-fs」フォルダにGR-PEACHに書き込むWebコンテンツがコピーされ、「tools\makefsdata.exe」で「httpd-fs.bin」にFatFSのディスクイメージとして、まとめられます。 41 66 42 ビルドの順番はこちらの方を先に行いますが、変更の頻度は低いため説明は後にしました。 43 Rubyコードをブラウザ上でmrubyのバイトコードにコンパイルするために「mrbc.js」というファイルがあります。これはmrbcをEmscriptenでJavaScriptにコンパイルしたものです。 44 mrubyのビルド環境にEmscriptenのtoolchainを追加してビルドしたものです。 67 Webアプリには、Rubyコードをブラウザ上でmrubyのバイトコードにコンパイルするために「mrbc.js」というファイルが含まれています。これはmrubyのコマンドmrbcをEmscriptenでJavaScriptにコンパイルしたものです。手順としてはこちらを先に行う必要があります。 68 69 mrubyのビルド環境にEmscriptenのtoolchain定義を追加してビルドします。「mruby-1.2.0\tasks\toolchains\emscripten.rake」がEmscriptenのtoolchainの定義です。 70 45 71 リポジトリにある「mruby-1.2.0\build_config.rb」は、GR-PEACH向けのビルドのみが有効になっていますが、コメントアウトされた最後のブロックを有効にすることでmrbc.jsをコンパイルできます。=beginから=endまでのコメントアウトされたブロックがmrbc.js用のビルドになります。 46 このコメントアウトを戻して、通常の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」フォルダにコピーしておきます。 72 73 このコメントアウトを戻して、通常の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」フォルダにコピーしておきます。 47 74 48 75 === GR-PEACH側アプリのビルド === … … 61 88 e2studioですべてのプロジェクトをビルドします。最終的には「prototool\Debug\prototool.bin」が出力され、これをGR-PEACHに書き込みます。 62 89 デバッグは、ntshellとprototoolで出来ますが、それぞれに登録されたソースコードのみがシンボルデバッグできます。 90 「ntshell\webserver\httpd_fs.bin」は、Webアプリのコンテンツを含んだROMディスクのイメージで、Webアプリのビルドで出力されるファイルです。GR-PEACH側アプリのビルドで必要なファイルの一つで、最終成果物「prototool.bin」に含まれます。 63 91 64 92 == 使用しているオープンソース == 65 93 66 GR-PEACH側には、BusyBoxのviが入っています。BusyBoxはGPLv2でその他のソフトウェアとは性格の違うライセンスとなっていますので、再頒布する際は注意してください。「prototool\src\libbb」フォルダ がBusyBoxのソースを含んでいます。94 GR-PEACH側には、BusyBoxのviが入っています。BusyBoxはGPLv2でその他のソフトウェアとは性格の違うライセンスとなっていますので、再頒布する際は注意してください。「prototool\src\libbb」フォルダにBusyBoxのソースを含んでいます。 67 95 68 96 === Webアプリ === … … 103 131 == TCP Socket API == 104 132 105 mrubyの拡張機能mrbgemのiij/mruby-socketを含んでいるので、Ruby版Socket APIを使用出来ます。 133 mrubyの拡張機能mrbgemのmruby-socketを含んでいるので、Ruby版Socket APIを使用出来ます。 134 135 下の例では、「[http://blog.codebook-10000.com/entry/20130809/1376057341 RubyでSocketプログラミング超入門編]」に書かれている記事のRubyコードを実行した様子です。GR-PEACHとBash on WindowsのRubyとのTCP通信を行う例です。 106 136 107 137 [[Image(tcp_echo.gif)]] … … 109 139 == おまけ == 110 140 111 Tiny C Compilerで、C言語ファイルをELFファイルにコンパイル 。リンクや実行は出来ません。141 Tiny C Compilerで、C言語ファイルをELFファイルにコンパイルする様子です。現状ではリンクや実行は出来ません。mrubyのJITなどに発展できないかの試行用です。 112 142 113 143 [[Image(tcc_shell.gif)]]