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) MonoBrick (.NET framework) ev3dev (Linux) TOPPERS/EV3RT mruby on EV3RT+TECS 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 アプリケーションローダのバグ 修 正 2016 年 3 2 β6 カラーセンサのRGB-RAWモード 対 応 ダイナミックローディング 時 のCRE/ DTQ/CRE-PDQ/CRE_MTXサポート Bluetooth CC2560Aチップサポート USB 経 由 でのファイル 転 送 サポート 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 ( 本 の 動 画 を 掲 載 予 定 ) サポートメーリングリスト etrobo@toppers.jp 誰 でも 投 稿, 閲 覧 可 能 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)を 取 得 パッケージを 解 凍 $ unzip ev3rt-beta6-2-release.zip カーネルソースコードを 解 凍 $ cd ev3rt-beta6-2-release $ tar xvf hrp2.tar.xz 9
EV3RTパッケージのフォルダ 構 成 ファイル/フォルダ 名 内 容 Changelog.txt リリースノート. 変 更 履 歴. EV3RT_C_API_Reference/ EV3RT_CPP_API_Reference/ ngki_spec-171.pdf sdcard/ EV3RTのC APIリファレンス index.htmlを 開 くと 閲 覧 可 能 EV3RTのC++ APIリファレンス TOPPERSカーネルの 仕 様 書 (Ver.1.7.1) SDカードに 保 存 するファイルのサンプル EV3RTはカーネルやアプリケーションのイメージ ファイルをSDカードに 保 存 し,EV3 本 体 に 挿 することで 使 hrp2/ EV3RTのソースコード 本 体 ( 後 ろで 詳 細 に 解 説 ) HRP2カーネル デバイスドライバやミドルウェア アプリケーションのワークスペース 10
SDカードに 置 くファイルのサンプル sdcardフォルダの 中 ファイル/フォルダ 名 uimage ev3rt/ apps/ etc/rc.conf.ini res/ 内 容 EV3RTのカーネル, 動 的 ローダのイメージファイル (EV3 起 動 時 にここから 実 を 始 める) EV3RTが 使 するディレクトリ アプリケーションのロードイメージを 置 くフォルダ 各 種 設 定 ファイル サンプルアプリケーション(ファイルI/O)で 使 して いるフォルダ.プログラムでは /ev3rt/res というパ スでアクセスできる. 11
設 定 ファイルでできること ログ 出 先 の 変 更 無 効 化 [Debug] # DefaultPort = UART UARTを 使 用 する 場 合 DefaultPort = BT Bluetoothを 使 用 する 場 合 # DefaultPort = LCD LCDを 使 用 する 場 合 何 も 指 定 しない 場 合 の 出 先 はLCD Bluetoothの 接 続 情 報 の 変 更 [Bluetooth] LocalName=Mindstorms EV3 PinCode=0000 ペアリング 時 の ピンコード rc.conf.ini ホストPCから える デバイス 名 rc.conf.ini 12
EV3RTのカーネル(hrp2フォルダ)の 内 容 アプリケーション 開 発 に 関 係 しそうなもののみ フォルダ 名 arch, include, extension, kernel, library, pdic, syssvc, target base-workspace sdk/workspace cfg configure 内 容 HRP2カーネルのソースコード. デバイスドライバなどは target/ev3_gcc/ の 下 アプリケーションローダ アプリケーション 開 発 ワークスペース サンプルアプリケーション EV3RTでのアプリケーション 開 発 に 必 要 なツール ( 静 的 API Cコード 成 ) Windows 以 外 の 環 境 では,cfgのバイナリを れ 替 える 必 要 がある. http://www.toppers.jp/cfg-download.html から 環 境 に あったバイナリをダウンロードし,cfg/cfg/ に 置 く アプリケーションのMakefileをテンプレートから 成 するユーティリティ 13
アプリケーションのビルド EV3RTのworkspaceフォルダに 移 動 してアプリ ケーションをビルド $ cd ev3rt-beta6-2-release/hrp2/sdk/workspace/ スタンドアローン 形 式 のモジュールをビルドす る 場 合 は make img=<フォルダ 名 > $ make img=helloev3 動 的 ローディング 形 式 のモジュールをビルドす る 場 合 は make app=<フォルダ 名 > $ make app=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. 実 モジュール(uImage)を make img で 成 2. uimage をSDカードのトップに 置 く 3. EV3を 起 動 ( 中 央 ボタンを 押 す) 4. 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