RAアプリケーション開発の骨格

ルネサスRAファミリ評価ボードの動作テストプログラムと、周辺回路サンプルコードから判るRAファミリアプリケーション開発Tipsを示し、このTipsで開発したアプリケーション:App0を公開します。

評価ボードは、RA6E1を用いましたが、他のRAファミリ評価ボードでも同じです。

RAアプリケーションApp0のRTT Viewer出力
RAアプリケーションApp0のRTT Viewer出力

hal_entry.cとuser_main.c分離

RAファミリは、評価ボード毎にサンプルコードが提供されます。例えば、RA6E1の場合は、FPB-RA6E1 Example Project Bundleがそれで、この中にADCやタイマなどの周辺回路サンプルコードがあります。また、評価ボードテストプログラム:TP(quickstart_fpb_ra6e1_ep)も含まれており、他の周辺回路サンプルコード:EP(Exampleプログラム)とは少し違うファイル構造になっています。

違う原因は、EPが、コード判り易さのため、メイン処理をhal_entry.cに集中して記述するのに対し、TPは、様々な評価ボードへも対応するため、いわば汎用アプリケーション構造となっているからです。

簡単に言うと、FSPが生成するメイン処理:hal_entry.cと、ユーザ追記のメイン処理:user_main.cをファイル分離し、ユーザ開発部分の可搬性を上げた構造を持つのがTPです。

開発したMCUアプリケーションに可搬性があると効率的で生産性もあがります。TP同様、RAアプリケーションも、hal_entry.cとuser_main.cを分離した構造で開発する方法をお勧めします。

※FSP(Flexible Software Package)やサンプルコードの詳細は、コチラの関連投稿を参照ください。

SEGGER RTT Viewer利用

TPとEPには、もう1つ違いがあります。それは、EPには、PC入出力マクロが実装済みの点です。

例えば、gpt_fpb_ra6e1_ep(最初のgptが汎用PWMタイマ、fpb_ra6e1が評価ボード、epがExample Programを示す)ならば、タイマ利用例をPCへ出力し、その設定値をPCから入力できます。

対PC通信にはUSB経由Virtual COMポートを利用する評価ボードが多いのに対し、ルネサスRAファミリは、評価ボード実装デバッガのSEGGER RTT Viewerをこの役目に使います。USARTなどのMCU資産を消費しないメリットがあります。

PCでRTT Viewerを使うには、コチラからJ-Link Software and Documentation Packをダウンロードし、PCへインストール後、J-Link RTT Viewer起動で評価ボードとPC通信ができます(最初の図)。

但し、RA6/4などCortex-M33コアファミリ開発の場合は、ビルド後生成されるmapファイルからRTT Control Block Addressを探し、Viewer起動ダイアログへ入力する必要があります。

プログラム変更やFSP版数が変わると、このBlock Addressも変わるので、生成mapファイルAddress値の再入力が必要です。

RAアプリケーション開発時にも、このPC通信マクロが使えるとprintf/scanfの代用になり便利です。FSP生成プロジェクトでPC通信マクロを利用するには、生成プロジェクトのsrcフォルダへ、SEGGER_RTTとcommon_utili.hの両方を手動で追加します。

追加元のSEGGER_RTTとcommon_utili.hは、どのEPのものでも構いません。

App0特徴

以上から、RAアプリケーション開発時は、FSPが生成するオリジナルファイルに

①HAL生成メインhal_entry.cとユーザ追記メインuser_main.cを分離したファイル構造
②srcへSEGGER_RTTとcommon_utility.hの手動追加

を行うと、ユーザ開発ソースコードのRAファミリ間での可搬性が高く、PC通信も容易なアプリケーションの骨格(Skelton)が完成します。

この方法で開発したアプリケーション:App0を示します。タイトルをPCへ出力するだけのアプリケーション骨格です。この骨格に、開発ソースコードを肉付けしていけば、肉付けソースコードのRAファミリ間可搬性が高く、デバッグ効率も高いアプリケーション開発ができます。

RAファミリアプリケーション開発骨格:App0
RAファミリアプリケーション開発骨格:App0

開発したApp0プロジェクト圧縮ファイルは、コチラよりダウンロード可能です。ご自由にご利用ください。

e2 studioへのインポート方法は、インポート>既存プロジェクトをワークスペースへ>アーカイブ・ファイルの選択で、App0.zip指定です。

App0開発手順

以下にApp0プロジェクトの作成手順を示します。

1)FSPで新規Bare Metal – Minimalプロジェクト生成
2)App0 FSPパースペクティブでGenerate Project Contentクリック
3)他の周辺回路サンプルコードのsrc>SEGGER_RTTとcommon_utility.hをコピーし、App0プロジェクト>srcフォルダへペースト
4)src>hal_entry.cのL3へextern void UserMain(void)追記、L19へUserMain()追記
5)src上で新規>ソース・ファイルをクリックし、UserMain.c追加
6)src上で新規>ヘッダー・ファイルをクリックし、UserDefine.h追加
7)UserMain.cとUserDefine.hへ、前章ソースコード追記
8)ビルドし、Debug>App0.mapファイルから_SEGGER_RTTを検索、そのアドレスを、RTT Viewer起動ダイアログのRTT Control Blockへ入力後OKクリック
9)評価ボードへApp0をダウンロード、実行
10)PCのRTT Viewerで図1のタイトル出力確認

4、5、6の追加ファイル名は、UserMain.c、UserDefine.hなど先頭大文字のPascal形式を用いています。これは、プロジェクト・エクスプローラーでオリジナルのFSP生成ファイルとユーザ追加ファイルの識別が容易になるからです。

また、筆者は、Cソース・ファイル毎にヘッダー・ファイルを追加するより、ソース・ファイル内にプロトタイプ宣言を追記し、個別ヘッダー・ファイルを追加しない方が好みです。4のhal_entry.cへUserMainプロトタイプ宣言を追記したのも、このためです。

UserMain()は、初期設定と無限ループに分け、初期設定にRttInit()とUserInit()を追加しています。RttInit()でタイトルをPCへ出力し、UserIint()は、内容が何もありません。骨格ですので、利用する周辺回路に応じて、ここへ初期設定コードを追記することを想定しています。

App0のプロジェクト構成とRTT Viewerへのmapアドレス設定の様子
App0のプロジェクト構成とRTT Viewerへのmapアドレス設定の様子

まとめ

RAファミリ評価ボードテストプログラムと周辺回路サンプルコードから、hal_entry.cとuser_main.cの分離ファイル構造と、RTT Viewer利用の対PC通信マクロ実装済みのアプリケーションスケルトン(骨格):App0を示しました。

この骨格へ、開発ソースコードを追加していけば、ユーザ追加部分のRAファミリ間可搬性が高く、デバッグ効率も高い、RAファミリアプリケーションが開発できます。

もちろん、3月末を目標に開発中のRAファミリテンプレートも、このApp0へ評価ボード実装LED点滅やチャタリング対策済みSW機能などを追加します。RAファミリテンプレート構想はコチラの4章、RAテンプレートの仕組みはコチラの関連投稿を、参照ください。

最近の組込みCコード書き方

RAファミリFSP生成のBare Metal Blinkyサンプルコードの書き方が、筆者のCコード書き方と違っていて驚いた点を示します(FSP:Flexible Software Packageとは何かは、コチラの関連投稿を参照)。

変数宣言位置

FSP生成Bare Metal Blinkyサンプルコードの変数宣言
FSP生成Bare Metal Blinkyサンプルコードの変数宣言

筆者のC変数宣言は、関数の冒頭、実行文の前に全ての変数宣言を行います。しかし、Bare Metal Blinkyサンプルコードは、変数が必要になった直前で変数宣言をしています。こちらの方が、コードが読み易いですね。

これは、使うC言語規格が異なるからです。筆者は、古いC90(1990年版)、FSPは、C99(1999年版)以降の規格、書き方を採用しています(参考文献:C言語の仕様)。

C言語規格も改良や改版が進み最新規格は、C11(2011年版)です。更に、C17やC2xなどへ進化中だそうです。下位(旧版)互換性は、コンパイラが賢いので保たれています。エッジAIが導入されると、古い書き方は止めなさいとアドバイスが出たりするかもしれません😅。

IoT MCU開発では、従来比、他者が開発したコードやライブラリを読み、理解・利用する機会も格段に増えます。

独立行政法人情報処理推進機構から、組込みソフトウェア開発向けコーディング作法ガイド[C言語版]ESCR Ver. 3.0(2018年)のPDF版がダウンロード可能です。

ガイド想定利用者は、プログラマやレビュー者(P3参照)とありますので、本ブログ読者は目を通しておくのも良いと思います。

新しい規格に縛られる必要は、コンパイラのおかげでありません。しかし、FSP生成サンプルコードに習い、今後はC99以降の書き方を採用します。

いわゆるLチカサンプルコードであっても、なおざりにできない例です。そこで、基になったFSP生成のBare Metal BlinkyとMinimalスケルトン(骨格)の差をまとめます。

Bare Metal Blinky生成方法

各種周辺回路サンプルコードは、FSPとは別に評価ボード毎に提供されます。しかし、Bare Metal Blinkyだけは、FSPで生成可能です(FSPと評価ボード毎の周辺回路サンプルコードは、コチラの関連投稿を参照)。

その狙いは、筆者のような古いC記述者へ新しい記述法を知らせる、または、Blinkyと周辺回路無しのMinimalなスケルトンとの差分を知らせる、などが考えられます。

FSP生成Bare Metal Blinkyは、通常の新規プロジェクト作成方法と同じ、ファイル>新規>Renesas C/C++ Project>Renesas RAクリックが最初の手順です。ダイアログに従って手順を勧めると、最後にBare Metal – BlinkyかMinimalかの選択が可能です。

Bare Metal Blinky生成方法
Bare Metal Blinky生成方法

Blinky選択とFinishクリックで、g_ioport I/O Portスタックだけが配置済みの[Blinky]FSP Configurationパースペクティブが開きます。

[Blinky] FSP Configurationのスタック
[Blinky] FSP Configurationのスタック
念のため、Generate Project Contentをクリック後、src>hal_entry.cを開くと、1章で示したC99以降の書き方で記述したBlinkyサンプルコードが生成されます。

Bare Metal BlinkyとMinimalの差分

Bare Metal Blinky(左)とMinimal(右)の差分
Bare Metal Blinky(左)とMinimal(右)の差分

BlinkyとMinimalスケルトンの差は、hal_entry()のTODO: add your own code hereの下にBlinkyコードが有るか無いかだけです。FSP Configurationも全く同じです。

つまり、IOPORT未使用のアプリケーションは無いので、例えMinimalと言えデフォルトでg_ioport I/O Portスタックは配置済みで、そのスタック利用例がBlinkyという訳です。

FSP生成Bare Metal Blinkyに習い、筆者も今後はC99以降の新しい書き方でCソースコード記述をしていきます。

RAファミリ開発環境Tips

ルネサス統合開発環境:e2 studioが、2022-01へバージョンアップされました(2022年1月16日号TOOL NEWS)。RAファミリは、「ソフトウェアパッケージ(=FSP)が同梱されたインストーラをダウンロードしインストールを行うこと」と、アップデート方法に注意書きがあります。

ところが、リンク先インストーラのe2 studioバージョンは、本日時点で昨年12月9日のFSP v3.5.0更新時、2021-10のままです。e2 studioは旧バージョンのため、2022-01へ手動にてアップグレートが必要です。

RAファミリ開発環境 GitHub状況

上記のように、RAファミリ開発環境は

・統合開発環境:e2 studio
・FSP(Flexible Software Package)とFSP版数に対応した評価ボードサンプルコード

の2種類、サンプルコードを含めると3種類が、それぞれ別タイミングでバージョンアップします。

また、ダウンロード先がGitHub内にあるため、RAファミリ開発環境の全体像と役割を把握していないと、混乱が生じます。そこで本稿で、整理します。

ちなみに、本日時点のRAファミリ開発環境GitHub状況が下図です。

GitHub上のRAファミリ開発環境のFSPとe2 studio(橙色がニュースリンク先)
GitHub上のRAファミリ開発環境のFSPとe2 studio(橙色がニュースリンク先)
GitHub上のRAファミリ評価ボードのサンプルコード
GitHub上のRAファミリ評価ボードのサンプルコード

RAファミリ開発環境 全体像と役割

「主役はFSP、e2 studioは脇役」、これがRAファミリ開発環境の役割です。

従って、FSPバージョンアップ時は、新FSP用ワークスペースを作成し、ここへ、旧FSP開発アプリケーションをコピー(インポート)、新FSPワークスペースでRAアプリケーション開発を継続するのがお勧めの開発手法です。

※HAL API生成ツールがFSPです。つまり、HAL(Hardware Abstraction Layer)より上位のRAアプリケーションは、FSP版数に依存しないのが本来の姿です。現状のFSPは、HAL API自体も変わる可能性があり「下位互換性」が未保証のため、安全策をとります。

もちろんe2 studioバージョンアップ時も別フォルダへインストールすれば、新旧両e2 studioの併用が可能です。但し、脇役e2 studioは、主役FSPほどの安全策は不要です。

例えば、前章のFSP v3.5.0インストーラのe2 studio 2021-10を手動更新(e2 studio>ヘルプ(H)>更新の検査クリック)し、2021-10へ上書きインストールした場合は、初めにインストールしたC:\Renesas\RA\e2studio_v2021-10_fsp_v3.5.0フォルダへ、e2 studio 2022-01が上書き更新されます(赤字v2021-10部分は不変)。

手動更新が成功したかを確認するには、e2 studio>ヘルプ(H)>e2 studioについて(A)をクリックし、下記ダイアログVersion:2021-10部分が、2022-01へ変わったことを目視確認します。

e2 studio 2021-10の手動2022-01更新確認方法
e2 studio 2021-10の手動2022-01更新確認方法

主役FSP更新、脇役e2 studio同一版対処

e2 studioはバージョンアップなし、FSPのみバージョンアップする場合は、GitHubからFSP_Packs_<version>.zipをダウンロードしインストールすれば、FSPのみの更新も可能です。この場合は、e2 studio内で新旧FSPが選択可能です。

この場合も、新旧FSPで開発アプリケーションのワークスペース分離が無難です。

理由は、プロジェクトのFSP設定ファイル:configuration.xmlにFSP利用版数が記述されており、旧FSPを新FSPへ変更する場合、下記ワーニングが表示されるからです。OKクリックで新FSPがアプリケーションへ適用されます。

アップグレートFSPへの変更方法とワーニング表示(FSP v3.4.0→v3.5.0の例)
アップグレートFSPへの変更方法とワーニング表示(FSP v3.4.0→v3.5.0の例)

利用FSP変更後、Generate Project Contentをクリックし新FSPでのHAL APIを再生成、当該プロジェクトクリーン、再ビルドでコンパイル成功すれば、同じアプリケーションで新旧FSPが使えます。

FSPアップグレートは、新規RAファミリ追加、新規周辺回路追加など、「旧FSP提供以外の新規追加」が主な内容ですので、基本的に旧FSP開発アプリケーションは、新FSPでもコンパイル成功するハズです。

評価ボードサンプルコードがFSP版数対応なのは、これら「新規追加の使用例」を示すためです。(もちろん、旧FSPバグ修正も含む)。

※但し、RTOS関連アップデートもFSP更新に含まれることには注意してください。RAベアメタル開発では、新旧FSPコンパイル成功確率は高いハズですが、RTOS開発時は、新FSPリリースノートに目を通し、RTOS関連の変更有無確認が必要です。

コンパイル不成功の時は、新FSP環境で当該プロジェクト再設計が必要になります。

まとめ

RAファミリ開発環境は、新旧版が全てGitHub内にあり、統合開発環境e2 studio、FSP、評価ボードサンプルコードのアップグレートがそれぞれ別タイミング、付属説明も簡易なため混乱します。混乱回避のためにRAファミリ開発環境の役割とFSP更新Tipsを示しました。

FSPが主役、e2 studioは脇役、これがRAファミリ開発環境の役割です。FSPアップグレート時は、新旧FSPワークスペースを分離し、新FSPワークスペース内で再度HAL APIを生成、生成HAL APIがそのまま旧アプリケーション上でコンパイル成功すれば、安全にFSP更新ができます。

おまけ:Windows 11アップグレート

WIndows 11アップグレート可能通知
WIndows 11アップグレート可能通知

弊社Windows 10 21H2に、Windows 11アップグレートOK通知が届きました。

弊社のPCは、IoTベンダのMCU開発ツールが主役、Windowsは脇役です。今すぐの11アップグレードはNGですので、「今はWindows 10の使用を継続します」をクリックし対処しました(なお、Windows 10 21H2大型更新方法は、コチラの関連投稿を参照)。

多くのIoT MCU開発ツールの公式推薦Windows OSは、未だWindows 10です。

公式推薦OSが、Windows 11に変った後に11化しても遅くはありません。今秋の11大型更新に向け11も進化中ですので、状況観察します。

Cortex-MとRISC-V

NVIDIA買収先で成立見通しが未だに不透明なARM社Cortex-Mと非営利団体運営のRISC-V、両MCUコアの顧客利用動向記事が公開されました(2022年1月14日、ITmedia)。

極簡単に要約すると、ARM顧客の多くが現在NVIDIAと競合関係にあるため、買収成立時、Cortex-M利用の顧客将来製品の代替コア用意(=Plan B)が必要で、代替コアにRISC-Vが急浮上している、という内容です。

ARM顧客とは、エッジAIや車載半導体製品を供給中のMCUベンダ(Renesas、NXP、STマイクロなど)を指します。Plan Bは、代替案と訳されます。これは、実行案Aのトラブル時、Aの次のBが、第2の案という意味です。

半導体業界は常に変化し、これに伴い案A達成に何らトラブルが無くても、その将来性に変化が生じる可能性もあります。“Backup”としてのPlan B必要性を感じた記事です。

オープンアーキテクチャRISC-V

Cortex-M代替として急浮上のRISC-V
Cortex-M代替として急浮上のRISC-V

RISV-Vは、カルフォルニア大学バークレイ校開発のオープンアーキテクチャMCUコアで、Cortex-MのようなCISC(Complex Instruction Set Computer)命令系を、より縮小した命令系(Reduce Instruction Set Computer)へ変え、低電力動作に適すなどの特徴を持ちます。

Cなどの高級言語ソフトウェア開発者にとっては、CISC/RISC差はあまり気になりませんが、コンパイラを開発するMCUベンダにとっては、他社差別化を生む重要なパラメタです。

MCU性能の支配項は、

・MCUコア(CISC or RISC)
・コンパイラ
・製造プロセス(≒最高動作周波数)
・内蔵周辺回路

の4項目で、ARM Cortex-M使用中ベンダなら、MCUコアとコンパイラはARM供給品なので各社共通です。つまり、製造プロセスと内蔵周辺回路でしか他社差別化手段がありません。

NVIDIAがARMを買収した場合、競合他社へのMCUコアやコンパイラ供給に、自社利用品と差を付ける可能性もあります。Cortex-M使用中のMCUベンダ各社が、ARM買収成立を嫌う理由が、これです。

そこで、オープンアーキテクチャでコンパイラ開発自由度も高いRISC-Vコアが、競合他社のCortex-M将来製品コアのPlan Bとして急浮上した訳です。

ARMコアMCU開発で出遅れたRenesasは、早々とRISC-V対応MCU開発を発表しました。NXPやSTマイクロのRISC-Vコア利用は不明ですが、Renesas同様、Plan Bを持っているのは確実です。

我々開発者が、今すぐRISC-V開発を始める必要性は低いと思います。むしろ、Cortex-M代替に、低価格高性能無線機能付きESP-WROOM-32を習得した方が役立つと個人的には思います。RISC-VESP-WROOM-32の関連投稿は、リンク先を参照してください。

MicrosoftのOffice、Windows分離売却可能性

Microsoftが買収を発表した大手ゲーム会社Activision Blizzard
Microsoftが買収を発表した大手ゲーム会社Activision Blizzard

半導体業界の大きな一角を占めるMicrosoftの大手ゲーム会社Activision Blizzard買収ニュースが1月19日発表されました。買収理由は、コチラの記事が示すメタバースです。COVID-19が大きく影響しているコンタクトレス・テクノロジのメタバースは、関連投稿の3章を参照してください。

Microsoft動向で気になるのは、確定内容ではありませんが「OfficeとWindowsを売却すべき」という1月17日発表記事です。Microsoftは営利団体です。Windows 11不具合の多さ、新機能の魅力無さなど、最近のWindowsに対するMicrosoftの力の入れようの低下とも符合します。

OfficeやWindows(特にGUI)は、既に製品完成の域に達しています。手間暇が掛かるDOS-VベースのコンシューマーOS企業と、最新コンタクトレス・テクノロジやAzure、高度セキュリティ投資との親和性も高いパブリッククラウド企業とは、別会社の方が、利用者、投資家にとっても判り易いと思います。

エンタープライズ顧客重視で将来性も高いパブリッククラウド企業地位を、MicrosoftがAmazonやGoogleよりも高めたいなら、足枷の可能性もあるOffice、Windows分離売却も可能性ありと思います。

Plan B評価の違い

M&A:Mergers(合併)and Acquisitions(買収)は、半導体業界では当たり前です。激変する半導体業界のMCUベンダとMicrosoft動向記事を紹介しました。

日本社会では、Plan B評価がまだ低いのですが、MCU開発者として、「個人レベルのPlan B必要性」を感じた記事でした。日本人と外国人上司のPlan B評価の違いは、コチラの記事を参照してください。

組込み開発 基本のキ:RTOS vs. ベアメタル

RTOS vs. BareMetal
RTOS vs. BareMetal

2022年最初の投稿は、RTOSとベアメタルを比較します。RTOSを使わないベアメタルMCU開発者が多いと思いますので、RTOS開発メリット/デメリットをベアメタル側から評価、RTOSデバッグツール紹介とベアメタル開発の意味を考えました。

RTOS目的

Flexible Software Package構成
Flexible Software Package構成

ルネサスRAファミリのFlexible Software Package構成です。左上Azure RTOSやFreeRTOSの中に、ConnectivityやUSBがあります。これらMCU共有資源を管理するシステムソフトウェアがOSで、PCのWindowsやMac、Linuxと機能的には同じです。

Real-Time性が必要な組込み用OSをRTOSと呼び、FreeRTOSやAzure RTOSが代表的です。これは、IoT MCU接続先が、Amazon Web Services(AWS)クラウドならばFreeRTOSライブラリ、Microsoft AzureクラウドならAzure RTOSライブラリ(図のConnectivity)利用が前提だからです。

※2021年のIoTクラウドシェアは、コチラの関連投稿からAWS>Azure>GCPの順です。

RAファミリに限らず、クラウド接続のIoT MCUは、これらRTOSライブラリを使ったRTOS開発になります。

RTOSメリット/デメリット

例えば、ベアメタルでUSB制御を自作する場合は、USB 2.0/3.0などの種類や速度に応じた作り分けが必要です。ライブラリがあるRTOSなら、USBポートへの入出力記述だけで利用可能です。RTOSが共有資源ハードウェア差を吸収し、アプリケーションが使い易いAPIを提供するからです。

RTOSの資源管理とは、MCUコア/Flash/RAM/周辺回路/セキュリティなどの共有資源を、アプリケーション側から隠蔽(≒ブラックボックス化)すること、とも言えます。

RTOSアプリケーションは、複数タスク(スレッドと呼ぶ場合もあり)から構成され、タスク間の優先制御もRTOSが行います。開発者は、単体処理タスクを複数開発し、それらを組み合わせてアプリケーションを構成します。RTOSアプリケーション例が下図、灰色が開発部分、コチラが関連投稿です。

Data flow diagram for a smart thermostat(出展:JACOB'S Blog)
Data flow diagram for a smart thermostat(出展:JACOB’S Blog)

RTOS利用メリット/デメリットをまとめます。

メリットは、

・RTOSライブラリ利用により共有資源活用タスク開発が容易
・移植性の高いタスク、RTOSアプリケーション開発が可能
・多人数開発に向いている

デメリットは、

・複数タスク分割や優先順位設定など、ベアメタルと異なる作り方が必要
・共有資源、特にRAM使用量がタスク数に応じて増える
・RTOS自身にもバグの可能性がある

簡単に言うと、RTOSとベアメタルは、「開発作法が異なり」ます。

ソフトウェア開発者は、RTOS利用と引換えに、自己流ベアメタル作法を、RTOS作法へ変えることが求められます。RTOS作法は、標準的なので多人数での共同開発が可能です。もちろん、ベアメタルよりもオーバーヘッドは増えます。このため、RTOS利用に相応しい十分なMCUコア能力も必要です。

RTOSタスク開発 vs. ベアメタルアプリケーション開発

最も効果的なRTOS作法の習得は、評価ボードを使って実際にRTOSタスク開発をすることです。弊社FreeRTOSアプリケーションテンプレートは、この例です。

それでも、RTOSタスク開発作法を文章で記述すると、以下のようになります。

開発対象がアプリケーションからタスク(スレッド)へ変わることが、ベアメタルとの一番の違いです。Windowsタスクバーにあるフィルダ表示や、ペイントなどと同様、タスクは、単機能の小さいアプリケーションとも言えます。

このタスクを複数開発し、複数タスクを使ってRTOSアプリケーションを開発します。タスクには、それぞれ優先順位があり、他のタスクとの相対順位で実行タスクがRTOSにより決まります。タスクの状態遷移が、RTOSへの備え:第2回、タスク管理で示した下図です。

FreeRTOS Task States
FreeRTOS Task States

ベアメタルアプリケーションとは異なり、優先順位に応じてタスクが実行(Running)され、その実行も、定期的に実行可能状態(Ready)や待ち状態(Suspended)、停止状態(Blocked)へRTOSが変えます。これは、リアルタイムかつマルチタスク処理が、RTOSの役目だからです。遷移間隔などは、RTOS動作パラメタが決めます。

ベアメタル開発は、開発者が記述した通りに処理が実行されますが、RTOS開発のタスク実行は、RTOS任せです。RTOS開発難易度の上がる点が、ここです。

一般的なIoT MCUは、シングルコアですので、実行タスク数は1個、多くの他タスクは、Not Running(super state)状態です。RTOSがタスクを実行/停止/復活させるため、スタックやRAM使用量が急増します。

これら文章を、頭の中だけで理解できる開発者は、天才でしょう。やはり、実際にRTOSタスクを開発し、頭の中と実動作の一致/不一致、タスク優先順位やRTOS動作パラメタ変更結果の評価を繰返すことで、RTOS理解ができると凡人筆者は思います。

ベアメタル開発者が手早くRTOSを理解するには、既にデバッグ済みの複数RTOSタスク活用が便利で、FreeRTOSアプリケーションテンプレートは、この要求を満たしています。概要は、リンク先から無料ダウンロードできます。

文章でまとめたFreeRTOS解説が、コチラの弊社専用ページにあります。また、本ブログ検索窓にFreeRTOSと入力すると、タスク開発例などが参照できます。

RTOSデバッグツール

percepio tracealyzer
percepio tracealyzer

さて、RTOS作法に則ってタスク開発し、RTOS動作パラメタも適切に設定しても、思ったように開発タスクが動作しない時は、ブラックボックスRTOS自身のバグを疑う開発者も多いでしょう。RTOSのバグ可能性もありえます。

この疑問に対して強力にRTOS動作を解析できるFreeRTOSデバッグツールがあります。資料が無料でダウンロードできますので、紹介します。

※このツールを使うまでもなく、弊社FreeRTOSアプリケーションテンプレートは、正常動作を確認済みです。

まとめ:RTOS vs. ベアメタル

IoT MCUのクラウド接続 → 接続クラウド先のRTOSライブラリ必要 → RTOSライブラリ利用のRTOS開発が必要、という関係です。

RTOS開発は、ベアメタルと開発作法が異なる複数タスク開発です。タスクは、優先順位に応じてRTOSがMCU処理を割当てます。また、MCU共有資源がRTOSアプリケーションから隠蔽されるため、移植性が高く多人数での大規模開発にも向いています。

一方で、RTOSオーバーヘッドのため、ベアメタルよりも高いMCU能力が必要です。

シングルコアMCUでは、RTOSとベアメタルのハイブリッド開発は困難です。開発者がRTOSを利用するなら、慣れたベアメタル開発から、RTOSタスク開発への移行が必要です。

ベアメタル開発経験者が、効果的にRTOSタスク開発を習得するには、評価ボードと複数RTOSタスクが実装済みの弊社RTOSアプリケーションテンプレートの活用をお勧めします。

ベアメタル開発意味

RTOSのタスク処理待ち(セマフォ/Queue)を使うと、ベアメタルよりも排他/同期制御が簡単に記述できます。それでも、全てのMCU開発がRTOSへ移行することは無いと思います。様々なセンサデータをAD変換するエッジMCUは、ベアメタル開発、エッジMCUを複数個束ねクラウドへ接続するIoT MCUは、RTOS開発などがその例です。

MCU開発の基本は、やはりRTOS無しの「ベアメタル開発」です。

IoT MCU開発者スキルの階層構造
IoT MCU開発者スキルの階層構造

ベアメタル開発スキルを基にRTOSを利用してこそ、RTOSメリットを活かしたタスクやアプリケーション開発ができます。共有資源ブラックボック化、多人数開発のReal-Time OSは、「ベアメタル開発の補完」が起源です。

PC OSとは全く逆のこの生い立ちを理解していないと、効果的なRTOS利用はできません。近年MCU性能向上は著しいのですが、向上分をRTOSだけに振り分けられる程余裕はなく、IoTセキュリティなどへも配分する必要があります。

この難しい配分やRTOS起因トラブルを解決するのが、ベアメタル開発スキルです。弊社マイコンテンプレートは、主要ベンダのベアメタル開発テンプレートも販売中、概要ダウンロード可能です。

組込み開発 基本のキ:バックナンバー

2022年最初の投稿に、筆者にしては長文すぎる(!?)のRTOS vs. ベアメタルを投稿したのは、今年以降、RTOS開発が急速に普及する可能性があるからです。

クラウド接続からRTOS必要性を示しましたが、セキュリティなど高度化・大規模化するIoT MCU開発には、移植性の高さや多人数開発のRTOSメリットが効いてきます。

また、半導体不足が落ち着けば、RTOS向き高性能MCUの新しいデバイスが、各ベンダから一気に発売される可能性もあります。スマホ → 車載 → IoT MCUが、半導体製造トレンドです。

※現状のMCUコア関連投稿が下記です。
Cortex-M33とCortex-M0+/M4の差分
Cortex-M0からCortex-M0+変化
Cortex-M0/M0+/M3比較とコア選択

IoT MCU開発が複雑化、高度化すればする程、前章のベアメタル開発や、組込み開発の基礎技術:基本のキの把握が、開発者にとって益々重要になります。

組込み開発、基本のキ:バックナンバーを示します。年頭、基本を再確認するのはいかがでしょう?
組込み開発 基本のキ:組込み処理
組込み開発 基本のキ:IoT MCUセキュリティ



RAファミリFSP v3.5.0更新

ルネサスRAファミリのFSP(Flexible Development Package)が、12月9日、v3.5.0へ更新されました。RAファミリの特徴は、コチラの3章に投稿済みです。下記が、抜粋した2項目です。

・ARM Cortex-M33/M23/M4コア採用でIoTセキュリティ強化
・Eclipse IDEベースのKeilやIARなどのARM Ecosystemと無償GNUコンパイラ利用可能

RAファミリヒットの予感!

筆者は、RAファミリが、IoT MCU日本人開発者にヒットする予感がします。

Arduinoシールドコネクタ付き+外付けエミュレータ無しで開発できる低価格評価ボード、コンパイラ容量制限無し、CMSIS開発などは、競合他社に追いついた感じですが、FreeRTOS/Azure RTOS両RTOSへの早い対応、オリジナル内蔵周辺回路や買収各社のフロントエンド化、SOTBなどの製造プロセスは、多くのルネサス開発経験者を引き付ける魅力を持つからです。

この魅力を最大限引出すツールが、FSPです。簡単に言うと、HAL(Hardware Abstraction Layer)API生成SDK(Software Development Kit)です。ルネサスは、Smart Configuratorと呼んでいますが…。

RA開発ポイントFSP構成

FSP v3.5.0の詳細は、ユーザーズマニュアル:UM(英文、全3206ページ)を参照してください(ページ数が多いのは、Chapter 4以降がAPIレファレンスだからです)。FSP構成を示します。

Flexible Software Package構成
Flexible Software Package構成

FSP生成HAL APIを利用すると、RAファミリ共通のアプリケーション開発ができます。また、FSPは、例えばREファミリなど、他のCortex-M系ファミリへ発展する可能性もあります。HALが、コア差を隠蔽できるからです。

※図からRenesas版CMSISと考えると判り易く、CMSISは、コチラの関連投稿3章を参照。

IoT MCUでは、アプリケーションの流用性、移植性は重要です。従来よりも開発規模が大きく、しかも、セキュリティなどのIoT技術適用には、業界標準インターフェースでの機能流用が効率的だからです。既存アプリケーションを出来るだけ流用し、顧客の新規追加開発部分を最小化することで早期開発を実現します。

RAファミリの開発ポイントは、FSPです。

UMの2.3 Tutorial: Your First RA MCU Project – Blinkyと2.4 Tutorial: Using HAL Driversを読んで解る方は、2.5 Primer: ARM TrustZone Project Developmentで、IoT MCUポイント:TrustZoneの理解をお勧めします。具体的なTrustZoneサンプルコードは、検索中です。見つかりましたら、本ブログで投稿します。

2.3や2.4が不明な方は、コチラの関連投稿を参考にしてください。

日本語FSP解説

RAファミリビギナーズガイド
RAファミリビギナーズガイド

日本語FSP解説が欲しい方は、RAファミリビギナーズガイド(全114ページ)の2~3章が役立ちます。但し、掲載サンプルコードは、UMに比べ少数です。

このガイドで注目して頂きたいのが、P98の下記です。

“セキュリティは重要です。また、それは後で追加することはできないため、初期段階から考える必要があります。少なくとも、コストのかかる再設計があれば、それに基づいてアプリケーション全体を破棄することも必要になるかもしれません。これは建物の土台と考えてください。それ自体は……。
それでも、この接続された世界の全てのアプリケーションにはセキュリティが不可欠なのです。”

IoT MCUのセキュリティ土台には、Cortex-M33のTrustZoneが業界標準です。Cortex-M33のRAファミリをプロトタイプ開発に使う理由は、後で追加できないTrustZoneが土台に内蔵のためです。

プロトタイプ開発初期は、TrustZone未使用でも構いません。後でIoTセキュティを追加する際に、プロトタイプ開発で使った土台を変更せずに内蔵TrustZoneを使えること、これがRAファミリをIoTプロトタイプ開発に使う最大メリットです。

FSP活用RAテンプレート構想

RAテンプレートは、FPB-RA6E1とFPB-RA4E1両方で動作確認
RAテンプレートは、FPB-RA6E1とFPB-RA4E1両方で動作確認

FSPには、多くのサンプルコードが掲載されています。弊社は、これら複数サンプルコードを簡単に流用し、早期プロトタイプ開発に使えるRAテンプレートv 1.0を、来年1Q目途に開発、RAファミリ中核MCUのRA6/4シリーズ評価ボードRA6E1/RA4E1の両方で動作確認し、販売を予定しています。

※既に販売中の各種テンプレートは、コチラをご覧ください。

最初にリリースするRAテンプレートv 1.0は、UM 2.3/2.4理解や基礎的なRA習得に役立つ初心者向けベアメタルプロトタイプ開発テンプレートとし、中級以上の開発者向けRTOS関連やTrustZoneは、v2.0以降で対応予定です。

RAテンプレートを使えば、FSP掲載の複数サンプルコードを流用したIoTプロトタイプ開発が、早期にできます。

IoTスキル獲得最適RAファミリ

全てのモノがネットへ接続するIoT時代は、開発対象が増えますが、“競合”開発者も増えます。本ブログ読者には、スキルを活かした更なる効率的開発が求められます。

読者個人によるIoTキーポイントのスキル習得は、自分への先行投資です。キーポイントとは、現行MCU開発スキルに加え、IoTセキュティとRTOSです。

個人レベルでこれらセキュティとRTOSスキル獲得に、Cortex-M33のRAファミリは最適です。前章の低コストの評価ボードと業界標準Eclipse IDEベース“無償”ARM Ecosystem(=e2 studio+FSP)が、ルネサスサイトから簡単に入手でき、入手後、スグに開発着手できるからです。コンパイラ容量制限もありません。

また、初心者はもちろん、中級以上のIoTスキル習得意欲を満たすルネサス公式情報も豊富です。コチラが、公式RAファミリ動画です。短い動画が多数ありますので、すきま時間でのチェックに適しています。

e2 studio日本語メニュー vs. 英語メニュー

e2 studio日本語メニュー化
e2 studio日本語メニュー化

日本語メニューのe2 studioを使うには、インストール時、カスタマイズ機能でJapanese Language Supportコンポーネントの手動追加が必要です。筆者は、英語メニューを愛用していますが、FSP v3.5.0更新を期に、試しに日本語化してみました。

日本語メニューは、横幅が広くなりますがショートカットキー付きです。また、全メニューが日本語訳になる訳ではありません。好みの問題ですが、競合他社Eclipse IDE同様、英語の方が使いやすいと筆者は感じました。

WindowsのTPM使い方

Windows 11アップグレート要件のTPM 2.0の使われ方を調査しました。WindowsがどのようにTPMを使っているかを知れば、11アップグレート足切り要件を筆者が納得し、加えて、IoT MCUセキュリティのTrustZone開発工数を顧客へ説明する時、参考になるかもしれないからです。

WindowsのTPM

Windows 10から追加・変更された現行Windows 11の機能は、生産性や弊社ビジネス向上に直結するものは無いと思っています。対処法などは、最悪Windows 11へアップグレードする際に備え収集中です。

アップグレード要件で最も不満な点が、TPM 2.0です。このTPMで何を行い、なぜ要件になったのかを整理してみます。

TPM機能(出展:PC Watch記事)
TPM機能(出展:PC Watch記事)

その結果、TPM 2.0は、11アップグレード要件というよりも、国際標準規格制定団体:Trusted Computing Group(TCG)が2014年10月にリリースし、TPM 2.0としてISO/IEC標準セキュリティ規格となったPCの普及が目的、と結論しました。

来年秋のWindows 11大型更新後、弊社PCの11アップグレート状況が変わるか楽しみです。

TPM利用Windows HelloとBitLocker

暗号化、乱数⽣成、暗号鍵⽣成と保存、デジタル署名がWindowsのTPM 2.0チップ利用箇所で、MacのBoot CampでもWindows 11が動作しない理由は、コチラに良くまとまっています。

ちなみに、TrustZone対象も、TPM 2.0と同様になる可能性も高く、特に、暗号化アルゴリズム可変の機能は、優れています。アルゴリズムを変更するWindowsのOTA相当にも注目しています。

Windowsは、これらTPM機能を利用し、パスワードを使わずにWindowsへサインインする「Windows Hello」や、内部ストレージ暗号化の「BitLocker」を実行します。また、「Microsoft Azure Attestation」(MAA)などにも使うようです。

WindowsのTPM使い方例(出典:セパゴのITブログ)
WindowsのTPM使い方例(出典:セパゴのITブログ:https://www.sepago.de/)

BitLockerやWindows Helloは、Windows 10でも利用した企業向けノートPCユーザもいるかもしれません。ただ、個人ノートPCや自宅PCユーザは、Microsoftアカウントを使うWindows HelloやPINの代わりに、ローカルアカウントの利用者が多いハズです。手間が掛からないことや、PC使用履歴をクラウド記録されるのが嫌だからです。

Windows 11は、Microsoftアカウント利用が基本ですが、アプリケーション個人認証にスマホ併用も必須になりつつあります。例えば、Googleログインも、スマホ2段階認証が有効に変わりました。

Googleログインの2段階認証プロセス
Googleログインの2段階認証プロセス

従って、例えWindows 11でTPMパスワードレス認証後でも、Googleログイン2段階認証は必要になる訳です。一方、TPM 2.0未搭載Windows 10でも、BitLockerやWindows Helloは利用でき、スマホ2段階認証などで様々なアプリケーションのセキュリティにも対応可能です。

つまり、TPMは、Windows 11の技術的アップグレード要件ではなく、OSセキュリティ強化が目的、というのが筆者TPM評価です。

ちなみに、ローカルアカウントによるWindows 11セットアップ方法は、コチラにまとまっています。

TPM理由

Microsoftが強調するOSセキュリティ強化には、TPMと手間暇、処理能力が必要です。処理能力要件が、Windows11対応CPUです。Windows 10が正常に動作するCPUでも、この能力要件を満たさないCPUも多数あります。理由は不明ですが、今回はTPMにフォーカスするため追求しません。

さて、筆者のようなセキュリティ素人には、TPMセキュリティ強化分と便益(手間暇)比を、ゲーム/個人/企業などのPCユースケース毎に評価、公表してほしいです。現行Windows 11は、最強セキュリティを求める企業向けユーザのみを対象にしている気がします。

仮に、Windows 11普及にTPMセキュリティ強化が障害になっているとMicrosoftが判断すれば、コチラの関連投稿2章のユーザアカウント制御のようなセキュリティを弱める対策を打出すと思います。

ユーザアカウント制御の設定
ユーザアカウント制御の設定

好みのセキュリティレベル設定は、個人ユーザに歓迎されるハズです。既に、TPM回避Windows 11インストール公式発表などがその現れです。これは、Windows 10サポート終了2025年10月14日が近づけば、より効果を発揮します。

しかし、Windows 11の魅力が現行のままなら、2025年10月以降は、Mac/Linuxなどの別OSやWindows 365などに乗換えるユーザも少なくないと思います。11乗換魅力の無さが、普及を妨げているからです。

TPM の理由は、最もセキュリティに敏感で、新PC購入/入替えも容易な企業向けPCユーザへ、ISO/IEC標準セキュリティ規格PCへの買換え動機付けだと思います。

TrustZone Cortex-M33はM4比2倍説明応用

TrustZoneとTPMの類似性
TrustZoneとTPMの類似性

IoT MCU顧客へ、Cortex-M33 TrustZone活用開発工数は、Cortex-M4比2倍となる説明が必要と前稿で書きました。

2倍根拠は、Cortex-M33/M4動作周波数比、Secureと通常の2プロジェクト同時開発必須などです。これらは、目に見える差分です。しかし、セキュリティに関しては、リスクが増減という話ばかりで、数値で表せないセキュリティ差分を、顧客に納得してもらえるかは、正直分かりません。

しかも、TrustZone活用には、通常の開発スキルに加え、セキュリティスキルも必要です。組込み開発は、1人で全て担当することも多いので、セキュリティ知識は持てても、利用スキル:暗号化ライブラリ選択やAPI利用法などに限定したいハズです。

セキュリティの詳細内容は、一般的なIoT MCU開発者には背景知識が少ないため、根本理解は困難でしょう。この状況で、セキュリティ利用スキルも必要となるTrustZone活用開発の差分を、顧客に上手く納得してもらうには、開発者として何らかの工夫も有効かもしれません。

Windows 11のTPMも、上記TrustZoneと全く同じ状況だと思います。そこで、現時点のTPMを整理しました。

今後Microsoftが、どのようにTPMの理由をユーザへ説明(12/4更新)していくかを、IoT MCU顧客へのTrustZone Cortex-M33開発工数が、M4比、2倍の説明にも応用したいと考えています。

実務的には、セキュリティの根本理解よりも、この方法の方が近道の気がします😅

ルネサスRAファミリカタログ2021.11更新

ルネサスRAファミリカタログが、最新版2021.11に更新されました。高度セキュリティTrustZone搭載IoT MCUとして、弊社は、ルネサス)RAファミリとSTマイクロ)STM32L5/U5に注目しています。

本稿は、RAファミリ中核のRA4とRA6両シリーズ特徴、TrustZoneオーバーヘッド処理がM4比2倍を説明し、評価ボードを紹介します。

RAファミリのCortex-M33とCortex-M4

ルネサスRA4シリーズのグループ構成(出展:RAファミリカタログ)
ルネサスRA4シリーズのグループ構成(出展:RAファミリカタログ)

ルネサスオリジナルやARM Cortex-M系など、多種多様なMCUコアを販売しているルネサスのRAファミリ位置づけと開発方法は、コチラの関連投稿にまとめ済みです。Cortex-M系競合他社より出遅れ感もありますが、最新RAファミリカタログを見ると、TrustZone対応Cortex-M33搭載IoT MCUの精力的製品化が感じられます。

Cortex-M33搭載RAファミリの中核MCUが、RA4/6シリーズです。RA2シリーズはCortex-M23搭載、RA8シリーズは未発売です。ターゲットアプリケーションは、カタログP5にまとまっています。

※Cortex-M33 ≒ Cortex-M4後継、セキュティ機能強化コア
※Cortex-M23 ≒ Cortex-M0+後継、セキュティ機能強化コア

Cortex-M33とCortex-M0+/M4差分
Cortex-M33とCortex-M0+/M4差分

RA4/6シリーズには、Cortex-M4搭載MCUもあります。これは、TrustZoneまでの高度セキュリティが不要なアプリケーション向けのMCUだと思います。Cortex-M33のTrustZone活用には、内蔵Flashのパーティション分割やSecureステートとNon Secureステート切替えなど、高度セキュリティ対応オーバーヘッド処理が必要になります。

同一シリーズ内でCortex-M33とCortex-M4の動作周波数が異なる理由は、開発アプリケーション移植を考慮すると、これらオーバーヘッド処理のためにM4比2倍の高速化が必要だからと推測します。これは、コチラの関連投稿で示したCortex-M33とCortex-M4比較や開発工数比評価の内容とも一致します。

つまり、TrustZoneの高度セキュリティは、M4比2倍もMCU能力を消費する可能性がある訳です。

コスト意識が非常に高いIoT MCU顧客に、このM4比2倍を理解してもらえるかは分かりません。前稿では、筆者がWindowsユーザで、TPM足切り要件に不満でした。同様にIoT MCU顧客も、我々開発者が高度セキュリティ内容を丁寧に説明しないと納得してもらえないかもしれません。

以後は、Cortex-M33搭載RA4とRA6評価ボードをそれぞれ紹介します。

RA4シリーズ

RA4シリーズの特徴は、Cortex-M33/100MHz性能と低消費電力動作です。Digi-Key記事が、判り易く特徴をまとめています。記事紹介のRA4評価ボードが、弊社も使用中のRA4E1 Fast Prototype Board (Cortex-M33/100MHz、Flash/512KB、RAM/128KB)です。

※Eは、RA4シリーズ開発エントリポイントを示します。つまり、他RAシリーズやファミリへのアプリケーション移植性に優れた汎用MCUを示しています。

RA4E1 Fast Prototype BoardへFreeRTOSを適用
RA4E1 Fast Prototype BoardへFreeRTOSを適用

弊社は、既にRA4E1 Fast Prototype Boardを使ったFreeRTOSと、統合開発環境e2 StudioでのFlexible Software Package(FSP)の使い方を投稿済みですので参照してください。FSPとは、RAファミリ共通のSDK(Software Development Kit)のことです。

但し、どちらの投稿もTrustZone未使用です。別途投稿予定のTrustZone使用版で、2倍比を評価できればと考えています。未使用のTrustZoneですが、プロトタイプ開発初期から高度セキュリティに配慮すること、顧客がTrustZoneを要求した場合、開発プロトタイプをそのまま活用できるメリットがあります。

※TrustZone使用版は、検討中です。当面の課題は、後の章に示しています。

RA6シリーズ

EK-RA6M4(出展:ユーザーズマニュアル)
EK-RA6M4(出展:ユーザーズマニュアル)

RA6シリーズの特徴は、RA4比、より高速なCortex-M33/200MHz搭載です(カタログには、最大240MHzと記載されていますが、発売製品はどれも200MHzです)。モータ制御などに向いています。やはりカタログよりも、Digi-Key記事のほうが、RA6シリーズ特徴理解がし易いです。

※Mは、モータ制御向けを示します。その他、カタログ記載のWやTなどのサフィックスも、内蔵周辺回路のアプリケーション適合性を示します。

記事紹介のRA6M評価ボードが、EK-RA6M4です。モータ制御先進アナログ回路や大容量Flash内蔵ですが、個人購入するには高価な気がします。顧客モータ仕様変更に柔軟に対応するには、汎用RA6E1で共用部分を早期開発し、先進制御部分のみを差分開発する方法が効果的だと思います。

TrustZoneサンプルコード課題

TrustZone概念は理解しても、実装はどうか? が普通のソフトウェア開発者には判り難い点です。秘密鍵など、何をSecure領域に書込み、いつ読込むかなど、セキュリティ専門家解説付き具体的サンプルコードを探していますが、適当なものが今のところ見つかりません。

TrustZone利用手順と保存対象は、接続クラウド側にも多少依存するでしょうが、ほぼ決まっていると思っています。具体的サンプルコードがあればテンプレート化も可能か、というのが現状です。

Blogテーマ変更

本ブログテーマを変更しました。本年1月変更に続き2回目です。変更理由は色々ありますが、投稿記事の「カテゴリ」と「タグ」が、投稿最後に表示される点が一番の変更点です。

今後とも本ブログ、よろしくお願いいたします。

Bluetooth 5.3 LE対応RA開発中

Bluetooth 5.3対応の開発中RA MCU
Bluetooth 5.3対応の開発中RA MCU

2021年10月21日、ルネサスは、最新規格Bluetooth 5.3 Low Energy(LE)対応のRAファミリ新MCUを開発中と発表しました。RA搭載予定のBluetooth 5.3 LE機能と、ルネサス32ビットMCU におけるRAファミリの位置づけを示します。

搭載予定の最新Bluetooth 5.3 LE機能

PCとキーボード、スマホとヘッドホン間など近距離低消費電力無線通信規格としてBluetooth 5は、広く用いられています。MCU搭載例も多く、本ブログでも何件か投稿してきました(STマイクロのSTM32WB、Cypress/InfineonのPSoC6、NXPのKW41Z、Bluetooth 5規格)。

RAファミリでもBluetooth 5対応RA4W1が発売中です。開発中のRAは、新規格Bluetooth 5.3対応MCUです。

Bluetooth SIGが2021年7月13日に発表した新規格Bluetooth 5.3は、Bluetooth 5に、スループットと信頼性、エネルギー効率向上など様々な機能を追加しました。詳細は、Bluetooth SIG サイトのBluetooth Core Specification v5.3で判ります。

開発中の新RAには、これらBluetooth 5.3機能に加え、Bluetooth 5.1で追加された方向検知機能、Bluetooth 5.2で追加されたステレオオーディオ伝送用アイソクロナスチャネルも対応予定です。また、ソフトウェア無線(SDR)機能の搭載により、後日リリースされる新たな規格への移行も可能だそうです。

つまり、新RAは、Bluetooth 5以降の新Bluetooth機能満載のIoT MCUで、しかも、SDRにより新しい機能追加も可能な、“万能”近距離低消費電力無線通信付きIoT MCUになりそうです。

2022年1~3月サンプル出荷予定

最新規格Bluetooth 5.3 Low Energy対応、開発中RA MCUのサンプル出荷は、2022年第1四半期(1~3月)が予定されています。

RAファミリ位置づけ

独自コア、ARMコア、開発環境など様々なルネサス32ビットMCUファミリ差が一目で判る図が、コチラの記事にあります。

RAファミリ位置づけ(出展:記事に加筆)
RAファミリ位置づけ(出展:記事に加筆)

IoT MCU開発者の立場からRAファミリを分析すると、

・ARM Cortex-M33/M23/M4コア採用でIoTセキュリティ強化
・Eclipse IDEベースのKeilやIARなどのARM Ecosystemと無償GNUコンパイラが使える

などRXファミリやSynergyでは不可能であった、手軽で低コスト、個人レベルでも開発可能な32ビットIoT MCUと言えます。

RAファミリ向けルネサスEcosystemは、Eclipse IDEベースのe2 studioです。また、RAファミリ専用Flexible Software Package(FSP)によるAPI生成ツールは、ピン互換性、周辺回路共通性があるため、RAファミリ内での開発ソフトウェア移行や移植も容易になる特徴があります。

無償GNUコンパイラのFlash容量制限などもありません。

RAファミリ開発方法

開発中のBluetooth 5.3 LEが新たに周辺回路に追加されますが、e2 studioやFSPによるRAファミリ開発方法は、汎用RA MCUのRA4E1 Fast Prototype Boardの使い方や、FreeRTOSの使い方と同じです。

RAファミリ開発の早期着手、習得したい方は、上記リンクを参考にしてください。

Flexible Software Package v3.4.0更新

FSPは、10月7日にv3.4.0へバージョンアップしました。

e2 studio 2021-10のHelp>check updatesではFSP v3.3.0から自動更新しません。FSPサイトから最新v3.4.0をダウンロードし、手動でアップグレート更新する必要があります。

Flexible Software Packageのアップグレード
Flexible Software Packageのアップグレード

v3.4.0を別の場所にインストールすれば、旧v3.3.0との併存も可能です。

AI、Security&Cloud、Ecosystem オンライン・コンファレンス

AI、Security&Cloud、Ecosystem(=開発環境)の3日間オンライン・コンファレンスと展示会が、STマイクロ主催でライブ配信されます。STM32ユーザは勿論、他社ユーザでも組込みシステム開発ヒントの可能性があります。

STM32 Innovation Day 2021 11月10日~12日(オンライン)
STM32 Innovation Day 2021 11月10日~12日(オンライン)

AI、Security&Cloud、Ecosystemプログラム概要

11月10日(水)~12日(金)の毎日13時~17時間のライブ配信で、登録すればお好きな内容のみ視聴も可能です。登録方法は、後で示します。

AI、Security&Cloud、Ecosystemのプログラム概要
AI、Security&Cloud、Ecosystemのプログラム概要

詳細プログラムは、コチラからダウンロードできます。

見どころ

10日(水)AI:STM32MCUでの組込みエッジAIデモ。

11日(木)Security&Cloud:Cortex-M33コアSTM32U5、セキュリティ・フレームワークSTM32Trust、AWSクラウド。

12日(金)Ecosystem:STM32MCU機能安全ソフトウェア・パッケージ、Azureクラウド。

13:30~14:00の各分野エキスパートによる基調講演、バーチャル・イベント会場の最新製品紹介やデモなども面白そうです。

他社ユーザの方は、利用中MCUとの差分が明確に判る絶好のチャンスです。

登録方法

事前に、コチラで仮登録し、折返しメールで10分以内に本登録します。

コンファレンス後、アンケートに回答するとMCU評価ボードなどが当選するかもしれません。