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も進化中ですので、状況観察します。

ルネサス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との併存も可能です。

RA4E1 Fast Prototype BoardのFreeRTOS使い方

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

RAファミリ評価ボードRA4E1 Fast Prototype Board (Cortex-M33/100MHz、Flash/512KB、RAM/128KB)(以降FPB)の、スイッチS1でLED2を点灯するFreeRTOS適用例を示します。RAファミリビギナーズガイド9章記載のEK-RA6M4評価キットを使った処理内容と同じです。

e2 studio 2021-10は、Project>Change Deviceで対象MCUデバイス変更機能がありますが動作しません。そこで、ガイド掲載のEK-RA6M4を手動でRA4E1へ変更し、FPBでFreeRTOSのセマフォを利用し、S1押下げ割込みとLED2トグル点灯を同期させるFreeRTOSサンプルコードを示します。

このコードを使い、前稿よりも具体的にFPBとFlexible Software Package(以降FSP)の使い方、今回は使わないTrustZoneのメリットを示すのが、本稿の目的です。

RA4E1 Fast Prototype Board(FPB)のRTOSとTrustZone

IoT MCUをクラウド接続するには、RTOSが必要です。AWS(Amazon Web Services )接続にはFreeRTOSライブラリ、Microsoft Azure接続にはAzure RTOSライブラリの利用が前提だからです。

また、クラウド接続には、TrustZoneなどハードウェアによるセキュリティ対策も要求されますので、RTOSとTrustZoneは、IoT MCUの必須2技術です。

ハードウエアセキュリティは、開発後、簡単に追加することが困難です。今回はTrustZone未使用ですが、IoTプロトタイプ開発にTrustZone内蔵Cortex-M33を用いるのは、例え未使用でも製品セキュリティ処理の具体的検討ができるなど、IoTセキュリティを開発初期から考慮した設計となるからです。

これが使わないTrustZoneのメリットです(TrustZone使用例も、いずれ投稿予定)。

本稿は、先ずFreeRTOSをFPBへ適用します。FreeRTOS新規プロジェクト作成、API生成ツールFSP設定、FSP生成ファイルへのタスク追記の順に説明します。

Step1:FreeRTOS新規プロジェクト作成

最新版e2 studio(2021-10)の新規FreeRTOSプロジェクトは、File>New>C/C++Projectとクリックし、①~⑥の手順で作成します。

FreeRTOS新規プロジェクト作成
FreeRTOS新規プロジェクト作成

②プロジェクト名は、任意です。③Boardは、PFB-RA4E1を選択します。

④TrustZone未使用時のプロジェクトを、“Flat”と呼びます。これは、TrustZone使用時、セキュアと非セキュアの2プロジェクト並存が必要となりメモリ領域を分割することに対する、平坦なメモリ使い方に起因していると思います。

※メモリ領域分割は、PCハードディスクのパーティション分割をイメージして頂ければ判り易いでしょう。例えサイバー攻撃を受けても、物理的に侵入できないメモリ領域を作り、ここへ最重要情報やソフトウェアを保存する訳です。

⑤FreeRTOSを選択します。ベアメタル(No RTOS)とAzure RTOSも選択可能です。⑥Minimalを選択し、FinishクリックでFreeRTOS(TrustZone未使用)新規プロジェクトが完成です。

各選択肢を変えると、前稿で説明した多種類の新規プロジェクトが作成できることが解ります。

Step2:Flexible Software Package(FSP)設定

Flexible Software Package (FSP)設定
Flexible Software Package (FSP)設定

新規プロジェクト作成のFinishクリックで、FSPパースペクティブオープンを聞いてきますので、開きます。

①プロジェクトSummaryが表示されます。Stacksタブを選択、②New Stackをクリックし、External IRQ Driver on r_icuを選択します。新しい外部割込みドライバがStackに追加され、③プロパティが表示されます。

FPBのユーザスイッチS1は、P205(IRQ1)に接続済みです。そこで、③プロパティのirq0をirq1、TriggerをFalling、Digital FilteringをEnable、Callbackをexternal_irq1_callbackに変更します。

次にセマフォ追加のため、④ObjectsのNew Objectsをクリックし、Binary Semaphoreを選択します。⑤プロパティSymbolをg_s1_semaphoreに変更します。

RA4E1 Fast Prototype BoardのSW1 P205(IRQ1)の確認
RA4E1 Fast Prototype BoardのSW1 P205(IRQ1)の確認

最後に、⑥pinsタブをクリックし、ユーザスイッチS1:P205(IRQ1)とIOピン割当てをGUIで確認します。

以上でFSP設定は完了です。Generate Project Contentをクリックすると、APIや割込みコールバック関数、関連ファイルが自動生成されます。

Step3:FSP生成ファイルへタスク追記

FreeRTOSセマフォ同期処理
FreeRTOSセマフォ同期処理

FSPが生成したファイル:led_thread_entry.cに上記コードを追加します。このコードは、LED初期化と無限ループ処理から構成されます。RAビギナーズガイド掲載のirq10をirq1へ変更したLEDタスクです。

コールバック関数external_irq1_callbackは、Developer AssistanceのLED Threadを開くと一番下に割込みコールバック関数が生成済みですので、これをドラッグ&ドロップして追加します。

LEDタスク追加後、ビルドしFSBへダウンロード、デバッガ起動後、再開を2回クリックして実行中の様子が上図です。FSBのS1クリックでLED2がトグル点灯します。

FreeRTOS Queueサンプルコード

前章は、RAファミリビギナーズガイド9章のEK-RA6M4評価キットFreeRTOSセマフォサンプルコードを、RA4E1 Fast Prototype Board(FPB)へ流用したコードです。変更箇所は、irq10をirq1へ変えただけです。

FSPには、FreeRTOS Queueサンプルコード:freertos_fpb_ra4e1_epも付属しています。これら2つのサンプルコードを理解すれば、セマフォとQueueを使う基本的なFreeRTOSソフトウェア開発が可能です。

FreeRTOS待合せ手段としては、セマフォ/Queue以外にもMutexやイベントグループなどの手段もあります。弊社ではFreeRTOS基礎固めを目的として、Hardware Independent FreeRTOS Exampleを応用したセマフォ/Queue活用のFreeRTOSテンプレート化を目指しています。RA/REテンプレートもこの方針で開発する予定です。

この方針で開発したNXP版FreeRTOSアプリケーションテンプレートは、コチラから概要がダウンロード可能です。

まとめ

RA4E1 Fast Prototype Board(FPB)へ、RAファミリビギナーズガイド掲載FreeRTOSサンプルコードを流用し、ユーザスイッチS1とLED2点灯をセマフォで同期させました。

FreeRTOS新規プロジェクト作成、Flexible Software Package(FSP)設定、FSP生成ファイルへのタスク追記の具体的操作手順を示しました。

ガイド9章には、更に詳細な説明がありますので、参考になります。例えば、スイッチ割込み優先度12を利用する理由、systick優先度15が予約済みであるなどです。

TrustZoneは未使用ですが、プロトタイプ開発初期からIoTセキュリティを考慮した設計ができるメリットがあります。

FSP付属Queueサンプルコードと本セマフォコードを使ってFreeRTOS基礎固め目的のRA/REテンプレート開発を進めます。

RA4E1 Fast Prototype Boardの使い方

前稿のRAファミリ評価ボードRA4E1 Fast Prototype Board(以降FPB)を入手、RA/REテンプレート検討に着手しました。

FPB開発に用いるルネサスIDE:e2 studio(以降e2)とAPI生成ツール:Flexible Software Package(以降FSP)は、NXPやSTマイクロなどのEclipseベースIDEの利用者が?に思う箇所があると思います。

ルネサスIDE:CS+ユーザでも、同様にこの?を感じると思いますので、対策と評価ボードFPBの使い方を示します。

RA4E1 Fast Prototype Boardとe2 studio
RA4E1 Fast Prototype Boardとe2 studio

e² studio

Eclipse IDEをベースとしたRAファミリ統合開発環境:IDEが、e2、API生成ツールが、FSPです。

e2は、ARMコアを含む全てのルネサスMCU開発用の新世代IDEで、古くからあるRL78ファミリやRXファミリなどのルネサス独自コア専用統合開発環境CS+の後継IDEとして登場しました。但し、CS+は、現在でもRL78/RXファミリ開発に使えます。

e2は、MCUファミリ毎にコンパイラを切替えることにより、全ルネサスMCUの共通IDEとして動作します。MCUファミリのコンパイラは、普通1種類です。ところが、RAファミリには、GNUとARM Compiler V6の2種類が用意されており、どちらも無償です。

GNUとARM Compiler V6?

e2インストール時、デフォルトでインストールされるコンパイラは、GNUです。ARM Compiler V6は、後から追加インストールが必要です。最初の?は、両コンパイラの“違いは何か”です。

次章で示すFSPやTrustZone利用に差が生じるのであれば、問題です。

ルネサス資料を探しましたが、結局、コンパイラ差は分かりません。最近では殆ど行わないアセンブラデバッグが無ければ、コンパイラはどちらでも構いませんので、デフォルトGNUで当面はOKとします。

Flexible Software Package (FSP)?

RAファミリ専用のAPI生成ツールが、FSPです。動画:Generating Your First RA FSP Project(8:25)で使い方が分かります。

Flexible Software Package構成
Flexible Software Package構成

簡単に説明すると、スタックと呼ぶ開発プロジェクトで使用するHALドライバやRTOSなどのミドルウェアパタメタをGUIで設定後、e2のGenerate Project Contentをクリックすると、Developer Assistance内に全てのAPIが自動生成され、その中から使用するAPIを、ユーザ自身でソースコード任意場所にドラッグ&ドロップする使い方です。

ソースコード任意場所にAPIを配置できるのは、親切とは言えません。NXPやSTマイクロのコード生成ツールでも、API追加箇所にコメント付きのソースコードが生成されます。しかし、FSPは、ソースコード上のどこにでもAPIを設置できます。

API使用順序、設置場所、パラメタの意味が予め解ってないと、適切なコーディングは困難でしょう。後述する多くの公式サンプルコード(スタック利用例)がありますので、これらを参考に習得する必要があります。

hal_entry.c?

e2 studioのra_genとsrcフォルダ
e2 studioのra_genとsrcフォルダ

Generate Project Contentのクリックで生成されるのがAPI本体、つまり、ra_genフォルダ内のmain.cを含むスタックのドライバ関数群です。ra_genフォルダは、FSPが生成するコードの格納場所です。

これらとは別のsrcフォルダ内に見慣れないhal_entry.cファイルがあります。srcフォルダは、ユーザが追加するコードの格納場所です。

FPB出荷時にインストール済みのquickstart_fpb_ra4e1_epプロジェクトを読むと、main.c→hal_entry.c→user_main.cとコールされ、結局、user_main.cに一般的なIDEでユーザが追記する初期設定と無限ループを記述するのが、FSPでのユーザソースコード記述作法のようです。

※一般的なIDEでユーザが追記する初期設定と無限ループについては、基本のキ3章まとめを参照してください。

quickstart_fpb_ra4e1_epのuser_main処理
quickstart_fpb_ra4e1_epのuser_main処理

readme.txt?

公式サンプルコードをe2へインポート後、readme.txtでサンプル動作内容やFPB追加配線の必要性が分かります。バグだと思いますがe2(2021-07)は、サンプルコード付属readme.txtがプロジェクト内へインポートされません。

筆者は、手動でインポートしました。例えば、sci_uart_fpb_ra4e1_epプロジェクトは、追加配線無しではTera Term動作確認ができませんので、readme.txtを読み、追加配線が必須です。

RA4E1 Fast Prototype Board(FPB)の使い方

IoT MCUの機能と消費電力を最適化したRAファミリのRA4E1グループ評価ボード:RA4E1 Fast Prototype Board(FPB)の特徴は、以下2点です。

  • TrustZone
  • 低電力動作(Sleep > Snooze > Software Standby > Deep Software Standby)
RA4E1ブロック図
RA4E1ブロック図

TrustZoneの使い方は、RAファミリビギナーズガイドの11章が参考になります。

FreeRTOS利用を含むサンプルコードはコチラ、低電力動作サンプルコードはコチラからダウンロードできます。前章のquickstart_fpb_ra4e1_epやsci_uart_fpb_ra4e1_epプロジェクトは、初めのサンプルコード内にあります。

RTOSは、IoT接続先クラウドに応じてFreeRTOSかAzure RTOSの2種から選択可能です。また、通常の低電力動作:Sleepに加え、SnoozeやDeep Software Standbyなど超低電力動作モードも備えています。

プロジェクトは、ベアメタルまたはRTOS、TrustZone利用または非利用、の各選択肢がありますので4種類、FreeRTOSかAzureの選択を加えると、合計6種類の新規プロジェクト作成方法が可能です。

つまり、IoT MCUエッジ開発で必要となる様々なプロジェクト開発に、FPBだけで対応可能です。応用範囲の広い評価ボードで、IoTプロトタイプ開発に適しています。サンプルコード内容も豊富です。

まとめ

ユーザ視点からのベンダ各社がEclipse IDEをベースIDEに使うメリットは、IDEインタフェースがEclipseに似てくるので、ベンダが変わっても同じIDE操作性が得られることです。各社IDEで異なる部分は、周辺回路設定やAPI/コード自動生成の部分に限られるのが一般的です。

これら部分に加え、RAファミリ開発に使うe2 studioとFlexible Software Package は、無償コンパイラ選択、生成APIのソース追加方法、hal_entry.cなど、一般的なEclipseベースIDE利用者にとって?が生じる箇所が多数ありました。

ルネサス資料は多いのですが、肝心の?ポイントが解りにくいとも感じました。RAファミリ開発着手時は、これらに対し慣れが必要かもしれません。そこで、備忘録として本稿を作成しました。

なお、同じく前稿で示したREファミリについては、非常に良くまとまったREマイコンの使い方がルネサスサイトより入手できます。

RA4E1 Fast Prototype Board(Cortex-M33/100MHz、Flash/512KB、RAM/128KB)は、低価格で入手性もよくTrustZoneやRTOS、低電力動作など、幅広い知識や技術が要求されるIoT MCU開発の素材として優れています

現状RAファミリ資料の纏まりは、REファミリと比べると今一歩ですが、改善されると思います。開発に必要となる技術レベルが少し高いのですが、e2 studioとFlexible Software Package (FSP)、RA4E1 Fast Prototype Board(FPB)と豊富なサンプルコードを使ったIoT MCU開発は、好奇心を満たすIoT MCU習得へ向けたお勧めの開発環境と評価ボードと言えるでしょう。

弊社ブログは、RA/REテンプレート開発を目指し、継続して関連情報を投稿します。

Windows 11アップグレード可能通知:FYI

Windows 11を実行できます
Windows 11を実行できます

10月5日リリースWindows 11アップグレード可能通知が弊社PCへ届きました。今月リリースWindows 10 21H2で運用し、1年程度の11評価結果を見てアップグレードを予定しております。ご参考まで。

IoVとIoT

IoV:Internet of VehiclesやV2X:Vehicles-to-Everything通信により、車載半導体チップとソフトウェア需要が指数関数的に増加、ユーザの自動車選択基準が、エンジンなどのメカから車載ソフトウェアへ移行しつつある、という記事がEE Timesに記載されました。

これらIoV状況が、IoTへ与える影響について考えてみました。

IoVとIoT

IoVでユーザ選択基準が車載ソフトウェアへ変化
IoVでユーザ選択基準が車載ソフトウェアへ変化

車のカタログから、エンジン特性や足回りのメカ説明が消え、スマホ連動性や運転支援など車載ソフトウェアによるサービスの説明に変ったのはここ数年です。記事によると、車の新しいユーザ選択基準になりつつあるカーエレクトロニクスが、半導体業界にとってはスマホ以来の最大チャンスだそうです。

また、「CASE」で車載半導体はどう変わるのか(2021年9月15日、EE Times Japan)でも、自動運転と電動化が今後の車載半導体動向を左右すると結論付けています。
※CASE:Connected(通信機能)、Autonomous(自動運転)、Shared&Services(共有化/サービス化)、Electric(電動化)

年々向上するユーザのソフトウェア指向を満たす車載IoV業界、COVID-19の影響で停滞気味の民生IoT業界とは雲泥の差です。

車載半導体需要予測は初めの記事数値を参照して頂くとして、両記事のポイントは、ソフトウェア差別化や付加価値追加には、カスタムチップまたは、IP(Intellectual Property)などの組込みハードウェアが効果的という点です。これらIPには、セキュリティやエッジAIなどIoTへ流用できるものが数多くあります。

従って、IoVは、結果としてIoTも牽引すると思います。

但し、世界的半導体不足が続く状況では、優先度、調達コスト、多くの数量が確実に見込めるIoVが優勢、IoTはこの影響で、しばらくチップ供給不足や停滞が続くでしょう。

停滞気味のIoT側開発者として今できることは、IoV同様、IoTソフトウェア差別化に備えることだと思います。

IoT MCUのTrustZone、SOTB

IoTの観点から、IoTソフトウェア差別化や付加価値追加のための組込みIPと言えば、ARM TrustZone内蔵Cortex-M33コア、ルネサスの新製造プロセスSOTB:Silicon On Thin Buried Oxideなどが相当します。

アクティブ消費電力とスリープ消費電力両方を減らせるSOTBプロセス(出典:ルネサスサイト)
アクティブ消費電力とスリープ消費電力両方を減らせるSOTBプロセス(出典:ルネサスサイト)

例えば、TrustZoneが、高いセキュリティ効果を発揮するのはご存知の通りですし、SOTB製Cortex-M0+搭載ルネサスREファミリは、超低スタンバイ電流により太陽光発電環境などのエナジーハーベストでも電池交換不要を実現するなどです。

SOTBは、超低消費電力動作と高速動作を両立する革新的製造プロセスです。全てのルネサスMCUへ採用すれば強力な差別化技術になると思いますが、今のところ出し惜しみなのか(!?)戦略的なのか、REファミリにのみ採用中です。

一見、ASSP:Application Specific Standard Produceのようですが、これら差別化技術は、汎用MCUに採用された時に最も効果を発揮します。

従来のエッジMCUでの単純なアナログデジタル変換に加え、セキュリティや超低電力動作などのIoT化に伴う付加機能がIoT MCUには必須です。IoT付加機能内蔵MCUが、汎用IoT MCUになります。

IoT開発者は、これらIoT付加技術を今のうちに習得しておくことが必要です。

IoVとIoTの最も大きな差は、車載と民生半導体の電源仕様でしょう。IoVは、EV(Electric Vehicle)のモータ高出力要求に伴いバッテリーが12V供給から48Vへ高電圧化しつつあり、万一の耐圧やフェイルセーフが求められます。IoTは、低電圧(≦3.3V)電源で低圧化しつつあります。

RA/REテンプレート構想

残念ながらSOTB製REファミリ評価ボードは、まだ値段が高く、個人レベルでは手が出しにくい状況です。そこで、SOTBプロセスではありませんが、REファミリとソフトウェア互換性があると思われるCortex-M33コア搭載ルネサスRAファミリを、弊社テンプレート対象にと考えています。

RAファミリは、TrustZoneでIoTセキュリティへ対応しています。また、9月22日発売のRAファミリRA4E1グループの評価ボード:RA4E1 Fast Prototype Boardは、20米ドル台と低価格です。ルネサス独自コアではないため、コンパイラFlash容量制限もありません。

FPB-RA4E1 Fast Prototyping Board(出典:クイックスタートガイド)
FPB-RA4E1 Fast Prototyping Board(出典:クイックスタートガイド)

RL78/G1xテンプレートから新しいルネサスMCUをテンプレート対象に出来なかった理由の1つが、この容量制限です。ARMコア他社同様、GNUまたはARM Compiler V6が、e2 studioでRAファミリ開発に無償で使えます。

今のところRAテンプレートは、REへも使えると考えています。ARMコア差は、CMSIS:Cortex Microcontroller System Interface Standard やHAL:Hardware Abstraction Layerで吸収できるハズだからです。

ADC、SW、LED、UART(VCOM)などのIoT MCU基本動作をRA/REテンプレート共通部分でサポートし、TrustZoneや超低電力動作などRA/RE特徴を活かす部分は、共通部分へ特徴サンプルコードを追加する方法で実現できれば嬉しいと考えています。構想段階ですが、詳細は今後投稿します。

ルネサスARM Cortex-Mコアマイコン:RAファミリ発表

2019年10月8日、ルネサスエレクトロニクス(以下ルネサス)が、ARM Cortex-M4/M23搭載のRAファミリを発表しました。ARMコアMCU市場へ、遅ればせながら(!?)参入したRAファミリの特徴、競合他社と比較評価しました。

Runesas RAファミリ(出典:ルネサス)
Runesas RAファミリに加筆(出典:ルネサス)

RAファミリの特徴

「攻めやすく、守りにくい」、これがARMコアMCU市場だと思います。先行する競合他社は、NXP、STM、Cypress、TIなどです。

後発ルネサスが選択したARMコアは、Cortex-Mコア最高性能のCortex-M4と、低消費電力+セキュリティ重視のCortex-M23/M33(M4はRA8でマルチコア化、M33予定)です。

同じARMコアの先行他社へ攻め込むには、他社比魅力的な内蔵周辺回路が必要です。上図の静電容量タッチセンサ、アナログなどがこれに相当するはずです。Cypress特許の静電容量タッチセンサ:CapSenseとの性能比較が楽しみです。
※CapSenseの特徴は、コチラの投稿などを参照してください。

RAファミリのターゲット市場は、産業機器、ビルオートメーション、セキュリティ、メータ、家電などで、車載を除く次世代IoTエッジデバイスです。

RAファミリの市場(出典:RAファミリパンフレット)
RAファミリの市場(出典:RAファミリパンフレット)

セキュリティニーズが高いIoTエッジMCUでは、Cortex-M3クラスでも性能不足が懸念されます。シングルコアなら最低でもCortex-M4、セキュリティ強化Cortex-M23/33のRAファミリのコア選択は、理解できます。

RAファミリとRunesas Synergyの違い

ルネサスは、これまでRunesas Synergy™としてARMコアMCUを販売してきました。このRunesas SynergyとRAファミリの違いが、10月8日MONOistの“ルネサスがArmマイコンで本気出す、「RAファミリ」を発売”記事に説明されています。

筆者は、Runesas Synergy™は、ルネサスがアプリケーション開発を手伝う形式で、個人レベルでの開発には金額的に手を出しにくいMCU、一方、RAファミリは、競合他社と同様CMSIS:Cortex Microcontroller Software Interface Standardに則った形式でユーザがアプリケーション開発できるMCUと理解しています。
※CMSIS:Cortex Microcontroller Software Interface Standardは、コチラの2章などを参照してください。

これで弊社も、競合他社と同じ土俵でルネサスARMコアMCUを使える可能性がでてきました。

RAファミリの開発環境

RAファミリの開発環境(出典:RAファミリパンフレット)
RAファミリの開発環境(出典:RAファミリパンフレット)

RAファミリパンフレットによると、IDEは、e2 studio(CS+はありません)、エミュレータは、Segger J-Linkまたは、E2エミュレータ Liteです。

例えば、Cortex-M4/48MHz/Flash:256KB/RAM:32KBの評価ボード:EK-RA4M1の概要が下記です。

EK-RA4M1 MCU 評価キット
EK-RA4M1 MCU 評価キット

Mouserで¥4,539で購入可能です。他社同様オンボードエミュレータですが、Arduinoコネクタを持っていません。価格も、後発なのに他社比、高い気がします😥。

RAファミリと競合他社比較

Cortex-Mコア、内蔵周辺回路、開発環境、評価ボード、日本語技術資料の5点から、ルネサスRAファミリを、競合他社ARMコアMCUと3段階(A/B/C)評価しました。

Cortex-Mコア=A、内蔵周辺回路=A、開発環境=B、評価ボード=C、日本語技術資料=C → 総合評価=B

総合評価Bは、普通レベルということです。個別評価結果が下記です。

Cortex-M4とM23/33コア選択や、タッチセンサ等の内蔵周辺回路は、後発なので当然ルネサスの市場調査結果によるものと思われ、A評価としました。IoTエッジMCUでは、これらコアや周辺回路が必須だと筆者も思います。
※コアと周辺回路は、現在、弊社注力中のCortex-M4コアテンプレート開発とCypress)PSoC 4 CapSenseテンプレート(開発中)に傾向が一致しています。

開発環境は、多機能すぎるe2 studioなのでBです(A評価は、NXP)MCUXpressoTI)CCS Cloud)。

評価ボードは、Arduinoコネクタなしで高価なためCです(A評価は、NXP)LPCXpressoやSTM)Nucleo32)。

日本企業のルネサスですが、RAファミリ動画などは英語です。重要技術資料も英語が多く、日本語資料はC評価です(A評価は、STM)。
※ソフトウェア開発者が、日本語資料にこだわること自体、時代錯誤、時代遅れかもしれません。しかし、イタリア+フランス企業のSTM日本語翻訳資料は、内容、和訳ともに優秀です。ルネサス技術資料は、これらと比べると低評価と言わざるを得ません。

総合評価Bですので、評価ボード:EK-RA4M1入手は、ペンディングとします。ルネサスRAマイコンを、本ブログへ追加した場合、ブログカテゴリと目標とする生産物は、下図になります。

また、2番目に示したターゲット市場図から、従来MCU とIoTエッジMCUとの境界が、Cortex-M3コアの可能性が見えてきました。この境界も追加しました。

ブログカテゴリと生産物(従来MCUとIoT MCU境界追加)
ブログカテゴリと生産物(従来MCUとIoT MCU境界追加)

筆者は、従来MCUは、IoTエッジのさらに外側、つまりIoT MCUのフロントエンドで機能し、Cortex-M4ソフトウェアの一部流用や活用により生産性が高く、しかも、エッジのカスタムニーズへも柔軟に対応するMCUへ発展すると思います。ARM Cortex-Mxコア間は、ソフトウェア流用が可能です(次回、詳細説明予定)。

ルネサスは、インターシルやIDT買収でMCUアナログフロントエンドを強化したはずです。しかし、新発売RAファミリに、これら買収技術は見当たらず、期待のSynergy効果も具体的には不明です(内蔵周辺回路の静電容量タッチセンサ、アナログに見えると期待)。

残念ながら現時点では、筆者には、RAファミリが魅力的なARMコアIoTエッジMCUとは思えません。今後に期待します。