ETロボコン向けTOPPERS活⽤セミナー EV3RTの概要 2016年6⽉11⽇(⼟) 松原豊(名古屋⼤学) ⽯川拓也⽒の資料を基に作成 1 EV3RT • Real-Time platform for EV3 • http://dev.toppers.jp/trac_user/ev3pf/wiki/WhatsEV3RT • TOPPERS/HRP2カーネルをベースとしたプラット フォーム • メモリ保護機能を提供 • CやC++で開発が可能 • TOPPERS OS/newlib/EV3⽤のAPIを利⽤可能 • その他の利点 • 起動時間が早い(約5秒.LMS2012では30秒以上) • メモリ消費量が少ない(LMS2012の約10%) • ダイナミックローディング機能(OSを再起動せずにアプリケー ションを更新可能) • ETロボコン2015以降,公式プラットフォーム 2 ETロボコン2016のプラットフォーム https://github.com/ETrobocon/etroboEV3/wiki 3 EV3⽤プラットフォームの発展経緯 • • • LMS2012 (LinuxベースのVM) その他のOSS 2014年から名古屋⼤学を中⼼に開発 C/C++でアプリを開発 デバドラなどを Linuxなどから移植 MINDSTORMS EV3⽤ TOPPERSプラットフォーム leJOS (Java VM) TOPPERS/EV3RT MonoBrick (.NET framework) mruby on EV3RT+TECS ev3dev (Linux) TOPPERS/HRP2 TOPPERS/ASP TECS仕様 mruby サポート • • TECS WGを中⼼に開発 mrubyによるアプリ開発 4 EV3RTのアーキテクチャ • HRPカーネルの機能を利⽤し,アプリケーションを⾮特権モードで 動作させ,カーネルやデバイスドライバなどを特権モードで動作さ せることで,アプリケーションの不具合を検出しやすくしている 5 2015年度に導⼊された主な機能 EV3RT LCDの画⾯ USB経由でのファイル転送 アプリケーションローダ起動画⾯. 5秒で起動! PCからEV3RT(USBデバイスとして認識 される)にアプリの実⾏ファイルを転送. Bluetooth経由でも可能. コンソール機能. EV3の画⾯で, 動作ログを確認できる! 6 2015年度の更新内容 リリース⽇ バージョン 主な更新内容 2015年4⽉22⽇ β4 • • • C++ APIサポート LCDへのログ表⽰ Bluetooth機能拡充 2015年6⽉1⽇ β5 • • アプリケーションローダ更新 サンプルプログラム追加,修正 2015年9⽉10⽇ β5-1 • Bluetoothのバグ修正 2015年12⽉9⽇ β5-2 • アプリケーションローダのバグ修正 β6 • • • • カラーセンサのRGB-RAWモード対応 ダイナミックローディング時のCRE/ DTQ/CRE-PDQ/CRE_MTXサポート Bluetooth CC2560Aチップサポート USB経由でのファイル転送サポート 2016年3⽉2⽇ 2016年03⽉14⽇ β6-1 • 軽微な修正,バグ修正 2016年03⽉17⽇ β6-2 • • アナログセンサの初期化ルーチン更新 シリアル出⼒選択機能 7 すぐに利⽤可能なサービス TOPPERS/EV3RTウェブサイト • 開発環境構築のマニュアル • サンプルアプリケーションのビルドと実⾏ • ユーザマニュアル(アプリケーション開発者向け) • EV3RT C APIリファレンス • EV3RT C++ APIリファレンス • EV3RT mruby APIリファレンス • FAQ 教育教材 • 2015年度ETロボコン向けTOPPERS活⽤セミナー動画 http://toppers.jp/etrobo_seminar15.html (本⽇の動画を掲載予定) サポートメーリングリスト • [email protected] • 誰でも投稿,閲覧可能 8 EV3RTのインストール • 開発環境をホストPCにインストール • http://dev.toppers.jp/trac_user/ev3pf/wiki/DevEnv の「開 発環境(クロスコンパイラ,ツール)のインストール」を参考に • パッケージをダウンロード • http://dev.toppers.jp/trac_user/ev3pf/wiki/Download から β6-2(ev3rt-beta6-2-release.zip)を取得 • パッケージを解凍 $unzipev3rt-beta6-2-release.zip • カーネルソースコードを解凍 $cdev3rt-beta6-2-release $tarxvfhrp2.tar.xz 9 EV3RTパッケージのフォルダ構成 ファイル/フォルダ名 内容 Changelog.txt リリースノート.変更履歴. EV3RT_C_API_Reference/ EV3RTのC APIリファレンス index.htmlを開くと閲覧可能 EV3RT_CPP_API_Reference/ EV3RTのC++ APIリファレンス ngki_spec-171.pdf TOPPERSカーネルの仕様書(Ver.1.7.1) sdcard/ SDカードに保存するファイルのサンプル EV3RTはカーネルやアプリケーションのイメージ ファイルをSDカードに保存し,EV3本体に挿⼊ することで使⽤ hrp2/ EV3RTのソースコード本体(後ろで詳細に解説) • HRP2カーネル • デバイスドライバやミドルウェア • アプリケーションのワークスペース 10 SDカードに置くファイルのサンプル sdcardフォルダの中⾝ ファイル/フォルダ名 内容 uImage EV3RTのカーネル,動的ローダのイメージファイル (EV3起動時にここから実⾏を始める) ev3rt/ EV3RTが使⽤するディレクトリ apps/ アプリケーションのロードイメージを置くフォルダ etc/rc.conf.ini 各種設定ファイル res/ サンプルアプリケーション(ファイルI/O)で使⽤して いるフォルダ.プログラムでは「/ev3rt/res」というパ スでアクセスできる. 11 設定ファイルでできること ログ出⼒先の変更 rc.conf.ini [Debug] #DefaultPort=UART←UARTを使用する場合 DefaultPort=BT←Bluetoothを使用する場合 #DefaultPort=LCD←LCDを使用する場合 無効化 ※何も指定しない場合の出⼒先はLCD Bluetoothの接続情報の変更 [Bluetooth] LocalName=MindstormsEV3 PinCode=0000 rc.conf.ini ホストPCから⾒える デバイス名 ペアリング時の ピンコード 12 EV3RTのカーネル(hrp2フォルダ)の内容 アプリケーション開発に関係しそうなもののみ フォルダ名 内容 arch, include, extension, kernel, library, pdic, syssvc, target HRP2カーネルのソースコード. デバイスドライバなどは target/ev3_gcc/ の下 base-workspace アプリケーションローダ sdk/workspace アプリケーション開発⽤ワークスペース サンプルアプリケーション cfg EV3RTでのアプリケーション開発に必要なツール (静的API→Cコード⽣成) Windows以外の環境では,cfgのバイナリを⼊れ替 える必要がある. http://www.toppers.jp/cfg-download.html から環境に あったバイナリをダウンロードし,cfg/cfg/ に置く configure アプリケーションのMakefileをテンプレートから⽣ 成するユーティリティ 13 アプリケーションのビルド • EV3RTのworkspaceフォルダに移動してアプリ ケーションをビルド $cdev3rt-beta6-2-release/hrp2/sdk/workspace/ • スタンドアローン形式のモジュールをビルドす る場合は make img=<フォルダ名> $makeimg=helloev3 • 動的ローディング形式のモジュールをビルドす る場合は make app=<フォルダ名> $makeapp=helloev3 14 スタンドアローン形式 • EV3RTとアプリケーションを⼀つのモジュールにリンク して,EV3RTの起動とともにアプリケーションの実⾏を 開始する形式 • EV3RTとアプリケーションが⼀つのuImageファイルと なるため,SDカードのuImageファイルを置き換えるこ とでアプリケーションを書き換える • SDカードのトップフォルダにuImageを置けばよい • EV3が起動すると,EV3のメモリに書き込まれている ブートローダubootが起動し,SDカードにある uImageファイルをSDRAMに展開してEV3RTを起動 15 動的ローディング形式 • アプリケーションローダにより,アプリケーションを EV3RTの起動後にロードする形式 • アプリケーションモジュール(デフォルト名はapp) と,ローダを含むEV3RTのモジュールを別々にビル ドする • アプリケーションローダは,スタンドアローン形式で 提供されるアプリケーションの⼀種 • 動的ローディング⽤のアプリケーションモジュールは, SDカードの/ev3rt/appsフォルダに置く • EV3RT起動中に,Bluetooth/USB/シリアルケーブル 経由でアプリケーションモジュールを転送可能 • http://dev.toppers.jp/trac_user/ev3pf/wiki/ SampleProgram#PCからEV3へのアプリケーションのロー ド⽅法の選択 16 アプリケーションの実⾏:スタンドアローン 1. 2. 3. 4. 実⾏モジュール(uImage)を make img で⽣成 uImage をSDカードのトップに置く EV3を起動(中央ボタンを押す) 「Run App」と画⾯下部に表⽰されているときに, 中央ボタンを押すとアプリケーションが起動 17 アプリケーションの実⾏:動的ローディング 1. アプリケーションのモジュールを make app で⽣成 2. app をSDカードの/ev3rt/apps/に置く • ファイル名を app から変更しても構わない 3. EV3を起動(中央ボタンを押す) 4. 「Load App」と画⾯下部に表⽰されているときに中央ボタンを 押すと,アプリケーションローダが起動するので「SD card」を 選択し,アプリケーションを選択して起動 • 上下ボタンでカーソル移動,中央ボタンで決定 • アプリケーション実⾏時にバックボタンを⻑押しすると,コン ソールに戻る • コンソールで右ボタンを押して「Shutdown」と画⾯下部に表⽰ されているときに中央ボタンを押すと電源を切る(左+右+ バックボタンを同時に⻑押しする⽅法もある) 18 ビルドの仕組み(make での処理内容) 1. sdk/workspace/Makefileを使ってmake img=test or app=test を実⾏ 2. sdk/workspace/test/Makefile.incをinclude • configureのパラメータを設定 3. sdk/OBJをmkdirしてOBJ/に移動 4. OBJ/でconfigureを実⾏して,Makefileを⽣成 • sdk/workspace/testをパスに含めて,2の設定を使⽤ • Makefileのテンプレートはsdk/common/Makefile.img, Makefile.app 5. OBJ/で4.で⽣成したMakefileを使ってmake 6. スタンドアローン版の場合は,objcopyでELF形式のモジュール からバイナリ形式のhrp2を⽣成したあと,mkimageコマンドで hrp2からuImageを⽣成 • ubootがロードするためのファイル形式に変換 7. sdk/workspace/にapp or uImageをコピー • appは動的ローディング形式のアプリケーションモジュール 19
© Copyright 2024 Paperzz