********************************************************************** セッションs5d ワーク テーマ:PSoCボードで簡単プロトタイプ〜一瞬で組込みソフトウェア開発〜 講師:田中和明(九州工業大学) 日時:2016/08/26 14:30~15:50 参加人数:13名 ********************************************************************** (議事録本文) mrubyを使って組込みソフトウェア開発を体験する 必要なもの PC - Windows (Mac, Linuxでも可だが検証は出来ていない) - ネット接続 マイコンボード - mruby/c開発ボード - PSoCボード 自己紹介 九州工業大学 田中和明 組込みシステムに関する教育研究 - プログラミング,データ構造,Robot Sensor Processing 研究 mruby:Rubyを軽量化した言語 2010〜2012 mrubyを開発 2015〜  mruby/cを開発 2016〜  mruby用IDEを開発中 mruby/cを使った小中学生向けものづくり合宿(島根県) mruby Rubyの特徴 Webアプリ開発でよく使われる - 楽天, Cookpad, Hulu など 開発しやすい 再利用性が高い 可読性が高い 例: C言語とRubyプログラムの比較 1対1で簡単に書ける 行数が短い,型宣言も必要ない mrubyでの開発 従来の組込み開発 Cで実装され,ソフトウェア部分は単一の実行オブジェクトとなる ターゲット依存する部分が含まれる mrubyを使った開発 デバイスドライバや割り込みなどの層をmrubyVMに入れ込むことで, アプリケーション部分のみを開発するだけでよい - VMの上の層・下の層で開発を分離できる mrubyの仕組み インタプリタ方式ではなくVM方式 VMはデバイス依存だが移植は容易 得られる効果 ライブラリやドライバを再利用できる ハードとソフトの開発を並行してできる VMがあれば,アプリケーション部分は開発可能 ハードの変更が容易 【デモ】 * 簡単なプログラムで開発フローのデモ **.rb -> **.mrb (mrbはバイトコード) * 2つのプログラムを並行動作させるデモ Concurent実行:マルチスレッドでもマルチプロセスでもない 例えば,センサー用のプログラムとネット接続のプログラムを同時に動作させることが出来る. mruby開発環境 簡易IDE(開発中) - 開発を楽にしたい マイコンボード - マイコンにmrubyVMを入れておく(マイコンのファームウェア) 準備 IDE 指定されたURLからIDEのダウンロード-> ZIPファイルを展開 自分でファームを書き込みたい場合は, ファームウェア ファームウェアのライタ(Cypress社からダウンロード) コンパイラの設定 Local Compiler Cloud Compiler (mrubyのコンパイルをネット経由で行うため,今回はネット接続が必須) 【ワーク】 * 実際にプログラムを書いてみる - LEDを点滅させる led:LEDの制御 delay:引数だけ時間待ちする 違うデバイスでもmrubyVMが実装されていれば,同じアプリケーション(同じmrubyプログラム)が動作できる VMのソースコードの紹介(マニアックな人向け) メソッドの登録は,mrb_define**で対応表を作る(Cのメソッドもラップすることでそのまま登録可) オペコード部分 VMの改造は容易 VMが動作するのはたった数行 並列動作も優先度っぽい動作も可能 質問 * VMで使う予約語などはコンソーシアムで決まっているのか 通常Classのnamespaceに入れる.今回は,分かりやすくするために簡単にしている. * ドライバを追加しながらやっているのだが. すべてを新規に開発するのであれば,そういう形になる あるマイコンのフレームワークという閉じた環境が作れたら,より良い開発が出来る 下の層(C言語のライブラリ)があるという前提で進めたほうがよい * mrubyのソースコードは見られるのか githubのmruby/mrubyに公開されている (mrubyc/mrubycには軽量版のmrubyが公開されている) どちらも無償で商用利用も可能 IDEの方も公開予定(現在はまだ公開してないが,必ず公開する) * クラウドコンパイラならブラウザに直接書けるようにしたらどうか ブラウザでも書くことが出来る ローカルと切り替える設計にしたいので,このような方法にしている ■まとめ 前半部分では,mruby(軽量Ruby)について紹介し,mrubyを用いた開発フローや簡単なプログラムを動作させるデモを行い,開発の流れを確認した.後半部分は,mrubyIDEからサンプルプログラムをコンパイルし,各自配布されたPSoCボード(mrubyVMが実装されている)にバイトコードを書き込み,LEDを点滅させる演習を行った.演習では,参加者のPC環境や初期設定などにより資料通り進まないこともあったが,講師の方がそれぞれ対応し,全員動作させることができた.講師の方にとっても良いフィードバックが得られたようだった. 以上。