RAファミリは、FreeRTOSとAzure RTOS、両方に対応しています。このうち、FSP v3.6.0でサンプルコードを提供しているのがFreeRTOSです(プロジェクト名:freertos_評価ボード名_ep)。
本稿は、このFreeRTOSサンプルコードを簡単に解説します。
キューとセマフォ利用サンプルコード
最新版FSP v3.6.0のRA6E1評価ボードサンプルFPB-RA6E1 Example Project BundleのRTOSサンプルコードが、上図freertos_fpb_ra6e1_epです(freertos_fpb_ra4e1_epも同じ)。
ユーザ追加RTOSタスク:キュー送信タスク、受信タスクと、定期割込みでセマフォ生成し、生成セマフォ取得でRTT Viewerへメッセージ出力するタスクの、合計3タスクを追加(タスクプライオリティ同一)。
ユーザ追加RTOSオブジェクト:キューとセマフォの2オブジェクトを追加。
FSP生成ソースコード:追加タスク毎にFSPが entry.c 生成(中身は、下図右側)。
基本的には、FreeRTOS公式Hardware independent FreeRTOS exampleや、弊社NXP版FreeRTOSアプリケーションテンプレートと同様の処理。
詳細は、FreeRTOSアプリケーションのQueueデータ送受信やFreeRTOSサンプルプロジェクトfreertos_generic詳細などの関連投稿をご覧ください。
RAファミリRTOS現状まとめ
FSPを使ったRAファミリFreeRTOS/Azure RTOSの現状をまとめると、下記です。
・FreeRTOS習得スタートは、キューとバイナリセマフォオブジェクト理解(弊社FreeRTOSアプリケーションテンプレートも同様)。
・ベアメタル開発では使わないObjects窓へ、バイナリセマフォ/ミューティックス/キューなどFreeRTOSの8オブジェクト追加。Azure RTOSは4オブジェクト追加。
・Azure RTOS関連資料は、Microsoft公式のコチラ。
・FSP v3.6.0提供FreeRTOSサンプルコード数は、1個。Azure RTOSサンプルコードは未提供。
あとがき
RAベアメタルテンプレートを先週発売した直後に今回RTOSの投稿をしたのは、ベアメタル/RTOSに関係なく「RAファミリ開発の鍵はFSP」を示したかったからです。
FSPは、RAファミリのMCU資源(MCUコア/内蔵周辺回路など)を対象に、HAL APIを生成するツールです。開発者は、FSPが生成したHAL APIを使ってRAファミリのアプリケーションを開発します。
FSP対象は、ベアメタルの場合は、MCUコアやIOポートなど実際の回路、RTOSの場合は、タスクやスレッド、RTOSが提供するセマフォやキューなどの様々なオブジェクト(≒仮想回路)が、ベアメタル対象に加わるだけと考えると判り易いと思います。
FSPは、ベアメタル開発用をベースにRTOS開発へも対応し、プライオリティなどRTOS独特の設定も、ベアメタルと同様のGUIで設定します。
つまり、ベアメタルとRTOS両方対応FSPを上手く使いこなせるかが、RAファミリソフトウェア開発の鍵です。効率的にFSPを習得する最初のツールが、RAベアメタルテンプレートと言えます😄。
次の段階、つまりRTOS開発へ対応したRAテンプレートも思案中です。ただ、RAベアメタルテンプレートご購入者様からの様々なフィードバックやFSPのRTOSサンプルコード数が増えた後、暫くしてから実現するつもりです。
先ずは、RAベアメタルテンプレートでRAファミリ開発の鍵、FSPを習得してください。ご購入、お待ちしております。