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評価ボードなどが当選するかもしれません。

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特徴を活かす部分は、共通部分へ特徴サンプルコードを追加する方法で実現できれば嬉しいと考えています。構想段階ですが、詳細は今後投稿します。

STM32CubeIDE/MX Major Release

2021年7月19日、STマイクロエレクトロニクスのMCU統合開発環境が、STM32CubeIDE v1.7.0とSTM32CubeMX v6.3.0へ更新されました。Major releaseです。開発済みMCUのSTM32CubeMX設定を、簡単に別ターゲットMCUへ移植する機能を解説します。

Major Release

STM32CubeIDE(以下、CubeIDE)は、ベースのEclipse IDE 更新に追随し年数回更新があります。今回のCubeIDE v1.7.0更新内容に、特に気になる点はありません。

一方CubeIDE付属コード生成ツール:STM32CubeMX v6.3.0(以下、CubeMX)には、開発済みMCUのCubeMX設定を、別MCUや別シリーズMCUへ簡単に移植する機能があります。移植性の高いHAL(Hardware Abstraction Layer)APIと併用すると、開発済みソフトウェアの再利用が簡単で強力なAPI生成ツールになりました。

STM32CubeMX設定移植機能

CubeMXには詳細な英語ユーザマニュアルUM1718 Rev35(全368ページ)があり、p1に主要機能説明があります。本ブログでもCubeMXコード生成機能の使い方やその重要性、STM32F0からF1へのソフトウェア移植方法などを何度か紹介してきました(検索窓に「STM32CubeMX」と入力すると関連投稿がピックアップされます)。

従来投稿は、MCUのCubeMX設定を、ターゲットMCUへ各項目を見ながら手動移植する方法でした。この方法は、予めターゲットMCUとの互換性が解っている場合や、移植周辺回路が少ない場合には有効です。

しかし、MCUの種類が増え、別シリーズMCUへ、または多くの周辺回路設定を個別に移植したい場合は、事前チェックは面倒です。そんな時に役立つ2機能が、UM1718 p1太文字記載の下記です。

  • Easy switching to another microcontroller
  • Easy exporting of current configuration to a compatible MCU

どちらもCubeMX画面のPinout & Configurationタブ選択、Pinoutプルダウンメニュー>List Pinout Compatible MCUs (Alt-L)をクリックすると、Full Compatible/Need Hardware change MCUが一覧表で表示されます。

List pinout compatible MCUs
List pinout compatible MCUs

STM32G0xテンプレート例

販売中STM32G0xテンプレートで使用中の汎用MCU:STM32G071RB(Cortex-M0+/64MHz、Flash/128KB、RAM/36KB)の例を示します。これは、評価ボードNUCLEO-G071RB搭載MCUです。

STM32G071RB Full and Partial match MCU List
STM32G071RB Full and Partial match MCU List

評価ボード搭載のLQFP64パッケージでフィルタ設定すると、青色:完全互換の汎用STM32G0シリーズMCUが12アイテム、黄色:一部ハードウェア変更が必要な低電力STM32L0シリーズMCUが17アイテムリストアップされます。

例えば、FlashやRAMを増量したい場合には、STM32G0B1RBへ開発ソフトウェアがそのまま移植できることが解ります。また、より低電力化したい場合には、STM32L071RBへも移植可能です。あとは、ターゲットMCUを選択し、STM32G0xテンプレートのCubeMXプロジェクト設定を全て移植するか、または一部周辺回路のみを移植するかの選択も可能です。

つまり、開発済みソフトウェアを別MCUへ移植する際に、容易性(完全互換/一部HW変更)と方向性(大容量化/低電力化など他MCUシリーズ適用)を評価でき、かつ、ターゲットMCU選択後は、ダイアログに従って操作すれば、CubeMX設定全て、または周辺回路毎にターゲットMCUへ自動移植ができる訳です。

CubeMX設定の移植後は、ターゲットMCU上で通常のようにコード生成を実行すれば、周辺回路初期設定や動作に必要となる関数群の枠組みが作成されます。その枠組みへ、STM32G0xテンプレートのHAL API開発済みソフトウェアをコピー&ペーストし、ターゲットMCUへのソフトウェア移植が完了です。

汎用MCUとHAL APIプロトタイプ開発

最新メインストリーム(汎用)プロトタイプ開発イメージ
最新メインストリーム(汎用)プロトタイプ開発イメージ

CubeMX設定の自動移植が簡単なことは、前章まででご理解頂けたと思います。

前例STM32G0xテンプレート開発ソフトウェアの移植可能なMCU数が12+17=29と大きいのは、汎用MCUとHAL APIを使ったソフトウェア資産だからです。

最新IoT MCU開発でも、STM32G0/G4シリーズなどの移植性が高い汎用MCU(=メインストリームMCU)とHAL APIを使って主要機能をプロトタイプ開発し、CubeMX移植機能を使ってターゲットIoT MCUへ移植すれば、最新IoT MCUの差分機能開発に集中できます。

つまり、「汎用MCUとHAL API利用のプロトタイプ開発は、他MCUへの移植性が高く、汎用との差分開発に集中できる高い生産性」をもたらす訳です。

※STM32G0/G4シリーズは、新プロセスで従来汎用STM32F0/F1/F3シリーズを高速・低電力化・セキュリティ強化した新しい汎用MCUです。コチラの関連投稿や、STM32U5発表と最新IoT MCU動向を参照してください。

STM32G0とG4のセキュリティ対応(出展:STM32 Security対応表に加筆)
STM32G0とG4のセキュリティ対応(出展:STM32 Security対応表に加筆)

まとめ

STマイクロMCU統合開発環境が、STM32CubeIDE v1.7.0とSTM32CubeMX v6.3.0へMajor Releaseされました。

開発済みMCUのCubeMX設定を、別MCUへ簡単に移植する機能があり、移植性が高い汎用(メインストリーム)MCUとHAL APIによるプロトタイプ開発ソフトウェア資産を、効率的に他MCUへ再活用できる統合開発環境になりました。

補足:NUCLEO評価ボードのユーザLED不足対策

汎用MCUとHAL APIプロトタイプ開発には、低価格で入手性も良いNUCLEO評価ボードが適しています。

但し、NUCLEO評価ボードのユーザ緑LED(LD2)とSW(B1)が、各1個と少ない点が残念です。CubeIDEサンプルプログラムは、単機能サンプル動作なので各1個でもOKですが、少し複雑な例えばRTOS並列動作確認などには、特にLEDが不足します。

お勧めは、赤LED 2個、SW 1個が実装済みのArduinoプロトタイプシールドです。残念ながらNUCLEO評価ボードSW(B1)は操作できないのでシールドSWで代用します。評価ボードArduinoピンとの配線や、付属ブレッドボードへの回路追加も簡単です。ST以外の様々なMCUベンダのArduinoコネクタ付き評価ボードでも使えます。

NUCLEO評価ボードLED不足対策のArduinoプロトタイプシールド。付属ブレッドボードに回路追加も容易。
NUCLEO評価ボードLED不足対策のArduinoプロトタイプシールド。付属ブレッドボードに回路追加も容易。

NUCLEO-G474REとArduinoプロトタイプシールドの使用例を示します。ArduinoプロトタイプシールドのLED1は、Lpuart受信、LED2は、SW操作、評価ボードのLD2は、1s/500ms/40ms点滅の動作確認に使っています。

STM版RTOSアプリケーションテンプレート構想もこの環境で検討中です(関連投稿:STM32RTOS開発3注意点(前編)、(後編))。

組込みMCU開発お勧めブログ

組込み開発全般に参考となる英語ブログを紹介します。特にRTOS関連記事は、内容が濃く纏まっていて、実践開発時の示唆に富んでいます。

JACOB's Blog
JACOB’s Blog

RTOSカテゴリー

組込み開発コンサルティングも行うBeningo Embedded社は、高信頼の組込みシステム構築と低コスト・短時間での製品市場投入を目標としています。この目標に沿って、複雑な組込み開発概念を、シンプルに解り易く解説しているのが、同社ブログです。

特に、RTOSカテゴリーは、FreeRTOS開発方法を整理する時、参考になります。最新RTOSの3投稿をリストアップしたのが下記です。

2021年5月4日、A Simple, Scalable RTOS Initialization Design Pattern
2020年11月19日、3 Common Challenges Facing RTOS Application Developers
2020年10月29日、5 Tips for Developing an RTOS Application Software Architecture

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

開発中の弊社FreeRTOSアプリケーションテンプレートは、「ベアメタル開発経験者が、FreeRTOS基礎固めと、基本的FreeRTOSアプリケーション着手時のテンプレートに使えること」が目的です。従って、必ずしも上記お勧めブログ指針に沿ったものではなく、むしろ、ベアメタル開発者視点でFreeRTOSを説明しています。

弊社テンプレートを活用し、FreeRTOSを理解・習得した後には、より実践的なRTOS開発者視点で効率的にアプリケーションを開発したいと思う方もいるでしょう。もちろん、弊社FreeRTOSアプリケーションテンプレートからスタートすることを弊社は推薦しています。

しかし、Windows上でアプリケーション開発する時は、初めからWindows作法やGUIを前提として着手するように、RTOS上でMCUアプリケーションを開発する時も、従来のベアメタル開発に固執せず、RTOSオリエンテッドな手法で着手するのも1方法です(ベアメタル経験が少ないWindows/Linux世代には、親和性が高い方法かもしれません)。

推薦ブログは、この要望を満たすRTOS手法が豊富に掲載されています。

また、上記RTOS関連3ブログを(掲載図を「見るだけでも良い」ので)読んで、ピンとこなければ、RTOS理解不足であると自己判断、つまり、リトマス試験紙としても活用できます。

問題整理と再構築能力

ベアメタル開発経験者が、RTOSを使ってMCUアプリケーション開発をするには、従来のBareMetal/Serial or Sequential動作からRTOS/Parallel動作へ、考え方を変えなければなりません。弊社FreeRTOSアプリケーションテンプレートは、この考え方を変えるための橋渡しに最適なツールです。

橋を渡りきった場所が、RTOSの世界です。RTOS環境での組込み開発問題を整理し、シンプルに解決策を示すには、知識や経験だけでなく、問題再構築能力が必要です。JACOB’S Blogをご覧ください。RTOSに限らず組込み関連全般の卓越した問題再構築能力は、掲載図を見るだけでも良く解りますよ😄。