レッスン12:FreeRTOS

Youtbe画面は、HDモード・フル画面で視聴お願いします。HD以外は、プログラム文字がみにくいです。
始めに

FreeRTOS はオープンソースプロジェクトです。GitHub サイトで、ソースコードのダウンロード、変更や機能強化の投稿、問題の報告を行うことができます。

ドキュメントのマークダウンソースを確認する場合は、https://github.com/awsdocs/aws-freertos-docs を参照してください。

下記に、基本的な流れが説明されてます。英文です。

FreeRTOSでマルチタスクを実行する方法(ESP32 + Arduinoシリーズ)

RTOS解説は、下記が参考になります。

リアルタイムオペレーティングシステム

 

 

ESP32のFreeRTOS入門”シリーズの記事を参照してます。

 

Arduino IDEでは、ベースとしてESP-IDF(Espressif IoT Development Framework)がありま

す。ESP-IDFはFreeRTOSが組み込まれています。

 

Arduinoのスケッチは、通常下記処理になってます。

void setup() {
}
void loop() {
}

所謂、setup()の初期設定処理部 と loop()の無限ループです。

初歩の説明です。マルチタスク処理とは、複数のタスク(アプリケーション処理)を時分割に

処理することを言います。

その為にはシングルタスク処理を、

・ タスクの優先順位(通常プライオリティと呼ばれてます)が必要です。わかりやすく言え

ば、処理を急ぐものとゆっくりで良いものに分類します。

・ お互いの同期(セマフォ)が必要です。フラッグ(旗信号)で相互に連絡します。

・ リエントラント(デイスパッチャ処理部で実施)にタスクが操作されます。つまり、各タ

スクはヂスパッチャ処理に突入しぬけていきます。

・タスクはタスクテーブルに登録されており、優先順で処理されます。

・タスクは通常イベントドリブンでwake upしますが、それ以外にタイマーで時分割処理する

方策もあります。

を考慮してマルチタスク処理に改良しなければならないです。

以下で、原理を解説されてます。

RTOS

実 践
あまり難しく考えると、プログラミングが進まないです。簡単に言えば、今回は2つのタスク
がデスパッチャーで処理されます。同じprint出力ですから時間間隔をあける為に、ディレイ
処理してします。デイレィ処理が無いとタスク間の遷移処理が出来ないです。
このソフトは、WEB Siteに掲載されていたものをESPRAkitに展開しただけです。
シリアルポートに、2つのタスクが出力しますので、どちらかをタイマーデレイで遅らせない
とマルチタスク操作出来ないです。つまり、IDEのツール -> シリアルモニタ に正常に文字
表示されないです
————————————————————————

// 2022.05.31

void task1(void *pvParameters) {

Trueの間は、Task1 と Task2が実行され続けます。

while (1) {
for ( int i = 0 ; i < 50 ; i++ ) {
Serial.print(“1”);
}
Serial.print(“\n”);

10msecのウエイトいれます。

delay(10);
}
}
void task2(void *pvParameters) {
while (1) {
for ( int i = 0 ; i < 50 ; i++ ) {
Serial.print(“2”);
}
Serial.print(“\n”);

10msecのウエイトいれます。

delay(10);
}

}

void setup() {

初期化の設定です。Task1,Task2を生成します。

Serial.begin(115200);
delay(50); // Serial Init Wait
xTaskCreateUniversal(
task1,
“task1”,
8192,
NULL,
1,
NULL,
APP_CPU_NUM

task1をCore1のAPP_CPU

);

xTaskCreateUniversal(
task2,
“task2”,
8192,
NULL,
0,

 

task2をCore0のPRO_CPU

 

NULL,
APP_CPU_NUM

task2をCore1のAPP_CPU

);
}

void loop() {

無限処理ルーチンです。

delay(10);
}

————————————————————————
〇 ソフト実行時の動画です

 

 

 

 

〇 デモソフト(ドキュメント\Arduino\RTOS\RTOS.ino)

回路図 と デモソフトは、サポート契約のお客様のみ提供しています。