toppers/r2ca · カーネルとarduinoライブラリを組み合わせた環境 •...

61
Graduate School of Information Science, Nagoya Univ. Embedded and Real-Time Systems Lab. ERTL TOPPERS/R2CA 1 本田 晋也 名古屋大学 大学院情報科学研究科 [email protected] 最終更新 2016615TOPPERS活用アイデア・アプリケーション開発コンテスト 201572

Upload: others

Post on 18-Oct-2019

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

TOPPERS/R2CA

1

本田 晋也名古屋大学 大学院情報科学研究科

[email protected]

最終更新2016年6月15日

TOPPERS活用アイデア・アプリケーション開発コンテスト2015年7月2日

Page 2: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

概要ArduinoボードでArduinoライブラリとTOPPERS/ASPカーネルを用い

たプログラミングが可能なTOPPERS/R2CAについて紹介

• アジェンダ−Arduino

• TOPPERS と Maker Movement−TOPPERS/R2CA−R2CAの使用方法

• サンプルの実行• マルチタスク

−サンプルプロジェクト詳細−まとめ

2

Page 3: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

Maker Movement• 技術発展によりものづくりが容易になり,スタートアップ企業や個人が

アイデアを具体化する流れが活発化している−これらの人々がコミュニティを形成して交流

• 要因−インターネットの発達

• オープンソースハードウエア,ソフトウェア• 特定の趣味を持つ人が繋がり安くなった

−安価なハードウェア• 数千円のマイコンボード

−容易に使用可能な開発環境• インストーラによるインストール,Webコンパイラ

−工作機器の発達と利用可能箇所の増大• 3Dプリンタ,レーザーカッター• 利用可能なスペース(メイカースペース),ネット経由で利用

3

Page 4: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

Arduino• Makerの作品で広く使われているマイコンボードとIDEをセットにした環境

−安価で容易に使える−書籍等の情報が豊富

• Arduinoボード−各種マイコンを用いたボード(数十種類存在)−Arduino Uno : 最も一般的なArduinoボード

• Atmel ATmega328P, Flash 32KB, RAM 2KB−オープンハードウェアなためクローンのボードも存在

• ArduinoIDE−マルチプラットホームの開発環境−インストーラによりコンパイラ(GCC)やArduinoライブラリ

がインストールされる−ボタンを押すだけでコンパイルとボードへの書き込みが可能−デバッグ機能はない(printfデバッグ)−Arduinoライブラリを含む(ライセンスはGPL)

4

Page 5: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

Arduino• Arduinoプログラミングモデル

− setup()/loop()による容易なモデル−C++ベースの独自言語

• プロトタイプ等は必要なし−Arduino IDEがC++に変換してコンパイル

• Arduinoライブラリ−コアライブラリ

• IO操作(GPIO, AD, SPI, I2C),時間,文字列操作−Arduino準拠ライブラリ

• コアライブラリの上で実現されたライブラリ• Arduino IDEに含まれるライブラリSD,LCD,USB,Audio等のライブラリ

• その他,センサーやシールドに含まれるライブラリセンサー値の変換,Wifiモジュール制御,IoTサービスへの接続

5

void setup() {pinMode(13, OUTPUT);

}

void loop() {digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000);

}

Page 6: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

Arduino• シールド

−拡張ピンに接続することによりハードウェア機能を拡張するボード• 物理的には拡張ボードにおけるディファクトとなっている

−電気的互換性がない場合があるので注意(5V or 3.3V)−Wifi, LCD, SD,ロボット,センサー

6

Page 7: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

Arduinoに対する拡張• マルチタスク(RTOS)を使用したい

−複数の処置を平行に実行したい−処理毎にコードを分けたい−例)アクチュエータを制御しながらIoTサーバーと通信したい

• デバッガを使用したい−変数の状態を確認したい−デバイスドライバの開発のためにデバイスレジスタの値を見たい

7

コンソールタスク

LEDタスク

センサータスク

Webサーバタスク

Processingタスク

TFT/SDタスク

TOPPERS/ASPArduino ラ

イブ

ラリ

Arduino ライ

ブラ

Page 8: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

ASPカーネルとArduinoライブラリを組み合わせた環境

• マルチタスク環境でArduinoライブラリを使用可能• GUIベースのデバッガを使用可能

• TOPPERSの問題点の解決−開発環境の導入や使用の敷居が高い

• Arduino IDEをインストールするだけでビルド可能• バッチファイルによるビルドが可能• 安価で入手性の良いArduinoボードで実行可能• マクロの定義によるタスクの生成

−ライブラリ・ミドルウェアが少ない• 多くのArduinoライブラリが使用可能

Arduinoコアライブラリ

TOPPERS/R2CA (RTE/RTOS compatible with Arduino libraries)

8

ASPカーネル

Arduinoボード

Task1 Task2 Task3

Arduino準拠ライブラリ

Page 9: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

R2CAの使用方法

9

Page 10: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

R2CAの使用方法インストール・ビルド・実行・デバッグ・プログラミングモデルについて説明

• Qiitaにもチュートリアル記事がある(R2CAで検索すると出てくる)−基本的な使い方

• インストールとサンプルの実行,マルチタスク,優先度・スケジューリング,デバッグ

−通信• Wifi通信,Wifi通信(マルチタスク),CAN通信

−IoT• Milkcocoaへの接続,ThingSpeakへの接続

−Shield• Zumo,NCES IoT Base Shield

−MacOSXでの使用方法• TOPPERS/R2CA を MacOSXで動かす

10

Page 11: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

必要な機材• ホストPC

−Windows or Mac OS−本チュートリアルではWindowsで説明−Linuxでも動作するはず

• Arduino M0 Pro−6000円程度−秋月,Amazon, Switch Science,マルツパーツ等で購入可能−Cortex-M0+ 48MHz/ROM 256KB/RAM 32KB−デバッガ機能あり(EDBG(Atmel’s Embedded Debugger))

• デバッガ機能なしのArduino M0 もあるが推奨しないArduino UNOとの互換性が低いためプログラムの書き換えが必要

−一般的なArduinoボード(Arduino UNO)との違い• ARM(Cortex-M0)を搭載(UNO等はAVR)• IOが3.3V (UNO等は5V)

11

Page 12: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

ツールのインストール• Arduino IDE

−Arduino.org(http://www.arduino.org/downloads)からダウンロード• 動作確認済みバージョン : 1.7.10

− !!Arduino.ccではないため注意!!−インストーラによりインストール

• GCC/Make/GDB/OpenOCDがインストールされる• ターミナルエミュレータ

−Teraterm等をインストール

• 以下のツールはオプション−Cygwin

• コマンドラインからのビルド−Atmal Studio

• GUIによるデバッグ• 7.0で確認済み

12

Page 13: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

R2CAパッケージのダウンロード• TOPPERSのContributed Softwareから公開

− trac• http://dev.toppers.jp/trac_user/contrib/wiki/rtos_arduino• http://dev.toppers.jp/trac_user/contrib/browser/rtos_arduino/trunktracのZIPダウンロード機能は使用出来ないため注意

− svn• http://dev.toppers.jp/svn_user/contrib/rtos_arduino/trunk

• ダウンロード方法− SVNクライアントをインストールしてチェックアウト

• TortoiseSVN, CygwinのSVNクライアント• パッケージの更新頻度が高いのでこの方法を推奨

• ZIPファイルをダウンロード• http://dev.toppers.jp/trac_user/contrib/attachment/wiki/rtos_arduino/r

2ca_20160521.zip

13

Page 14: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

フォルダ構成• パッケージのフォルダ一覧

− ./arduino_lib : Arduinoライブラリ• hardware : コアライブラリ• libraries : Arduino準拠ライブラリ

− ./asp_1.9.2 : Arduino M0 依存部を含む ASP 1.9.2ソースコード− ./examples : サンプルプロジェクト− ./lib : R2CAライブラリ

• Arduinoライブラリについて−Arduino IDEに付属のライブラリがベース−バグフィックスやマルチタスク対応のための排他制御を入れている−ライセンスはGPLやMIT− librariesにはArduino IDE付属以外のライブラリも含まれている

• ESP8266_Arudino_AT, Milkcocoa_Arduino_SDK, ZumoShield, NcesCan

14

Page 15: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

セットアップ• Arduino IDE のインストールパスの設定

−以下のファイルの”C:¥Program Files (x86)¥Arduino”の箇所を書き換える• example/do_path.batSET ARDUINO_DIR=C:¥Program Files (x86)¥Arduino

• asp_1.9.1/target/arduino_m0_gcc/Makefile.targetARDUINO_BASE_DIR_WIN = C:¥Program Files (x86)¥Arduino

• ボードの接続−M0のPROGRAMMINGポートとPCをUSBケーブルで接続−ドライバがインストールされ,COMポートとEDBGが認識される−COMポートの番号を確認して,Teraterm等で115200bpsで接続

15

Page 16: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

サンプルの実行ボード上のLEDを点滅させるサンプルをビルド&実行する

• フォルダ : ¥examples¥Basic• ユーザープログラム等

−Makefile : ライブラリやファイルの指定− rca_app.h : ユーザープログラムヘッダーファイル− rca_app.cpp : ユーザープログラムプログラムファイル− rca_app.cfg : コンフィギュレーションファイル(静的APIを記述)− pitches.h : プログラムで使用するヘッダファイル

• バッチファイル− do_make.bat : ビルド− do_run.bat : ビルド&書き込み&実行− do_clean.bat : ファイルのクリーン− do_debug.bat : ビルド&書き込み&デバッグ

• AtmelStudio用ファイル− rca.atsln,rca.componentinfo.xml,rca.cproj

16

Page 17: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

サンプルの実行 : プログラムの選択• ¥examples¥Basic¥rca_app.cpp には,Arduino IDE に含まれているサン

プルを複数含む.マクロで実行するプログラムを選択可能

• #define BLINK : LED点滅 サンプル• #define toneMelody : ブザーサンプル• #define USBUART : USB-UARTサンプル• #define SERIALUSB : UARTサンプル(EDBGポート経由)• #define SERIAL5 : UARTサンプル(TX/RXポート経由)• #define ATTACHINTERRUPT : 割込みサンプル• #define ANALOGWRITE : PWMサンプル• #define ANALOGREAD : ADサンプル• #define RTC_ALARM : RTCアラームサンプル• #define SD_CARD : SDカードサンプル

17

Page 18: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

サンプルの実行 : プログラムの内容• setup() : 起動時に一度だけ実行される関数• loop() : 繰り返し実行される関数• Atrduinoのサンプルからの変更点はR2CA用ヘッダのincludeのみ

18

#include "rca.h“// the setup function runs once when you press reset or power the boardvoid setup() {

// initialize digital pin 13 as an output.pinMode(13, OUTPUT);Serial.begin(115200);

}// the loop function runs over and over again forevervoid loop() {

digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)Serial.println("HIGH"); delay(1000); // wait for a seconddigitalWrite(13, LOW); // turn the LED off by making the voltage LOWSerial.println("LOW"); delay(1000); // wait for a second

}

Page 19: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

サンプルの実行 : ビルド• do_make.bat をダブルクリックするとビルドが開始される• ASPカーネル&Arduinoライブラリ&ユーザープログラムがビルドされてダウンロードファイルが生成される

• check completeが出ればビルドは成功−rca.elfが出来ている

19

Page 20: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

サンプルの実行 : 実行• do_run.bat をダブルクリックすると書き込みが行われる

−OpenOCDによる書き込み• 書き込み後に実行される

20

書き込み コンソール

Page 21: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

サンプルの実行 : デバッグAtmel Studioによるデバッグ方法を説明

• Atmel Studioをインストール• .¥examples¥Basic¥rca.atsln をAtmel Studioで開く

21

Page 22: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

サンプルの実行 : デバッグ• メニューの“Build”から“Build Solution”を選択するとビルドが開始される• メニューの"Debug"から"Start Debugging and Break"を選択するとデバッグが開始• スタートボタンを押すと実行が開始されてブレークポイントを置いた箇所で止まる

−各レジスタの値もウィンドウから簡単に参照することが可能

22

Page 23: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

マルチタスク

23

Page 24: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

マルチタスク : サンプルの実行マルチタスクの使用方法をマルチタスクのサンプルを例に説明

• マルチタスクのサンプル : examples/MultiTask• ビルドして実行• 複数のプログラムが実行されていることが確認できる

24

Page 25: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

マルチタスク : サンプルの解説• タスク毎にtaskX_setup()/taskX_loop()を記述• setup()/loop()を実行するタスクをメインタスクと呼ぶ• ASPカーネルのAPIを発行可能

25

/** For MAINTASK*/ void setup() {

Serial.begin(115200);Serial.println("setup() : running");delay(1);

}int loop_cnt = 0;void loop() {

Serial.print("loop() : running");Serial.print(loop_cnt++);Serial.println(" .");delay(1000);

}

/** For TASK1*/void task1_setup() {

pinMode(13, OUTPUT);Serial.println("task1_setup() : running");

}void task1_loop() {

digitalWrite(13, HIGH);delay(1000); digitalWrite(13, LOW); delay(1000);

}

Page 26: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

マルチタスク : プログラミングモデル

26

• タスク数の設定(rca_app.hで定義)

• タスク毎の設定(マクロはrca_app.hで定義)−マクロで定義しない場合は初期値(5)となる

タスク名 関数 タスクID setup()優先度 loop()優先度メインタスク setup/loop RCA_MAINTA

SKRCA_MAINTASK_SETU

P_PRIRCA_MAINTASK_LOOP

_PRI

タスク1 task1_setup/task2_loop RCA_TASK1 RCA_TASK1_SETUP_P

RI RCA_TASK1_LOOP_PRI

タスク2 task2_setup/task2_loop RCA_TASK2 RCA_TASK2_SETUP_P

RI RCA_TASK2_LOOP_PRI

タスク3 task3_setup/task3_loop RCA_TASK3 RCA_TASK3_SETUP_P

RI RCA_TASK3_LOOP_PRI

タスク4 task4_setup/task4_loop RCA_TASK4 RCA_TASK4_SETUP_P

RI RCA_TASK4_LOOP_PRI

タスク5 task5_setup/task5_loop RCA_TASK5 RCA_TASK5_SETUP_P

RI RCA_TASK5_LOOP_PRI

#define RCA_NUM_TASK 4

Page 27: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

マルチタスク : スケジューリング• ASPカーネルによるスケジューリング

−優先度ベースのプリエンプティブスケジューリング−同一優先度はFCFSでスケジューリング−Arduino 向けのプログラムの移植時は,loop()内でdelay(xx)を入れて他

のタスクに実行権を与えること• ラウンドロビン

−マクロを定義することにより同一優先度内で有効となる• RCA_RR_SCHEDULEビット0(LSB)が優先度1に対応しており,1とした優先度をラウン

ドロビンスケジューリングとする• RCA_RR_SCHEDULE_CYCLEms周期で周期を設定,設定しない場合は1m周期

−例)全ての優先度で10ms周期でラウンドロビンスケジューリング

27

#define RCA_RR_SCHEDULE 0xff#define RCA_RR_SCHEDULE_CYCLE 10

Page 28: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

サンプルプロジェクト詳細

28

Page 29: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

サンプルプロジェクト• 基本サンプル

• CompositeExampleの構成

29

サンプルフォルダ名 概要

Basic 各種ArduinoのサンプルMultiTask マルチタスク機能のサンプルProfiling プロファイリング機能のサンプルRRScheduling ラウンドロビンスケジューリングのサンプルCompositeExample 複合機能のサンプル

コンソールタスク

LEDタスク

センサータスク

Webサーバタスク

Processingタスク

TFT/SDタスク

TOPPERS/ASPArduino ラ

イブ

ラリ

Arduino ライ

ブラ

Page 30: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

サンプルプロジェクト• 通信機能サンプル

• IoTサンプル

30

サンプルフォルダ名 概要

WifiEcho WifiモジュールによるWifi通信のサンプルNCESCan NCESCANシールドによるCAN通信のサンプルNCESIoT NCESIoTシールドによるサンプル

サンプルフォルダ名 概要

BlueMix_basic BlueMixへの接続サンプルMilkcocoa_basic Milkcocoaへの接続サンプルMilkcocoa_NCESIoT NCESIoTシールドによるMilkcocoaへの接続サンプルThingSpeak_basic ThingSpeakへの接続サンプル

Page 31: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

サンプルプロジェクト• 各種シールド向けのサンプル

31

サンプルフォルダ名 概要

NAxesMotion 9軸センサーシールドのサンプルZumo Zumoロボット(タンク型ロボット)のサンプルPIXY PIXY(色認識カメラ)のサンプルPIXY_Wifi PIXY + Wifiを組み合わせたサンプルPIXY_Zumo PIXY + Zumo を組み合わせたサンプルPIXY_Zumo_Wifi PIXY + Zumo + Wifo を組み合わせたサンプル

Page 32: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

WifiEchoWifiモジュールによりWifi通信を行うサンプル

• 出来ること−シングルタスクによるエコーサーバー−マルチタスクによるエコーサーバー

• 必要なハードウェアとセットアップ−ESP8266を使用したモジュール−Arduinoの0,1番ピン経由でUARTで接続

• 設定−¥examples¥examples_gdef.h にSSIDとPASSWORDを設定

• 他のサンプルとの共有設定

−シングルタスク版とする• ¥examples¥WifiEcho¥rca_app.h のマクロをコメントアウト

32

define STA_SSID ""#define STA_PASSWORD ""

//#define MULTI_ECHO_SERVER

Page 33: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

WifiEcho : ビルド&実行• アクセスポイントに接続して,IPアドレスをDHCPから取得• 取得したアドレスはコンソールに出力される• PCから上記のIPのポート80に接続して適当な文字を入力してエンターを押す

と入力した文字がそのまま送られて来る−Ctrl-Q入力してエンターで終了

33

Page 34: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

WifiEcho : プログラム• Wifiライブラリ

−ESP8266用のライブラリをR2CA用にカスタマイズ• setup()

−アクセスポイントに接続(ステーションモードにも変更可能)• loop()

−接続を待ち,接続されたらデータを受信して受信したデータを送信する

34

void loop() {delay(1); if(!Wifi.getMuxCStatus(&mux_id_ptn)) {

Serial.println("getMuxCStatus(&mux_id_ptn) : Error!");}...if((len = WiFi.recv(mux_id, buffer, sizeof(buffer))) == 0) {

return;}

...if(!WiFi.send(mux_id, buffer, len)) {

Serial.println("Echo Server : send(mux_id, cmd) : Error!");}

}

Page 35: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

WifiEcho : プログラム(マルチタスク)• 2タスクでエコーサーバーを実行

• Wifiモジュールの仕様上5個までコネクションを作成可能• ¥examples¥WifiEcho¥rca_app.h のマクロを有効に

• Task1でも同様にエコーサーバーを実行−フラグを使いtask1_setup()でsetup()の終了を待つ

35

bool setup_done = false;void setup(){

.........<skip>.............setup_done = true;

}.........<skip>.............void task1_setup() {

while(!setup_done) {delay(1);

}Serial.println("Echo Server Task1 : start");

}

#define MULTI_ECHO_SERVER

void loop() {delay(1); エコーサーバー処理

}

void task1_loop() {delay(1); エコーサーバー処理

}

Page 36: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

NCESIoTNCESIoTシールドによりGROVEモジュールを使用するサンプル

• NCESIoTシールド−R2CA用に開発したシールド−ESP8266によるWifi機能(UART接続)−MicroSDスロット(SPI接続)−Grove Systemと互換のコネクタ(3.3V↔5V変換)−Groveのコネクタを実装しない場合はブレッドボードを置ける

36

Page 37: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

NCESIoT : SD/Wifi/Grove System• SD

−Chip Selectをピン10とすることで使用することができる• Wifi

− ESP8266を使用しているのでWifiを使用するサンプルを動作させることが可能• Grove System

−各種センサやアクチュエータを簡単に着脱可能なモジュール− 100種類以上のモジュールがリリースされている−各GroveモジュールにはWikiページとArduinoライブラリが用意されている

37

Page 38: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

NCESIoT : Grove Systemの使用例• Ultrasonic Ranger を例に使用方法の流れを説明• ハードウェアセットアップ

−M0にNCES IoT Base Shield を取り付け−Ultrasonic Rangerを接続

• D2からD8のいずれかでよい,今回はD3に接続

38

Page 39: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

NCESIoT : Grove Systemの使用例• ソフトウェアセットアップ

−Ultrasonic RangerのWikiをチェック−ライブラリがGitHubからダウンロード可能−GitHubにアクセスしてライブラリをダウンロード

• GitHubのページの右側にあるDownload ZIPのリンクをクリックしてzipファイルをダウンロード

39

Page 40: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

NCESIoT : Grove Systemの使用例• 展開するとフォルダ名に“-master”が入っているため取って,フォルダ

Grove_Ultrasonic_Rangerをrca_app.cpp等があるフォルダにコピー• サンプルの内容をエディタ等で開いてrca_app.cppにコピー

−フォルダ examples 以下にある• rca_app.hのインクルードを追加

−D3に接続したので,Ultrasonicの定義時に’3’を指定

40

#include "rca.h"Ultrasonic ultrasonic(3);void setup() {

Serial.begin(115200);}void loop() {

long RangeInCentimeters;RangeInCentimeters = ultrasonic.MeasureInCentimeters(); Serial.print(RangeInCentimeters);//0~400cmSerial.println(" cm");delay(250);

}

Page 41: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

NCESIoT : Grove Systemの使用例• Makefileの編集

−APPL_DIR : ビルド対象のファイルがあるフォルダを追加−APPL_CXXOBJS : ビルド対象のCPPファイルを追加−APPL_COBJS : ビルド対象のCファイルを追加

• ビルド&実行−do_make.bat/do_run.batでビルドと実行が行える

41

APPL_DIR += ./Grove_Ultrasonic_RangerAPPL_CXXOBJS += Ultrasonic.oAPPL_COBJS +=

Page 42: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

IoTサーバーとの通信• Wifiモジュールを用いたIoTサーバーとの通信のライブラリとサンプルを用意

−Bluemix• IBMのサービス,様々な機能があるが使いこなすのは困難

−Milkcocoa• MQTTによるPUB/SUB通信が可能

− ThingSpeak• HTTPによるデータのUPと可視化と解析が可能

• Milkcocoaを例に説明−IoT向けのリアルタイムなデータのやりとりやデータのストア及び可視化を

サポートするクラウドサービス−PublishするとSubscribeしている機器にデータがブロードキャストされる−Pub/Subの対象は,app_idとdatasoreで指定−データはkeyとvalueで構成されている

42

Page 43: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

Milkcocoa_basic• サーバー側の設定

−アカウントの作成,作成後app_idが表示される

• プログラム側の設定− ./example/examples_gdef.h にapp_idとデータストアを設定

• ビルドして実行−データ受信のみが有効になる−Milkcocoa Testerを使い,プッシュしたデータを

受信することを確認

43

#define MILKCOCOA_APP_ID ""#define MILKCOCOA_DATASTORE ""

Page 44: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

Milkcocoa_basic• setup()

−Wifiを有効にしてアクセスポイントに接続−データ受信時に実行するフック関数を指定

• loop()−サーバーからのデータをチェックしデータが来ていればフック関数を呼び出す

• onpush()

44

milkcocoa.on(MILKCOCOA_DATASTORE, "push", onpush)

milkcocoa.loop(1)

void onpush(DataElement *pelem) {char *data;if(!pelem->getString("LED", &data)) {

Serial.print("onpush : key LED is not found.");return;

};Serial.print("onpush : {LED, ");Serial.write(data);Serial.println("}.");

}

Page 45: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

Milkcocoa_basic• pushのサンプルを実行する

−マクロの定義を変更する

• loop()−DateElemntにKEYとVALUEをセットしてpush()する

45

#define MILKCOCOA_PUSH//#define MILKCOCOA_ON

void loop(){DataElement elem = DataElement(); if(req_led_on) {

elem.setValue("LED", "ON");}else {

elem.setValue("LED", "OFF");}do {

push_ret = milkcocoa.push(MILKCOCOA_DATASTORE, &elem);}while(push_ret != 0);

}

Page 46: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

Zumo• タンク型のロボット

−ライントレース,相撲,迷路探索等が可能

• Arduino UNO のシールドとして開発されておりライブラリが用意されている− LED,ブザー,左右モータ,フォトリフレクタアレイ−三軸加速度センサ,三軸磁場センサ

• Arduino M0 用にライブラリを整備し直した−一部ライブラリはUNO(AVR)を前提としていたため

• 簡単にロボット制御を体験できる−プログラム未経験の学部一年生でも理解して作成

できている

46

Page 47: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

Zumo

• サンプルの一覧−Basicと同様にマクロでどれかを有効にする

47

サンプル名 説明

BUTTON_BASIC ボタンのサンプル

MOTOR_BASIC モーターのサンプル

BUZZER_BASIC ブザーのサンプル

GYRO_BASIC ジャイロによって起動時の方向からの差分を出力するサンプルREFLECTANCE_BASIC フォトリフレクタアレイの値を出力するサンプル

COMPASS_BASIC 電子コンパスによって向いている方角の角度を表示.キャリブレーション値は固定値

RELECTORNCE_STOP 黒い線を見つけると止まるサンプルROTATIONRESIST ジャイロを使って常に同じ方向を向くサンプルFORCEUPHILL 加速度センサを使って坂の上を見るサンプルLINEFOLLOWER ライントレースのサンプルBORDERDETECT 相撲リングから出ないように走るサンプルSUMOCOLLISIONDETECT 相撲ロボットのサンプルMAZESOLVER 迷路を解くサンプル.コースがないため動作確認はしていない

Page 48: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

PIXY + Zumo• PIXY

−色認識が可能なカメラモジュール−Arduinoに対して認識した物体の番号(事前に登録する)とサイズと場所を

SPI経由で送信する−SPI経由で2軸のサーボを制御可能

• PIXY + Zumo−色付きのボールを認識して追いかけ

るロボット−PIXYの認識結果からPIXYのサーボ

とZumoのモータを制御−Wifiモジュールを組み合わせること

により,IoTサービスとの連携も可能

48

Page 49: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

NCESCanNECSCANシールドによりCAN通信を行うサンプル

• 出来ること−CANによるデータの送受信

• 必要なハードウェアとセットアップ−Microchip社 MCP2515 を使用したArduino用シールド

• NCESCANシールド,SparkFun CAN-BUSシールド

• NCESCANシールド−MCP2515とxbee互換コネクタを持つボード−xbee互換のESP8266モジュールも開発−松浦商事から購入可能

• http://homepage3.nifty.com/fpga/files/board/nces_shield/−ChipSelectはピン9, 割込みはピン3を使用

49

Page 50: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

NCESCan• 受信用メールボックス : 2個

−それぞれ2個と4個フィルターを設定可能−受信割込みを設定可能

• 送信用メールボックス : 3個

50

#include <SPI.h>#include "mcp_can.h"

const int SPI_CS_PIN = 9;#define CAN_INT_PIN 3MCP_CAN CAN(SPI_CS_PIN); // Set CS pin

void setup(){

CAN.begin(CAN_500KBPS)//受信用メールボックス設定

CAN.init_Mask(MCP_RXM0, 0x0f);CAN.init_Filter(MCP_RXF0, 0x01);CAN.init_Filter(MCP_RXF1, 0x02);CAN.startReceive(MCP_RXB0);

}

void loop(){

//受信チェック

if(CAN.checkReceive(0) != CAN_NOMSG) {CAN.readMsg(0, &id, &len, buf);

}

//送信

CAN.sendMsg(0, ID, LEN, DATA);}

Page 51: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

Arduinoライブラリの移植• 紹介したサンプルで使用しているライブラリは既存のArduinoライブラリを

ベースにR2CA用またはM0用に変更している

• 変更点の例−UNO(AVR)用の記述の変更

• AVRのタイマ等を直接使用している場合がある−Arduinoの機種毎のifdefへの追加

• M0は新しいArduinoなため対応していない場合がある−共有リソースの使用をセマフォ等で排他制御を追加

• SPI・I2Cはすでにサポートしている−割込み禁止許可をASPのAPIに変更

• コアライブラリは置き換えている

51

Page 52: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

TOPPERS活用アイデア・アプリケーション開発コンテスト・貸し出し機材 : NCES IoT Package

• 機材−Arduino M0−NCS IoT ボード−Grove Digital Light Sensor−Grove OLED Display 0.96−Grove - Touch Sensor−Grove - Chainable RGB LED−Grove – LED−USBケーブル

52

Page 53: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

NCES IoT Package : サンプルの実行• R2CAにNCES IoT Package用のサンプルを用意

− example¥NCESIoT_RTOS• Qiitaに記事をup済み

−Arduino M0 Pro でマルチタスクプログラミング : NCES IoT Base Shield : GROVE・RTOS機能

機能• 機能1

− LEDを1秒周期で点滅する• 機能2

−周期的にDigital Light センサーの値を読み込んで,値をOLED Display に表示する.

• 機能3− Touch Sensorを押している間は,Light センサーの値の表示の更新を停止して,

OLED Displayの表示を反転させる.• 機能4

−Chainable LEDを周期的に色を変更する.

53

Page 54: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

NCES IoT Package : ハードウェアセットアップ• Grove Digital Light

−I2Cポートに接続• Grove OLED Display

−I2Cポートに接続• Touch Sensor

−D3に接続• LED

−D4に接続• Chainable RGB LED

−D8に接続

54

Page 55: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

NCES IoT Package : プログラム• 割込みを使用するかマクロで変更可能

−//#define USE_INTERRUPT−本資料は割込みを使わない例で説明

• タスクの生成−各機能を1個のタスクで実現するため合計4個のタスクを使用する

• ヘッダのインクルード−使用するセンサーのライブラリをコピーして,ヘッダファイルをインク

ルードする

55

./example/NCESIoT_RTOS/rca_app.h#define RCA_NUM_TASK 3

./example/NCESIoT_RTOS/rca_app.cpp#include "rca.h"#include <Wire.h>#include <Digital_Light_TSL2561.h>#include <SeeedOLED.h>#include <ChainableLED.h>

Page 56: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

NCES IoT Package : 機能1の実現• LEDを1秒周期で点滅する

• LEDを接続しているポートを指定して出力値を変更

56

#define LED_PIN 4void setup(){

Serial.begin(115200);pinMode(LED_PIN, OUTPUT);

}void loop() {

digitalWrite(LED_PIN, HIGH); // turn the LED on (HIGH is the voltage level)delay(1000); // wait for a seconddigitalWrite(LED_PIN, LOW); // turn the LED off by making the voltage LOWdelay(1000); // wait for a second

}

Page 57: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

NCES IoT Package : 機能2の実現• 周期的にDigital Light センサーの値を読み込んで値をOLED Display に表示する.• 機能3の実現のため

− is_update_oledが1の時のみ表示を更新 : 共有メモリによる通信−OLEDの更新は排他制御を行う : セマフォによる排他制御

57

int is_update_oled;

void task1_setup() {

Wire.begin();TSL2561.init();

SeeedOled.init();SeeedOled.deactivateScroll();

is_update_oled = 1;}

void task1_loop() {

Serial.print("The Light value is: ");Serial.println(TSL2561.readVisibleLux());

if (is_update_oled == 1) {wai_sem(OLED_SEM);SeeedOled.clearDisplay();SeeedOled.putNumber(TSL2561.readVisibleLux());sig_sem(OLED_SEM);

}

delay(1000);}

Page 58: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

NCES IoT Package : 機能3の実現• Touch Sensorを押している間はLight センサーの値の表示の更新を停止して,OLED

Displayの表示を反転させる.

• OLEDを操作する際にはセマフォを取得• delay()を入れる

58

void task2_setup(){

pinMode(TOUCH_PIN, INPUT_PULLUP);}

void task2_loop() {delay(1); int TouchSensorValue = digitalRead(TOUCH_PIN);if(TouchSensorValue==1) {

is_update_oled = 0;wai_sem(OLED_SEM);SeeedOled.setInverseDisplay();sig_sem(OLED_SEM);

}else{ is_update_oled = 1;wai_sem(OLED_SEM);SeeedOled.setNormalDisplay();sig_sem(OLED_SEM);

}}

Page 59: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

NCES IoT Package : 機能4の実現• Chainable LEDを周期的に色を変更する

• サンプル通りの動作

59

#define NUM_LEDS 1

ChainableLED leds(8, 9, NUM_LEDS);

void task3_setup(){

leds.init();}

float hue = 0.0;boolean up = true;int count = 0;void task3_loop(){

for (byte i=0; i<NUM_LEDS; i++)leds.setColorHSB(i, hue, 1.0, 0.5);

delay(50);

if (up)hue+= 0.025;

elsehue-= 0.025;

if (hue>=1.0 && up)up = false;

else if (hue<=0.0 && !up)up = true;

}

Page 60: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

まとめ

60

Page 61: TOPPERS/R2CA · カーネルとArduinoライブラリを組み合わせた環境 • マルチタスク環境でArduinoライブラリを使用可能 • GUIベースのデバッガを使用可能

Graduate School of Information Science, Nagoya Univ.Embedded and Real-Time Systems Lab.ERTL

まとめ• TOPPERS/R2CAについて紹介

−Arduino IDEをインストールするだけでビルド可能−バッチファイルによるビルドが可能−安価で入手性の良いArduinoボードで実行可−マクロの定義によるタスクの生成−多くのArduinoライブラリが使用可能

• 今後の開発−C++ API対応−CFGレスパッケージの統合

コンテストへの参加をお待ちしています

61