wiki:rtos_arduino

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

TOPPERS/R2CAとは?

  • 何ができるの?
    • ArduinoボードとArduinoライブラリを用いてスケッチに近い形態のマルチタスクプログラミングが可能です.
    • ITRON APIを使用出来ます(C++化は今後の対応予定?)
  • 誰が対象?
    • Arduino IDE によるプログラミングからステップアップしたい方
  • Arduino IDEより良い点はあるの?
    • デバッガが使えます.
    • 一度コンパイルしてしまえば,2度目は必要なファイルのみコンパイルするのでコンパイル時間が短縮できます.
    • バッチファイルによるビルドと実行が出来るので,Arduino IDEより気軽に使えます.

  • Arduino IDEより悪い点はあるの?
    • Arduino IDEは使用出来ません.
    • ある程度C/C++/Makefileの知識は必要です.
    • OSをコンパイルする必要があるので1回目のコンパイルは時間がかかります.
  • インストールは面倒?
    • Arduino IDEがインストールされていれば,ビルド/実行/GDBによるデバッグが可能です.
    • GUIデバッグをしたい場合は Atmel Studio(無償) をインストールする必要があります.
  • サポートしているArduinoボードは?
    • Arduino M0 Pro(Cortex-M0+) のみです.

コード及びライセンス

ファイル毎にライセンスが異なるので注意してください.

ディレクトリ名 ライセンス
lib GNU GPL
asp_1.9.2 TOPPERS ライセンス
exsample GNU GPL
arduino_lib それぞれのファイルに指定されたライセンス(GNU GPL or BSD or MIT or ....)

関連資料

クイックスタート(GDBデバッグ版)

機材の用意

  • Windows PC (Makefileを整備すればMacでも動作するはず)
    • 64bitだと設定を変更しなくてもよいので楽
  • Arduino M0 Pro

ツールのインストール

  • Arduino IDEのインストール.
    • .org版(1.7.x)をインストールすること.
    • インストーラに従ってインストールを実施する.

  • Arduino IDE のインストールパスの設定
    • C:\Program Files (x86)\Arduino にインストールした場合は必要ない
    • インストールしたフォルダを以下のファイルに設定する
         ・example/do_path.bat
           SET ARDUINO_DIR=C:\Program Files (x86)\Arduino
         ・asp_1.9.1/target/arduino_m0_gcc/
           ARDUINO_BASE_DIR_WIN = C:\Program Files (x86)\Arduino
      

パッケージのダウンロードと展開

ビルド

  • フォルダ ./example/basic を開く
  • ./do_make.bat を実行

実行

  • ボードの'PROGRAMポート'とPCのUSBを接続する.
  • Arduino IDEを起動する(teraterm等でも可)
    • ツール -> ポート -> COMx(Arduino M0 Pro (Programmmming Port)) を選択.
    • ツール -> シリアルモニタ を選択してシリアルモニタを実行する.
    • シリアルモニタの右下の速度を115200bpsに変更
  • フォルダ ./example/basic を開く
    • ./do_run.bat を実行

デバッグ

  • フォルダ ./example/basic を開く
  • ./do_debug.bat を実行

クリーン

  • フォルダ ./example/basic を開く
  • ./do_clean.bat を実行

クイックスタート(Atmel Studio使用版)

ツールのインストール

  • Arduino IDEのインストール.
    • 上記と同じ.
  • Atmel Studio のインストール
    • インストーラに従ってインストールを実施する.

プロジェクトを開く

  • \example\basic\asp.atsln をタブルクリックするとAtmel Studioが起動する.

ビルド

  • メニュー -> Build -> Build Solution を実行

実行

  • メニュー -> Debug -> Start Debugging and Brake を実行

メモリに書き込まれるため,実行を開始する. ファイルメニューからrca_app.cpp を選択してブレークポイントを置くことが 可能.

プログラミングモデル

マルチタスク

マルチタスクによるプログラミングが可能.各タスク間はASPのAPIを呼び出す ことが可能である.

プログラム例

#include "rca.h"

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

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

void task1_setup() {
  Serial.begin(9600);
}

void task1_loop() {
  int sv = analogRead(A0);
  Serial.println(sv);
  delay(1);
}

タスク名

Arduinoライブラリを実行するためのタスクとして,メインタスクとタスク1, タスク2,...(RCAタスク)を用意している.メインタスクは必ず生成され,RCA タスクは,幾つ生成するかはマクロで定義可能である.現状最大数は5個である.

それぞれのタスク名は次の通りである.

タスク タスク名
メインタスク RCA_MAINTASK
タスク1 RCA_TASK1
タスク2 RCA_TASK2
タスク3 RCA_TASK3
タスク4 RCA_TASK4
タスク5 RCA_TASK5

各タスクは,次の関数を実行する.これらの関数の本体を記述する.

タスク 関数
メインタスク setup/loop
タスク1 loop1
タスク2 loop2
タスク3 loop3
タスク4 loop4
タスク5 loop5

setupがメインタスクで実行された後,タスクxが起動されloopxが実行される.

注意点

  • Arduino IDEに含まれている M0 向けライブラリは開発されて日が浅いため不具合やコンパイルが通らない場合があるため注意が必要.

制限事項

  • I2Cライブラリは複数タスクで呼び出す場合はタスク側で排他が必要.
Last modified 6 months ago Last modified on 23/10/16 20:30:46

Attachments (5)