MiMicのスケッチシステム

MiMicには、Processingライクなスケッチシステムがあります。スケッチシステムを使うことで、Arudinoを同じような感覚で、FreeRTOSに対応したアプリケーションを作ることが出来ます。

最も単純なスケッチ

最も簡単なスケッチは、次のような構造をしています。
このコードは、Mimicのprojects/scetchにあるプロジェクトと同じです。

//#define SKETCH_STACK_SIZE 80 //スケッチのスタックサイズを変えるときは、ここで設定。
#include "boot/sketch.h"

void setup(void)
{
	//Setup and initialization before run scheduler
	//通常は、各種サービスの起動設定をします。
}
void loop(void)
{
	//Implementation
	//ここにメインタスクを書きます。
	for(;;){}
}

コードの中にはFreeRTOSを初期化する類のコードが見当たりませんが、それらはboot/sketch.hにまとめられています。(本来のmain関数も、ここにあります。)
boot/sketch.hは、ハードウェアの設定とFreeRTOSの初期化処理などを隠蔽して、スケッチのシーケンスを実行するためのヘッダファイルです。

関数の役割

2つの関数の役割は、Arudinoなどとほぼ同じです。setup関数で初期設定を実行して、loop関数に処理を書きます。2つの関数の役割を、以下の通りです。

setup関数

この関数は、FreeRTOSの開始前に呼び出されます。
FreeRTOSを開始する前に実行したいハードウェアの初期化処理や、OS本体の設定を書きます。

loop関数

メイン関数です。この関数は、FreeRTOSの1番目のタスクが呼び出します。
ユーザのプログラムは、ここに書きます。

内部構造

スケッチの動作を図に直すと、以下のようになります。

青い部分は、FreeRTOSを開始する前のタスクにより、実行されます。黄色い部分はFreeRTOSの管理下にあるタスクが実行します。
setupHWは、基本的なハードウェア初期化を行います。これは、FreeRTOSに付属の関数をそのままです。xCreateTaskと、 vTaskSchedulerは、FreeRTOSの関数です。

エントリポイントはmain関数で、ここから、内部的なハードウェア初期化→setup→FreeRTOSの起動の順番に、実行していきます。loop関数は、新しく生成した1番目のタスクが実行します。

スケッチシステムの使いどころ

MiMicは、スケッチシステムを使わずに、通常のFreeRTOSプログラムからも使うことが出来ます。スケッチシステムの利点は、ハードウェア処理等の面倒な部分を隠蔽できるくらいしかありません。好みにより、使い分けてください。

なお、MiMicシステムのFreeRTOSは、ライブラリ化してあります。通常のFreeRTOSとは少し異なった構造になっていますので、注意をしてください。

Comments are closed, but trackbacks and pingbacks are open.