RAファミリのRTOS

RAファミリは、FreeRTOSとAzure RTOS、両方に対応しています。このうち、FSP v3.6.0でサンプルコードを提供しているのがFreeRTOSです(プロジェクト名:freertos_評価ボード名_ep)。

本稿は、このFreeRTOSサンプルコードを簡単に解説します。

キューとセマフォ利用サンプルコード

freertos_fpb_ra6ep1_epのユーザ追加部分とFSP生成ソースコード
freertos_fpb_ra6ep1_epのユーザ追加部分とFSP生成ソースコード

最新版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タスク処理並列多重
ベアメタル処理とFreeRTOSタスク処理並列多重

基本的には、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オブジェクト追加。

FreeRTOSとAzure RTOSの追加可能Objects
FreeRTOSとAzure RTOSの追加可能Objects

・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ベアメタルテンプレートと言えます😄。

RAベアメタルテンプレートでFSP習得
RAベアメタルテンプレートでFSP習得

次の段階、つまりRTOS開発へ対応したRAテンプレートも思案中です。ただ、RAベアメタルテンプレートご購入者様からの様々なフィードバックやFSPのRTOSサンプルコード数が増えた後、暫くしてから実現するつもりです。

先ずは、RAベアメタルテンプレートでRAファミリ開発の鍵、FSPを習得してください。ご購入、お待ちしております。