Changes between Version 7 and Version 8 of EcnlProtoTool


Ignore:
Timestamp:
May 6, 2017, 1:18:12 AM (7 years ago)
Author:
coas-nagasima
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • EcnlProtoTool

    v7 v8  
     1[[PageOutline(2-3, 目次)]]
     2
    13= ECNLプロトタイピング・ツール =
    24
    3 ECNLプロトタイピング・ツールは、mruby版ECNLを含むGR-PEACHの動作環境と、Blocklyを使用したRubyコードを出力するWebアプリで構成されたツールです。現状では作成したファイルが保存できないなど、未完成な部分の多いプレビュー的なリリースです。
     5ECNLプロトタイピング・ツールは、mruby版ECNLを含むGR-PEACHの動作環境と、Blocklyを使用したRubyコードを出力するWebアプリで構成されたツールです。現状では作成したプロジェクト全体を保存できないなど、未完成な部分の多いプレビューとしてのリリースとなっています。随時、更新していく予定です。
    46
    57== ダウンロード ==
    68
    7 ソースコードのダウンロードは、[browser:"EcnlProtoTool/trunk" こちら]の「Download in other formats: Zip Archive」からどうぞ。
     9ソースコードのダウンロードは、[browser:"EcnlProtoTool/trunk" こちら]のページの下にある「Download in other formats: Zip Archive」からどうぞ。
    810
    911実行ファイルは[browser:"EcnlProtoTool/trunk/bin/prototool.bin" こちら]です。GR-PEACHのmbedドライブに書き込んでください。
     
    1113== 操作イメージ ==
    1214
    13 一般照明の動作状態のON/OFFで、GR-PEACHの緑LEDを点灯/消灯を行う操作方法
     15ECHONET Liteの機器の一般照明の動作状態のON/OFFで、GR-PEACHの緑LEDを点灯/消灯を行う操作方法を説明します
    1416
    1517[[Image(proto_tool.gif)]]
    1618
     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
    1735== GR-PEACH上のmruby実行環境 ==
    1836
    19 Rubyファイルをmrubyコマンドで実行。mrbcコマンドでバイトコードにコンパイル。mruby -bでバイトコードを実行。
     37通常は上記のWebアプリから動作を書き込んで利用しますが、GR-PEACHのmbedデバッグポートからコマンドを入力することもできます。コマンド一覧は「help」コマンドで表示できます。
     38
     39下の例では、Rubyファイルを「mruby」コマンドで実行するのと、「mrbc」コマンドでバイトコードにコンパイルし、「mruby -b」でバイトコードを実行する例です。
    2040
    2141[[Image(mruby_shell.gif)]]
     
    2343== ビルド ==
    2444
    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のミニファイ||
    3254
    3355以下はリポジトリに含まれています。
    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のミニファイ||
    3658
    3759=== Webアプリのビルド ===
    3860
    39 Visual Studio 2015を使用します。「webapp/webmrbc/webmrbc.sln」を開いてビルドします。C#で書かれたコードはBridge.NETによりJavaScriptにコンパイルされ、「webapp/webmrbc/js」フォルダに「webmrbc.js」が出力されます。Bridge.NETはNuGetパッケージで、Visual Studio 2015のビルド時に自動的にダウンロード、インストールされて、ビルドに使用されます。Webアプリはこのプロジェクトで、デバッグすることが出来ます。
     61Webアプリのビルドには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
    4065ビルドが成功するとビルド後のビルドイベントのコマンド実行により、「httpd-fs」フォルダにGR-PEACHに書き込むWebコンテンツがコピーされ、「tools\makefsdata.exe」で「httpd-fs.bin」にFatFSのディスクイメージとして、まとめられます。
    4166
    42 ビルドの順番はこちらの方を先に行いますが、変更の頻度は低いため説明は後にしました。
    43 Rubyコードをブラウザ上でmrubyのバイトコードにコンパイルするために「mrbc.js」というファイルがあります。これはmrbcをEmscriptenでJavaScriptにコンパイルしたものです。
    44 mrubyのビルド環境にEmscriptenのtoolchainを追加してビルドしたものです。
     67Webアプリには、Rubyコードをブラウザ上でmrubyのバイトコードにコンパイルするために「mrbc.js」というファイルが含まれています。これはmrubyのコマンドmrbcをEmscriptenでJavaScriptにコンパイルしたものです。手順としてはこちらを先に行う必要があります。
     68
     69mrubyのビルド環境にEmscriptenのtoolchain定義を追加してビルドします。「mruby-1.2.0\tasks\toolchains\emscripten.rake」がEmscriptenのtoolchainの定義です。
     70
    4571リポジトリにある「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」フォルダにコピーしておきます。
    4774
    4875=== GR-PEACH側アプリのビルド ===
     
    6188e2studioですべてのプロジェクトをビルドします。最終的には「prototool\Debug\prototool.bin」が出力され、これをGR-PEACHに書き込みます。
    6289デバッグは、ntshellとprototoolで出来ますが、それぞれに登録されたソースコードのみがシンボルデバッグできます。
     90「ntshell\webserver\httpd_fs.bin」は、Webアプリのコンテンツを含んだROMディスクのイメージで、Webアプリのビルドで出力されるファイルです。GR-PEACH側アプリのビルドで必要なファイルの一つで、最終成果物「prototool.bin」に含まれます。
    6391
    6492== 使用しているオープンソース ==
    6593
    66 GR-PEACH側には、BusyBoxのviが入っています。BusyBoxはGPLv2でその他のソフトウェアとは性格の違うライセンスとなっていますので、再頒布する際は注意してください。「prototool\src\libbb」フォルダBusyBoxのソースを含んでいます。
     94GR-PEACH側には、BusyBoxのviが入っています。BusyBoxはGPLv2でその他のソフトウェアとは性格の違うライセンスとなっていますので、再頒布する際は注意してください。「prototool\src\libbb」フォルダBusyBoxのソースを含んでいます。
    6795
    6896=== Webアプリ ===
     
    103131== TCP Socket API ==
    104132
    105 mrubyの拡張機能mrbgemのiij/mruby-socketを含んでいるので、Ruby版Socket APIを使用出来ます。
     133mrubyの拡張機能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通信を行う例です。
    106136
    107137[[Image(tcp_echo.gif)]]
     
    109139== おまけ ==
    110140
    111 Tiny C Compilerで、C言語ファイルをELFファイルにコンパイル。リンクや実行は出来ません
     141Tiny C Compilerで、C言語ファイルをELFファイルにコンパイルする様子です。現状ではリンクや実行は出来ません。mrubyのJITなどに発展できないかの試行用です
    112142
    113143[[Image(tcc_shell.gif)]]