RA用FSP v5.4.0リリース

2024年6月27日、ルネサスRA用FSP v5.4.0同梱e2 studio 2024-04がリリースされました。セミナ参加のため、久しぶりに最新FSPへ更新したところ、弊社RAベアメタルテンプレートのFSPバージョン出力にバグを発見しましたので修正対策を示します。

Summary:FSPバージョン出力コード修正箇所

修正前:コンパイルエラ発生(RttViewer.cのL41)

APP_PRINT(“\r\n–> Current FSP version is v%d.%d.%d.”, version.major, version.minor, version.patch);

修正後:version_id_bをmajor/minor/patch前に追加

APP_PRINT(“\r\n–> Current FSP version is v%d.%d.%d.”, version.version_id_b.major, version.version_id_b.minor, version.version_id_b.patch);

修正後のJ-Link RTT ViewerによるFSPバージョン出力結果です。

J-Link RTT Viewer V7.96qのFSPバージョン出力
J-Link RTT Viewer V7.96qのFSPバージョン出力

最新RA用開発ソフトウェアツール

無償版RAファミリソフトウェア開発ツールは以下3つで、現時点の最新版が下記です。

  1. e2 studio:統合開発環境、Version 2024-04
  2. FSP:Flexible Software Package、RA用API生成ツール、Version 5.4.0
  3. SEGGER J-Link RTT Viewer:printf出力ツール、Version 7.96q

開発には、FPB-RA6E1/RA4E1などのハードウェアツールも必要です。本稿は、上記3ソフトウェアツール更新に焦点を当てます。

2022年4月30日のRAベアメタルテンプレート開発・発売から2年経過し、3ソフトウェアツールがそれぞれ更新されました。ツール更新に伴い、本稿のようなトラブルが発生する場合があります。その対策を示します。

コンパイルエラ対策

最新ツールへ更新後、以前のエラーフリーソースをコンパイルすると、以下のエラが発生します。

コンパイルエラ発生個所
コンパイルエラ発生個所

メンバ名major/minor/patchが不明なのが原因です。

対策に、version定義のfsp_pack_version_tを調べます。fsp_pack_version_tへカーソルを移動し、F3をクリックすると、fsp_pack_version_t定義箇所fsp_version.hへ自動的に移動します。

FSP Pack version構造体
FSP Pack version構造体

※F3クリックは定義検索に便利。これはEclipse IDE共通機能。

fsp_pack_version_tは、過去有った構造体が無くなっています。そこで、ソースmajor/minor/patchの前に、version_id_bを加えるとコンパイルエラは無くなります(構造体と共用体投稿はコチラ)。

e2 studioとRA用FSP更新

統合開発環境e2 studioとRA用FSPは、別々の更新タイミングです。各更新タイミングで、それぞれを最新版へ更新するのも1方法です。

しかし、これら2つを同梱し、同時に最新版へ更新できるWindowsパッケージが、FSP v5.4.0 with e2 studio 2024-04です(Mac/LinuxパッケージはリリースGitHubにあり)。同梱パッケージは、更新2度手間が省けるだけでなく、個別更新トラブルも避けられます。

同梱パッケージは、個別インストール版よりも数か月遅れてリリースされますが、お勧めの更新方法です(同梱投稿はコチラのまとめ参照)。

SEGGER J-Link RTT Viewer更新

SEGGER J-Linkダウンロードサイト
SEGGER J-Linkダウンロードサイト

RTT Viewerは、既存版が自動的に最新版へ更新されます。しかし、SEGGER社リンクから直接最新版をダウンロードするのも1方法です。古いVersionをお使いの方は、この方法も良いでしょう(RTT Viewerのprintfデバッグ関連投稿はコチラ)。

Afterword:環境依存トラブル対策

今回のような更新トラブルは、組込み開発では良くあります。開発品を顧客へ納入後、数年経ってから機能追加/修正の案件がある場合などです。納入開発環境と、最新版環境の差による「環境依存トラブル」です。

本稿は、簡単なメンバ名追加で対策できました。しかし、例えばAPI内部差によるトラブル等は、容易ではありません。安全側対策に、納入時の旧環境をそのまま使い続ける方法があります。同一MCUで新機能は使わない場合などは、有効な方法です。

一方、新機能の追加/修正やMCU変更案件は、環境依存トラブルも加味したスケジュール対策が望ましいと思います。どの程度加味するかが難しい問題ですが…。

お詫び

弊社RAベアメタルテンプレートV1ご購入者様は、本稿修正をお願い致します。また、この場を借りて、お詫び申し上げます。ご迷惑をおかけし、申し訳ございません。


RA用FSP v5.0.0 e2 studio 2023-10リリース

2023年10月28日、RA用FSP v5.0.0同梱e2 studio 2023-10がGitHubからリリースされました。FSP、e2 studioどちらも最新版です。また、10月16日に18年ぶりにバージョン5となったMCU開発必須ツール:Tera Term 5.0も、GitHubにあります。

本稿は、これらソフトウェアダウンロード先(=repository)のGitHubについて説明します。

また、GitHub公開の最新FSP v5.0.0、e2 studio 2023-10、Tera Term 5.0を使った評価ボード動作例も示します。

※今週金曜は、休日(文化の日)のため、木曜に先行投稿しています。

GitHub主要3機能

GitのWebサービス版がGitHubです。※Hubは、集約点という意味。

Gitは、Linux上で「複数ソフトウェア開発者」向けの支援ツールです。複数開発者が、1つのプロジェクトを、別々の場所・作業時間で共同開発する時に便利な機能を提供します。

Gitの主要機能が、フォーク、プルリクエスト、マージの3つです。

フォーク(=派生)は、レポジトリソースコードを派生利用し、別ソフトウェアを開発する際に、オリジナルコード所有者へ通知する機能です。

プルリクエストは、レポジトリソースコードの変更を、プロジェクト開発者へ通知、マージは、プルリクエストを受けた開発者が、変更を承認するか否かの通知機能です。承認時は、変更コードがプロジェクトへマージ(=統合)されます。

Linuxツールですので、CUI(キャラクタ ユーザ インタフェース)です。複数開発者が、地球上の離れた場所・作業時間であっても、ソフトウェア開発が上手くできる仕組みをGitが持つことが判ります。

また、ソースコードをレビューするコミュニティもあります。質の高いコード作成に役立つそうです。このコミュニティに、AI活用が最近話題です。AIを使わない時と比べ、開発速度57%、タスク完遂率27%上昇など驚きの効果が報告されています。

これらGit機能を、クラウドで提供するのが、GitHubです。2023年のユーザ数は、1億人突破だそうです(Wikipediaより)。

参考資料:GitHubとは? Digital Business Sherpa (2023-08-02)

GitHubソフトウェア公開機能

GitHubのもう1つの機能が、ソフトウェア公開です。この例が、最初に示したRA用FSP v5.0.0同梱e2 studio 2023-10やTera Term 5のリリースです。

exeファイルが直接ダウンロードできます。zipファイルダウンロードが主流のWindowsと異なる点です。

最新版RA用FSP 5.0.0 with e2 studio 2023-10のGitHubレポジトリ
最新版RA用FSP 5.0.0 with e2 studio 2023-10のGitHubレポジトリ

Latestアイコンが最新版を示します。Release Notes内にダウンロードリンク、下方にあるAssetsが、実際の公開ファイルを示します。

Summary:ワールドワイド開発標準ツールGitHub

筆者は、 パーティションもない大部屋で近隣同僚と、または、1人でソフトウェア開発をしてきました。Git主要3機能は、口頭で同僚へ伝えるか、1人開発時は不要でしたので、実際にGitHub活用経験はありません。

しかし、ワールドワイドやリモートワークでの複数人ソフトウェア開発時は、GitHubが標準ツールです。普段はソフトウェアダウンロード先としてGitHubを利用している開発者も、その仕組みを知っていると今後役立つと思います。

Afterword:RA用FSP 5.0.0 with e2 studio 2023-10 & Tera Term 5動作

GitHub公開のRA用FSP v5.0.0、e2 studio 2023-10とTera Term 5を使ったFPB-RA6E1評価ボード動作例です。接続は、コチラの投稿と同じです。

RA用FSP 5.0.0 with e2 studio 2023-10とTera Term 5.0動作例
RA用FSP 5.0.0 with e2 studio 2023-10とTera Term 5.0動作例

インストールダイアログに従っていれば、従来版からのアップグレードも問題ありません。

RA用FSP v5.0.0同梱e2 studio 2023-10リリースが、他のルネサスMCUファミリのFSP v5.0.0やe2 studio 2023-10リリースより遅れるのは、 RA専用FSP同梱e2 studioのGitHubマージ作業のためと思います。

※ルネサス他MCUファミリは、FSP、e2 studioそれぞれ個別リリース。

リリースが遅れても、RAファミリ統合開発環境を、だれでも簡単に構築できるメリットを優先したためでしょう。


RA用FSP v4.5.0リリース

2023年6月28日、RA用FSP v4.5.0同梱e2 studio 2023-04がリリースされました。FSPのみがv4.4.0からv4.5.0へ更新され、e2 studioは、前回更新2023-04と同じです。FSP追加機能が下記です。

FSP v4.5.0追加機能
FSP v4.5.0追加機能

Reality AIサポート

API自動生成ツール:FSP v4.5.0追加機能で目新しいのが、Reality AIサポートです。

Reality AIは、ルネサスRAファミリ用のAI開発ツールで、AI処理にはCortex-M7クラスMPUが必要と思われていたのを、低コスト、低消費電力なMCUでも人物検出やモータ故障検出などのAI処理を実現できる特徴があります。

関連投稿:AI MCU

e2 studio 2023-04

IDE本体:e2 studio 2023-04は、更新無しです。

従って、前回更新で驚かされたユーザインタフェース:「消えたプロジェクト選択リスト」も不変です。下記の通りFSP v4.5.0インストール直後のダイアログで全ての内容に✅を入れて確認しました。

e2 studioインストール直後のアクション
e2 studioインストール直後のアクション

FSP v4.5.0 AI Data Collector/Shipper API

FSP v4.5.0 User’s Manual(英文)は、コチラからダウンロードできます。FSP v4.5.0追加Reality AI機能は、AI Data Collector/Shipperの2個のミドルウェアAPIです。

FSPのNew Stackを展開すると、新たにData Collector/Shipperの2個Stackが追加されました。Arm CMCIS5 NN Library Sourceは、前版からありました。

FSP v4.5.0.で追加されたAI Statck
FSP v4.5.0.で追加されたAI Statck

具体的にこのミドルウェアAPIとAI関連StackでどうやってAI処理を実現するかは、e2 studio FSP Summaryタグのフクロウアイコンクリックで表示されるData Shipper Basic ExampleやData Collector Basic Exampleを見ても筆者には、良く判りません。

Summaryフクロウアイコンで示されるBasic Examples
Summaryフクロウアイコンで示されるBasic Examples

FSPの極簡単な利用方法は、1)Stack配置、2)Property設定、3)Generate Project Content、4)Basic Example流用です。しかし、AI処理は、この方法では判らないAI学習などがありそうです。別途アプリケーションノート参照が必要でしょう。

だた、これらAI関連は、現在未発売のRAファミリ最上位RA8シリーズ(Cortex-M85+Helium)用の先行サポートだと筆者は思います。

Summary:RA2/4/6プロジェクトFSP v4.5.0アップグレードOK

RA用FSP v4.5.0同梱e2 studio 2023-04がリリースされました。FSP のみv4.4.0からv4.5.0へ更新、e2 studioは2023-04のままです。

FSP v4.5.0追加機能は、最初に図示したReality AIなどですので、RA2/4/6シリーズには当面無関係、今後発売されるRA8シリーズ用だと思います。

従って、旧FSP開発RA2/4/6プロジェクトをFSP v4.5.0へ更新すると、下記ワーニング表示がありますが、問題なくビルド、デバッグができます。

FSPアップグレードワーニング
FSPアップグレードワーニング



RA用FSP v4.4.0同梱e2 studio 2023-04

RAファミリ用FSP v4.4.0同梱e2 studio 2023-04
RAファミリ用FSP v4.4.0同梱e2 studio 2023-04

2023年5月26日、RAファミリ最新版FSP v4.4.0を含むe2 studio 2023-04が公開されました。今回の2023-04から、ビルド、デバッグ対象を事前設定していたプロジェクト選択プルダウンリストが無くなりました。

消えたプロジェクト選択リスト

e2 studio 2023-01までは、プロジェクト選択プルダウンリスト(下図、太枠)で、ビルド、デバッグの対象プロジェクトを設定し、その後、🔨、🐞アイコンのクリックで対象ビルド、または、デバッグする手順でした。事前の選択リスト設定をうっかり忘れ、別プロジェクトをビルドした方も多かったと思います。

e2 studio 2023-04からは、このプロジェクト選択ダウンリストが無くなりました。

e2 studio 2023-04はプロジェクト選択リストが消えた
e2 studio 2023-04はプロジェクト選択リストが消えた

その代わり、Project Explorerでアクティブプロジェクトを選択するだけで、🔨、🐞アイコンも連動してアクティブに変わります。競合他社Eclipse IDEと同様の操作になった訳です。こちらの方が直接的で間違いも無いでしょう。

注)リリースノートには、本変更が記載されていません。e2 studio 2023-04を初めて起動した時、筆者は、このユーザインタフェース変更に驚き、リリースノートを改めて確認した程です。

e2 studioインストール後のアクション

e2 studio 2023-04インストールは、従来方法と同じ、ダイアログに従って操作すれば終了します。

""Preferences></p

e2 studioインストール最後のダイアログは、リリースノートやWhat’s Newに、起動マーク✅がデフォルトで付いています。筆者は、これら✅を外し、Launch e2 studio?を✅に変えます。

通常、What’s New等は読まないためです。今回は、それぞれに目を通して印象に残った点を示します。

What’s New in “RA” e2 studio 2023-04

e2 studio 2023-04がサポートするルネサスMCUファミリは、RAファミリ以外にも6種あり、What’s Newには、これら各ファミリの変更内容が混合表記されています。この混合表記を止めるのが、What’s New冒頭のファミリアイコンです。

New in ”RA” e2 studio 2023-04
New in ”RA” e2 studio 2023-04

RAをクリックすると、RAのみの内容が抜粋されます。このWhat’s New in “RA” e2 studio 2023-04の中で印象的だったのが、Darkテーマ改善です。

Darkテーマへの変更は、e2 studioのWindows>Preferences>General>AppearanceでThemaプルダウンリストをデフォルトClassicからDarkへ変更し、Applyクリックです。Darkテーマが気に入ったら、Restartクリックで設定完了です。

元のClassicに戻すことも簡単です。Dark/Classic、お好みのテーマでe2 studioを使えば良いと思います。

Release NoteのLinux環境充実

久しぶりに見たリリースノートの中で印象に残ったのは、Linux環境へのインストール方法(English日本語)充実です。4Kなど高解像度モニタでのアイコン表示なども記載されています。

MCUクロス開発環境が、マルチプラットフォーム化しつつあるのを実感しました。

Afterword:変化へ順応

従来e2 studio利用のコツだったビルド、デバッグ手順の変更、突然でした。コツ不要になったので、👍と評価します。使い慣れたツールでも、今回のようにHMIが突然変わることがあります👎。

順応のため、通常あまりチェックしないリリースノートやWhat’s Newを見ました。その結果、得られた事柄もあり、プラスマイナス0とします。



RAファミリ最新情報とFSP

ルネサスは、最近元気です。特にRAファミリMCUにその傾向が顕著です。RAファミリ最新情報を2件ピックアップし、ルネサスRAファミリソフトウェア開発の鍵:FSP習得の重要性を示します。

Cortex-M85搭載AI処理実装RAファミリ

Cortex-M85搭載RAファミリによるAI人物検出デモ(出展:ルネサス)
Cortex-M85搭載RAファミリによるAI人物検出デモ(出展:ルネサス)

2023年3月14日~16日、ドイツ開催embedded world 2023で、ルネサスは、Cortex-M85コア搭載のRAファミリへAI処理を実装し、人物検出へ適用したデモを行いました。

従来、人物検出アルゴリズム実行には、Cortex-M7クラスMPU(Micro Processor Unit)が必要でした。このCortex-M85搭載RAファミリにより初めてMCUでもAI処理可能となり、MPU比、低コストで低消費電力動作など革命が起こるそうです。

このCortex-M85搭載RA MCUは、2023年中にリリース予定です。

SDR搭載RAファミリサンプル出荷

SDR(Software Defined Radio)は、ソフトウェアにより無線機能の変更が可能なハードウェアのことです。Cortex-M33コアRAファミリに搭載するSDRは、Bluetooth 5.3 Low Energyまでの各種Bluetooth仕様に対応しました。

つまり、ソフトウェアを更新すれば、常に最新バージョンBluetooth準拠のMCUになる訳です。2023年4月11日、このRA MCUのサンプル出荷が始まりました。

SDR搭載RA MCUは、ルネサス初の22nm製造プロセスMCUです。但し、22nmロジックとは異なる製造プロセスの不揮発性メモリを混載封止したSIP(System In Package)版MCUです。

不揮発性メモリまで同一の22nmで製造し、さらに高速で製造原価を下げたMCUの提供時期は、未定です。SIP版で機能優先のサンプル出荷を開始したのでしょう。

RAファミリへ最新技術を適用する理由

これら最新技術は、従来のMCUファミリには搭載しづらいです。その理由が以下です。

先ずハードウェア的には、最新技術が22nmなど先端MCU製造プロセスをベースにしていること、また、IoT向きCortex-M33/M85コアのRAファミリの方が、従来コアへ最新技術を追加するより性能的にも導入し易いこと、などです。

次にソフトウェア的には、RAファミリが、新しいFSP(Flexible Software Package)で開発することも一因です。簡単に言うと、FSPはAPI生成ツールです(関連投稿:MCUベンダAPI生成ツール比較2020年版)。

FSPは、HALやBSPなどハードウェア依存部分を隠ぺいしつつ効率的MCUソフトウェア開発ができる
FSPは、HALやBSPなどハードウェア依存部分を隠ぺいしつつ効率的MCUソフトウェア開発ができる

IoT MCU製品は、従来のベアメタルソフトウェア開発へ、RTOSや通信、セキュリティなど様々な機能が追加されます。

これら追加機能は、製品毎に適用が大きく変わる可能性が高く、その変更に対し開発ソフトウェア流用性や、柔軟かつ素早い対応も求められます(前章SDR搭載RA MCUが一例)。

FSPは、BSP(Board Support Package)やHAL(Hardware Abstraction Layer)を利用しMCU個別ハードウェア依存部分を隠ぺいしつつ、効率的かつ柔軟にソフトウェアの早期開発ができるよう工夫されています。

最新ルネサスMCUファミリソフトウェア開発の鍵FSP

つまり、ルネサス最新技術を活用したIoT MCU製品の早期開発には、FSPを上手く使えることが重要です。

FSPが扱うソフトウェアは、従来のベアメタル開発だけでなく、RTOS(Azure RTOS/FreeRTOS)や通信、各種USB、TrustZoneセキュリティなどと広範囲に及ぶため、FSP活用にはコツや慣れも必要です。

逆に、この鍵となるFSPを開発者が習得すれば、RAファミリに限らずルネサス最新IoT MCU製品化に、大きく貢献できる訳です。FSPは、RAファミリ以外のルネサスMCU開発へも適用されています。

まとめ

最新RAファミリソフトウェア開発の鍵:FSP
最新RAファミリソフトウェア開発の鍵:FSP

最新技術搭載のルネサスRAファミリMCUは、今後急速に増えます。最新RAソフトウェア開発の鍵:FSPを習得し、ベアメタル/IoT MCUソフトウェア開発に貢献できるようスキルを磨きましょう。

FSP習得方法

弊社RAベアメタルテンプレート(1000円税込)は、効率的かつ効果的にFSP習得ができます。将来的には、RTOSへも対応したRA RTOSテンプレート(仮名)も開発予定です。

判り易い添付資料と低価格で入手性が良いFPB-RA6E1、または、FPB-RA4E1評価ボードと、Baseboardを利用すれば、どなたでもFSP提供サンプルコードを活用、流用したRAベアメタル開発が可能で、FSP利用のコツも掴めます。是非、ご活用ください。




Tips)最新FSP v4.3.0でも、RTOS開発に100%対応はしていません。例えば、Developer Assistanceは、ベアメタルHAL callback関数定義はできますが、FreeRTOS callback関数定義はできません。
今後のFSP改版で、RTOSへの対応も広がるでしょう。但し、FSP習得タイミングとしては、ベアメタル開発に完全対応済みの「今がチャンス」と言えます。



RAファミリFSP v4.3.0公開

お知らせ:3月31日金曜投稿はお休み

虫歯治療
虫歯治療

3月31日の金曜投稿は、虫歯治療のため休みます🤒。先週投稿と同じ内容です。

RAファミリFSP v4.3.0公開

RAファミリ向け最新FSP v4.3.0同梱e2 studio 2023-01
RAファミリ向け最新FSP v4.3.0同梱e2 studio 2023-01

2023年3月19日、RAファミリ最新FSP v4.3.0同梱e2 studio 2023-01が公開されました。1月16日公開の他のルネサスMCUファミリ向けe2 studio 2023-01公開から2ヶ月遅れです。

過去のRAファミリFSP更新と異なる点を説明します。

FSP v4.3.0新規インストール

過去のRAファミリFSP更新は、最新e2 studio内に複数のFSPが同居できました。例えば、1つ前のe2 studio 2022-10では、FSP version 4.2.0~3.6.0が同居しており、選択可能でした。

今回のFSP v4.3.0は、新規e2 studio 2023-01フォルダへFSP v4.3.0が新規インストールされます。従って、FSP v4.3.0は、この新規e2studio_v2023-01_fsp_v4.3.0フォルダから起動されます。

FSP v4.3.0新規インストールe2 studio 2023-01
FSP v4.3.0新規インストールe2 studio 2023-01

高密度モニタ125%~175%スケーリングのツールバー表示改善

高密度モニタとは、4K(3840×2160)など解像度が高いモニタのことで、最近流行中です。フルHD(1920×1080)に比べ、縦横2倍の表示が可能です。

但し、4K解像度では、Windows表示テキストが小さすぎて見にくいため、125%~175%の拡大表示へ変更し利用するのが一般的です。e2 studio 2023-01では、このスケーリング変更時のe2 studioツールバー表示が改善されました。

高解像度モニタ活用中の方なら表示変更が判るでしょう。筆者は、100%表示の愛好家ですので、具体的な改善内容は、残念ながら判りません。

関連投稿

MCU開発に適すモニタ解像度(1920×1080~3K)。
MCU開発に適すモニタサイズ(メインモニタ:24~27型、ノートPC:16型)。

まとめ

FSP v4.3.0同梱e2 studio 2023-01デフォルトインストール
FSP v4.3.0同梱e2 studio 2023-01デフォルトインストール

最新FSP v4.3.0同梱e2 studio 2023-01デフォルトインストールが、新規FSPインストールに変わり、これが高解像度モニタ用のツールバー起因なのかは、筆者のPC環境では判りません。

しかし、新規インストールの方が、過去開発環境をそのまま維持できるメリットもあります。デメリットは、ディスク容量など軽微です。

流行のPC環境に伴ってMCU開発環境も変化します。より効率的MCU開発環境へのステップアップ更新と考えます。


FSPベアメタルサンプルのRTOSスレッド化

前投稿FSPベアメタルサンプルコード:sci_uart_fpb_ra6e1_epを、RTOSスレッド化する方法を示します。

多くのルネサスRA公式サンプルコードを活用した効率的なRTOSスレッド開発が本方法で可能です。FreeRTOS、Azure RTOS両方に使えます。

サンプルコードベースRTOSスレッド開発

RTOS開発は、複数スレッドを組合せ全体を動作させます。ベアメタルコードに比べ、個々のスレッドは、独立性や移植性が高い特徴があります。スレッド優先度やセマフォなどのRTOSオブジェクトを適切に設定すると、複数スレッド全体処理としてユーザ所望のシステム動作をします。

スレッドは、勝手に回る歯車、優先度やRTOSオブジェクトは、各歯車をシステム全体で上手く動作させる手段と考えると解りやすいと思います。

スレッドとRTOSの役目
スレッドとRTOSの役目

スレッド設計法は、機能別や処理手順別など様々あり、唯一の方法は無さそうです。しかし、先ずは、歯車となるスレッドを開発し、次に、開発スレッド優先度やRTOSオブジェクトを調整しながら、システム全体動作を仕上げるのがRTOS開発の方法です。

本稿は、スレッド単体開発の1方法として、ルネサスRAファミリ公式FSPベアメタルサンプルコードを活用したサンプルコードベースのRTOSスレッド開発法を示します。複数スレッドを組合せたRTOSオブジェクトの適切な調整や設定に関する内容は、含みません。

公式ベアメタルサンプルコードは、各ベンダエキスパートが開発し、評価ボードで動作確認済みの高信頼ソフトウェアです。また、MCU周辺機能毎に多くのサンプルコードが提供中です。

これらベアメタルコードを活用する本方法は、FreeRTOS/Azure RTOSどちらのRTOSスレッド開発へも使えます。

RTOSスレッド化方法

詳細は、後で説明しますが、先ず、ベアメタルサンプルをスレッド化する手順を簡単に示します。方法全体像が判っていると把握しやすいからです。

  1. スレッド無しで空の新規RTOSプロジェクト作成
  2. g_ioport以外のベアメタルサンプルFSPスタックを、RTOS FSPスタックへImport
  3. hal_entry.c以外のベアメタルサンプルsrcファイルを、RTOSプロジェクトsrcフォルダへコピー
  4. 新しいスレッド:MyThreadをRTOSプロジェクトへ追加後、Gegerare Project Contentクリック
  5. MyThread_entry.cへ、初期設定と無限ループ処理を追記

1で新規作成した空のRTOSプロジェクトへ、2と3で対象ベアメタルサンプルから内容を追加、4でベアメタルmain()相当の新しいMyThreadを追加後、FSPを使ってRTOSプロジェクトを自動生成します。

生成後、5でRTOSプロジェクトのMyThread_entry.c初期設定と無限ループを追記します。追記内容は、ベアメタルサンプルの初期設定と無限ループ処理です。

つまり、1~5手順全てFSPベアメタルサンプルからの単純コピーでRTOSスレッド化が可能です。

次章から、前投稿で用いたベアメタルサンプルコード:sci_uart_fpb_ra6e1_epを、FreeRTOSスレッド化する具体例を使って、各詳細手順を示します。

1. 空の新規FSP freertos_uartプロジェクト作成

スレッド無しで空の新規FreeRTOSプロジェクト作成
スレッド無しで空の新規FreeRTOSプロジェクト作成

スレッド無し空FreeRTOSプロジェクトを新規作成します。新規RTOSプロジェクト名は、freertos_uartとでもしてください。

2. sci_uart_fpb_ra6e1_epのFSPスタックImport

sci_uart_fpb_ra6e1_epのFSPスタックImport
sci_uart_fpb_ra6e1_epのFSPスタックImport

freertos_uartプロジェクトのFSPスタックへ、sci_uart_fpb_ra6e1_epのg_ioport以外のFSPスタックを全てImportします。Importした各スタックプロパティは、オリジナルプロパティと同じに手動で設定してください。

3. sci_uart_fpb_ra6e1_epのsrcファイルコピー

sci_uart_fpb_ra6e1_epのsrcフォルダファイルコピー
sci_uart_fpb_ra6e1_epのsrcフォルダファイルコピー

sci_uart_fpb_ra6e1_epのhal_entry.c以外のsrcファイルを全て、freertos_uartのsrcへコピーします。

4. freertos_uartプロジェクトへ新しいUart Thread追加後、Generate Project

新しいUart_Thread追加
新しいUart_Thread追加

新しいスレッドのSymbolは、Uart_threadとしてください。先頭を大文字にする目的は、FSPが自動生成したファイルやスレッドが使う全小文字表記とユーザ追加のそれらを、大小文字で区別するためです。

Tips:大文字利用は、好みの問題です。RTOS開発は、多数のスレッドやオブジェクトソースが、プロジェクト・エクスプローラのsrcフォルダに表示されます。自分が追加したソース(バグ有り?)と純FSP生成ソースを、一目で区別できるメリットがあります。

最後にGenerate Project Contentをクリックし、FSPによりRTOSプロジェクトを自動生成します。

5. Uart_Thread_entry.cへ初期設定と無限ループ処理追記

RTOSプロジェクトのsrcフォルダ内に、Uart_thread_entry.cが生成されます。

先頭の#include “Uart_thread.h”に、sci_uart_fpb_ra6e1_epのsrcファイルにある#include “common_utils.h”、 #include “uart_ep.h”、 #include “timer_pwm.h”を追記します。
これら4個の#include文は、freertos_uartの全srcファイルに手動で追記します。

Uart_thread_entry.cの初期設定
Uart_thread_entry.cの初期設定

RTOS初期設定は、Uart_thread_entry.c のTODO: add your own code here以下へ、sci_uart_fpb_ra6e1_epの初期設定:hal_entry.cのL41からL93までをコピーします。

sci_uart_fpb_ra6e1_epの無限ループ処理は、コピーした初期設定の後方にあるuart_ep_demo()です。

RTOS無限ループ内には、上図でコメントアウトしたコンテキストスイッチが必要です。そこで今回は、RTOSプロジェクトuart_ep.cのuart_ep_demo()内へ、直接コメントアウトしたFreeRTOSコンテキストスイッチ:vTaskDeley(1)を追記します。

uart_ep.cのuart_ep_demo()へ追記するコンテキストスイッチ
uart_ep.cのuart_ep_demo()へ追記するコンテキストスイッチ

Tips:#include “Uart_thread.h”が、FreeRTOS関連API:コンテキストスイッチ追記を可能にします。

sci_uart_fpb_ra6e1_epとfreertos_uartスレッド同一動作確認

RTOSプロジェクトをビルドし、評価ボードへダウンロード後、実行してください。前稿のベアメタルサンプルコードと全く同じ処理が、開発したfreertos_uartスレッドで確認できます。

FreeRTOS/Azure RTOSスレッド化差

本稿で示したFreeRTOSスレッド化とAzure RTOSスレッド化の差は、コンテキストスイッチのみです。FreeRTOSならvTaskDelay(1)、Azure RTOSならtx_thread_sleep(1)が、コンテキストスイッチです。

Tips:コンテキストスイッチは、FreeRTOS/Azure RTOS開発手法のRTOS処理フローなどを参照してください。

ベアメタルサンプルコードをAzure RTOSスレッド化する時は、手順1で、新規Azure RTOSプロジェクトを作成し、手順5のvTaskDelay(1)の代わりに、tx_thread_sleep(1)を使えばOKです。

Tips:FSP生成スレッドMyThread_entry.cの無限ループ内には、作成RTOSプロジェクトに応じて初めからvTaskDelay(1)、またはtx_thread_sleep(1)が実装済みです。

本方法が、FreeRTOS/Azure RTOSどちらのRTOSスレッド開発へも使えることが分かります。

補足

2023年1月16日、e2 stidioは2022-10のまま、RAファミリFSPがv4.2.0へ更新されました。本稿は、FSP v4.2.0/4.1.0両方で動作確認済みです。



FSP利用FreeRTOSアプリ起動動作

ルネサスFSPの役目、RTOSアプリ起動動作
ルネサスFSPの役目、RTOSアプリ起動動作

前回FSP利用FreeRTOSアプリの作り方で、ルネサス公式サンプルコードを流用・活用した実践的RTOSアプリ開発方法を示しました。今回は、前回開発したアプリを使ってFSPの役目、RTOSアプリがどのように動作開始するかを説明します。

これからRTOS開発を始めるベアメタル開発経験者に役立つと思います。

前回のおさらい

FPB-RA6E1評価ボードのLED1点滅速度を、SW1プッシュ割込みで変える1スレッドのみを持つRTOSアプリの開発方法を、新規FreeRTOS Blinkyプロジェクトへ評価ボード実装済みベアメタルサンプルコードを移植することで説明したのが、前回のfreertos_blinkyプロジェクトでした。

※12月9日投稿時、FSP Importした割込みコントローラ初期化の記述を忘れていました。翌日10日に追記済みです。お詫びします<(_ _)>。

本稿の目的

ルネサスFSP(Flexible Software Package)は、ベアメタル、FreeRTOSとAzure RTOS、これら3者に対応した周辺回路API とMCU起動ファイルを自動生成するツールです。

※MCU起動ファイルは本稿ではstartup.c、main.c、ユーザファイルの3つを指します。

従って、初めてFSPを利用する時は、戸惑う部分もあります。例えば、ベアメタル開発には無関係のスレッドやオブジェクト設定エリアがあること、FreeRTOS開発時でもタスクではなくスレッドへ統一された説明やパラメタ設定があるなどです。

つまり、1つのFSPでベアメタル、FreeRTOS、Azure RTOSの3者に同時対応したため、FSPパラメタ設定や説明に解りにくい点があります。

※本稿も、FSPに習ってタスクではなくスレッドを用います。

また、当然ですが、ベアメタルとRTOSでは、FSP生成のMCU起動コードも異なります。何度か開発すれば、ベアメタルとRTOSでどこが違うかが判ります。しかし、初めからハッキリ区別した説明があるとFSPとRTOS理解が早くなります。

そこで本稿は、FSP生成MCU起動ファイルとベアメタル/RTOSユーザファイルまでの動作差を説明します。

FSP自動生成MCU起動ファイル(startup.cとmain.c)

startup.c:リセット後のMCU動作開始には、動作クロック設定やRAMゼロクリアなど、様々な前処理が必要です。これら前処理を行うのが、startup.cです。startup.cは、ベアメタル/RTOSともに同じ処理です。

main.c:ベアメタルでは、startup.c→main.c→user_main.cと処理が進みます。RTOSは、startup.c→main.cだけです。main.cの処理内容がベアメタルとRTOSで異なります(次章の図参)。

ベアメタルのmain.cは、実質のメイン関数であるuser_main.cへの橋渡しファイルで処理はありません。なぜ橋渡しファイルを使うかは、後で説明します。

RTOSのmain.cには、ユーザがFSP Configurationで追加したスレッドやオブジェクトの生成関数が、FSPにより自動追加されます。例えば、前回のfreertos_blinkyプロジェクトのmain.cなら、下線部分です。

freertos_blinkyプロジェクトのmain.cファイル
freertos_blinkyプロジェクトのmain.cファイル

FSP生成のmain.cは、スレッドやオブジェクトを生成し、最後に橙色で囲ったRTOSタスクスケジューラを起動してリターン(終了)します。

つまり、RTOSのmain.cは、「全てのRTOS処理を開始するための前処理、準備」を行います。

因みに、FSP生成startup.cやmain.cは、ユーザが勝手に変更を加えにくいようプロジェクトファイル階層の深い部分や、ユーザフォルダ:srcとは別フォルダ内にあります。

FSP生成ベアメタルまたはRTOSユーザファイル(user_main.cまたはuser_thread_entry.c)

ベアメタル(左)とRTOS(右)のユーザファイル:srcフォルダ内容
ベアメタル(左)とRTOS(右)のユーザファイル:srcフォルダ内容

逆にユーザファイルは、変更を加え易いよう最上位のユーザフォルダ:srcの中にFSPが生成します。ベアメタルならuser_main.c、RTOSならuser_thread_entry.cです。

ベアメタルでは、実質のメイン関数:user_main.cがmain.cから起動します。user_main.cは、周辺回路の初期設定と、無限ループの2構成から成るごく普通のメイン関数です(関連投稿:組込み開発 基本のキ 組込み処理)。

一方、RTOSは、main.c内でFSPが追加した生成関数user_thread_createによりuser_thread_entry.cが起動します。前章のfreertos_blinkyプロジェクトで示すと、blinky_thread_createとblinky_thread_entry.cです。

ユーザが複数スレッドを追加した場合は、各スレッドが下図のようにmain.c内で生成され、RTOSによる複数スレッド並列動作となります。

ルネサスFSP生成のベアメタル起動動作(右)とRTOSアプリ起動動作(左)
ルネサスFSP生成のベアメタル起動動作(右)とRTOSアプリ起動動作(左)

それぞれのスレッドは、優先度やセマフォなどのRTOSオブジェクトに従って、つまりRTOS環境で制御されます。

FSP利用のRTOS開発は、main.cまでがベアメタル動作、これ以降はRTOS動作環境になります。

ベアメタルのmain.cがuser_main.cへの橋渡しファイルなのは、右側のRTOS動作環境の形に無理やり(?)合わせたためだと思います。FSPは、Azure RTOS>FreeRTOS>ベアメタルの順位で設計されたからでしょう。

まとめ:FSP利用FreeRTOSアプリ起動動作

ユーザ設定のFSP Configurationを基にFSPは、周辺回路APIを生成し、同時に、MCU起動ファイル(startup.cとmain.c)とユーザファイルを分離して生成します。

FSP自動生成ファイルやAPIには、ユーザが手動変更しないようわざわざ下記注意コメントが先頭に付いています。

/* generated XYZ source file – do not edit */

また、FSP生成ユーザファイルにも下記コメントが付いています。

/* TODO: add your own code here */

これらFSPコメントに従って、ユーザがコメントの後へユーザコードを追加すればアプリが開発できます。ただ、開発にはFSPが生成するファイル内容や、FSPが想定しているベアメタル/RTOSアプリ動作の理解が必須です。

そこで本稿は、FPB-RA6E1 FreeRTOSアプリ(freertos_blinky)を使ってFSPが生成したMCU起動ファイルとRTOSユーザファイル動作を説明しました。

その結果、ベアメタルでは橋渡し役のmain.cが、RTOSでは全てのRTOS動作開始の前処理、準備を行うことを示しました。

ルネサスMCU開発は、FSP理解が鍵です。FSPが自動生成するベアメタルとRTOSユーザファイルまでの起動動作が判ると、FSP理解とベアメタル開発経験者のRTOS開発が容易になります。



FSP利用FreeRTOSアプリの作り方

ルネサスFSP(Flexible Software Package)とサンプルコード利用の「実践的FreeRTOSアプリの作り方」を示します。下記の最新開発環境を用いました。古い環境や別評価ボードでも同じ結果が得られると思います。

 全体流れ説明

先ず本FreeRTOSアプリ開発の全体の流れを説明します。というのは、組込み開発で良くあるサンプルコード付属説明:readme.txtとソースコード動作が不一致など、少々込み入った内容を含むからです。

  1. FPB-RA6E1購入時インストール済みサンプルコード:qiuckstart_fpb_ra6e1_epは、ベアメタルソフト。readme.txt記載のSW1プッシュでLED1/2点滅速度変化とは不一致。
  2. SW1プッシュでLED1/2点滅速度変化へFSP改造(1と2は、ベアメタル開発)。
  3. FPB-RA6E1で、新規LED1/2点滅FreeRTOSアプリ作成(3以降は、FreeRTOS開発)。
  4. 作成FreeRTOSアプリのLEDスレッドへ、2.のベアメタルのSW1プッシュLED1/2点滅速度変化改造FSPと、ソースコード移植。
  5. LED2は、FreeRTOSアプリエラー表示用とするため、点滅処理から削除。

本稿の背景

ベアメタル開発者は1と2、RTOS開発者は3以降が実行できれば、SW1プッシュでLED1点滅速度変更の1スレッドのみを持つFreeRTOSアプリを開発できます。

「実践的FreeRTOSアプリ開発」としたのは、0からアプリを開発するのではなく、豊富に提供される公式サンプルコードを流用・活用し、所望アプリを早く効果的に開発する例を示したかったからです。

RTOSのメリットを説明した資料は多く見かけます。しかし、具体的なRTOSアプリ開発方法を示す資料が少ないことも背景にあります。

以下、1~5の説明を加えます。細かい説明は後回しにし、まとめ章を先に読むとより全体が解り易いと思います。従って、まとめ章を先に記述します。また、最後の章に、RTOS開発の基盤となるRAベアメタルテンプレート宣伝(?)もあります。

まとめ:実践的RTOSアプリ開発方法

評価ボード実装済みLED1とSW1は、いわば開発アプリ正常動作中を示すインジケータです。開発したFreeRTOSアプリをテンプレートとし、所望機能のスレッドを追加していけば、最終的に様々なFreeRTOSアプリを早期に開発できます。

FreeRTOSをRAファミリFSP利用例としましたが、Azure RTOSでも同様です。

つまり、本稿のアプリは、RTOSテンプレート骨格で説明した内容を、より具体化したものです。

もちろん複数スレッド追加時は、スレッド優先度やスレッド間制御(セマフォ/キュー/ミューティックスなど)の検討も必要になります。これらは、追加スレッドがほぼ完成した後の検討項目です。

先ずは、必要な個々のスレッドを単体・単独で開発し、その後、複数スレッド結合へと段階的に進める方法がRTOS開発には適していると考えます(関連投稿:FreeRTOS/Azure RTOSソフトウェア開発手法)。

複数スレッドの検討方法は、文章量が増えるため割愛しました。別途改めて、投稿する予定です。

1:qiuckstart_fpb_ra6e1_ep動作とreadme.txt

サンプルコードzip内のqiuckstart_fpb_ra6e1_ep
サンプルコードzip内のqiuckstart_fpb_ra6e1_ep

評価ボードに初めからインストール済みのサンプルコードが、quickstart_fpb_ra6e1_epです。zip内に収められています。e2 studioは、zip内にあるサンプルコード説明書:readme.txtをIDE内にインポートしません。

Tips:zip解凍後のreadme.txtを、サンプルコードプロジェクト内へ手動でコピーしておくと、いろいろ便利。
Tips:quickstart _fpb_ra6e1_epのfpb_ra6e1が評価ボード名、epはexample projectの略。別評価ボード利用時は、fpb_ra6e1部分が異なる。

quickstart_fpb_ra6e1_epのreadme.txtが下記です。

quickstart動作とreadme.txtの不一致箇所
quickstart動作とreadme.txtの不一致箇所

下線部:評価ボードSW1でユーザLED1/2点滅制御とありますが、この動作はFPB-RA6E1にはありません。しかし、quickstart_fpb_ra6e1_epソースコードには、SW1割込み処理:callback_irq1ds_buttonでLED1/2点滅delay変更処理が記述済みです。

これは、RAファミリのソースコードがHAL(Hardware Abstraction Layer)記述で、MCUが変わっても同じソースコードを使えるからです。別評価ボードのソースコードとreadme.txtを、そのままFPB-RA6E1へコピー流用している訳です。

組込み開発ではMCUの種類が多いため、このように既存資産をコピーして当該MCUコードや資料を作ることは良くあります。その結果、今回のようにreadme記述内容とサンプルコード動作が不一致なことも多々あります。

Tips:逆に上記は、MCUソフトウェア開発の本質が「サンプルコードやFSPなどの既存資産を上手くコピー活用すること」を示しているとも言えます!

2:SW1プッシュ割込みでLED1/2点滅速度変化へFSP改造

readme.txt記述とサンプルコード動作不一致の原因が、FSPです。

そのままコピーできるreadmeやサンプルコードと異なり、FSPは、当該MCU毎に設定が必要です。不一致の原因は、FPB-RA6E1のFSP設定にミス(忘れ)があるからです。

動作一致のためには、外部割込みコントローラ(External IRQ)とFPB-RA6E1のSW1(P205)の接続が必要です。下記のようにP205ピン設定を変更後、Generate Project Contentをクリックします。

quickstart_fpb_ra6e1_epを再ビルドし、評価ボードへダウンロードすれば、readme内容と同じSW1プッシュでLED1/2点滅速度が変わります。

外部割込みコントローラ(External IRQ)とS1(P205)を接続するピン設定
外部割込みコントローラ(External IRQ)とS1(P205)を接続するピン設定

3:LED1/2点滅新規FreeRTOSアプリ作成

新規FreeRTOSアプリ作成は、ベアメタルアプリ作成と同じ方法です。そこで、本稿は、ベアメタル作成との差分のみを示します。

LED点滅の新規FreeRTOSアプリ作成(ベアメタル作成との差分)
LED点滅の新規FreeRTOSアプリ作成(ベアメタル作成との差分)

新規作成FreeRTOSプロジェクト名は、freertos_blinkyとでもしてください。FSP Summaryが下記です。

FSP Summary
FSP Summary

このfreertos_blinkyを評価ボードへダウンロードすると、LED1/2が1秒毎に点滅します。生成したLEDスレッド:blinky_thread_entry.cのvTaskDelay(configTICK_RATE_HZ)が、1秒点滅の仕組みです。

4:LEDスレッドへ、2:SW1プッシュLED1/2点滅速度変化改造FSP移植

2:で改造したSW1割込みでLED1/2点滅速度を変える機能を、3の新規FreeRTOSアプリへ移植します。

freertos_blinkyのFSP Stacksタブを選び、画面上で左クリックしImportを選択します。From fileにquickstart_fpb_ra6e1_epを選び、configuration.xmlを開きます。Stack ImportでExternal IRQを選ぶとquickstart_fpb_ra6e1_epの割込みコントローラ設定がfreertos_blinkyへ移植できます。

Tips:移植するFSPスタック数が多い時は、Import機能が便利。

FSP Import
FSP Import

しかし、割込みコントローラとSW1(P205)間の接続はImportできません。そこで、1:と同様にP205ピン設定を割込みコントローラと接続し、Generate Project ContentクリックでFSP移植は完了です。

Tips:FSP Importは簡単便利だが、上記のように同一MCUであっても、ピン設定はImportされない。また、ピン設定が無くてもエラー表示もない。代替方法に、New Stackクリックでスタック群から追加機能を選ぶ方が、ピン設定忘れが少ないかもしれない。

次に、SW1割込み処理:callback_irq1ds_buttonを移植します。

callback_irq1ds_button処理は、e2studioのDeveloper Assistanceを開き、callback_function_definitionをクリックし、blinky_thread_entryの後へペーストで追記します。今回は、TODO:add your own code hereコメント後へ、quickstart_fpb_ra6e1_epのSW1割込み処理をコピー&ペーストし移植します。

コピー後エラーが表示される箇所は、全て定数未定義部分ですので、quickstart_fpb_ra6e1_ep定数部分もコピー&ペーストします。

Tips:e2 studioは、デフォルトではソースコード変更後、このように即コンパイルエラーを表示。

最後に、vTaskDelay(configTICK_RATE_HZ)のconfigTICK_RATE_HZ を、割込み処理で作成したg_delayへ変更します。

以上で、割込み処理の移植完了です。ビルドし、SW1でLED1/2点滅速度が変わることが確認できます。

SW1割込み処理:callback_irq1ds_buttonの移植
SW1割込み処理:callback_irq1ds_buttonの移植

12月10日追記:FSP Importした割込みコントローラ初期化の移植記述を忘れていました。追記します。

Importした割込みコントローラの初期化:icu_initializeも、下図のようにblinky_thread_entry.cへ移植します。

割込みコントローラの初期化処理の移植
割込みコントローラの初期化処理の移植

5:LED2点滅処理削除

LED2は、FreeRTOSアプリのエラー表示に使います。例えば、追加したスレッド初期設定に失敗した時のインジケータなどです。そこで、下記のようにLED2をLEDスレッドの点滅処理から外します。

LED2点滅処理削除
LED2点滅処理削除

以上で、SW1プッシュでLED1点滅速度変更の1スレッドのみを持つFreeRTOSアプリ完成です。

このFreeRTOSアプリへRTOSテンプレート骨格で投稿した7メニュー形式表示、LED2エラー表示などの機能を更に追加しFreeRTOSテンプレートとします。

FreeRTOSテンプレートは、全てのFreeRTOSアプリ開発の出発点となり、所望スレッド機能を追加していけば、効率的に様々なRTOSアプリ開発が可能です。

Tips:本稿はFreeRTOSテンプレート開発方法に重点を置き投稿。実FreeRTOSテンプレートは、もっと解り易い構造とソースコードで提供。

RTOS開発はベアメタル開発スキル必須

前章1~5から「RTOS開発には、ベアメタル開発スキルが必須」であることがお解り頂けたと思います。

組込み開発は、説明不足の事柄が非常に多いです。また、サンプルソフトとreadme.txtなどの説明不一致も多々あります。説明対象を初心者/中級者の誰にするか、どこまで説明するか、などなど読者を絞り難いこと、説明側にとっては、自明の理の内容が多いことがその理由です。

本稿で追記したTipsや背景となる技術スキルが無いと効率的に先へ進めないと思います。ベアメタルを補う目的のRTOS開発ではなおさらです。

RAファミリで、FSP利用の効率的なベアメタル開発スキルを身に付けるには、弊社RAベアメタルテンプレートがお勧めです。ソースコードに豊富な日本語コメントを付加し、付属説明資料にはTipsやFSPノウハウなども記載しています。RAベアメタルテンプレート説明サイトは、コチラをご覧ください。

ルネサス以外のベアメタル用テンプレートも多数ご用意しております。また、NXPのFreeRTOSアプリケーションテンプレートも販売中です。



RA用e2studio 2022-07リリース

2022年8月31日より、FSP v4.0.0同梱RAファミリ最新開発環境e2studio 2022-07が、ダウンロード可能です。

FSP for RA MCU Family, version 4.0.0. (2022/08/31)

FSP同梱インストーラ利用指示

RAファミリはFSP同胞インストーラ利用指示
RAファミリはFSP同梱インストーラ利用指示

RAファミリ以外の単体e2studioバージョンアップは、7月20日でした。

RAファミリのアップデートは、上記リリースノートのようにFSP(Flexible Software Package)同梱インストーラ利用指示があるため、RA用のe2studio 2022-07リリースは、単体から1.5ヶ月遅れの8月31日になりました。同梱インストール理由は、不明です(単体e2studio+単体FSPインストールも可能ですが、指示に従う方がBetter)。

また、e2studio 2022-04以降、Windows 11-64bitに正式対応しました。弊社の先行Win11 21H2も、最新FSP同梱RA用e2studio 2022-07の正常動作確認済みです。

但し、ルネサス半導体セミナーやリリースノート、サンプルコードの説明書きなどは、未だWin10です。

Win11への移設は、今秋予定の22H2発表後でも良いと思います。Win11 22H2は、9月20日リリース情報があります。仮に9月20日なら、次回投稿は、弊社Win11 21H2の22H2大型更新レポートになるでしょう。

Example Project Bundle

RA6E1(左)とRA4E1(右)サンプルコード一覧
RA6E1(左)とRA4E1(右)サンプルコード一覧

弊社推薦RA6/4ファミリ評価ボード:FPB-RA6E1、FPB-RA4E1サンプルコード:FPB-RA6E1/FPB-RA4E1 Example Project Bundleも、最新版がリリースされました(2022/08/11)。

最新Example Project Bundleでも、多くのベアメタルサンプル、FreeRTOSサンプルは1個(下線)、Azure RTOSサンプルは0個です。

Cortex-M33コア採用のRA6/4は、IoT MCUでFSPもRTOS対応済みです。先ずは、ベアメタル開発でFSPに慣れてもらうという意図でしょうか?

RA開発環境まとめ

9月16日時点の最新RA開発環境バージョンアップ状況をまとめたのが下図です。

RA用開発環境のバージョンアップ状況
RA用開発環境のバージョンアップ状況

RA用の開発環境は、FSPバージョン版数が不揃いです。例えば、FSP同梱e2studioのFSP版数は、v4.0.0なのに、最新Example Project BundleのFSP版数は、v3.8.0で1世代前です。

しかし、v3.8.0のExample Project Bundleは、下図のようにFSP ConfigurationのBSPタブで最新FSP version 4.0.0へ変更が可能です。変更後、Generate Project Contentをクリックすれば、FSP v4.0.0でのAPIコードやひな型コードが生成されます。

FSPバージョン変更方法
FSPバージョン変更方法

また、直にIoT MCU RTOS開発を始めたいベアメタル開発経験者には、FreeRTOSやAzure RTOSサンプルコード数が少ないことも問題です。

対策案として、前投稿説明のベアメタルサンプルコードからRTOSコードを自作する方法をお勧めします。

RTOSの目的や機能を教科書から学ぶよりも、自作サンプルコードから理解していくベアメタル起点のRTOS習得方法は、RTOSスキルを磨きベアメタル補完RTOS開発の面白さを知る良い方法だと思います。