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ファミリクラウド開発環境提供

ルネサスは、クラウド上のMCU開発環境でRAファミリの開発ができる「クイックコネクトスタジオ」の提供を開始しました(2023年3月1日)。

ブラウザのみで使えるクラウド開発結果を、ローカル環境のe2 studioへダウンロード可能でRAファミリプロトタイプ開発の早期立上げに役立ちます。

クラウド開発の利用手順

クイックコネクトスタジオ利用手順(EK-RA2E1開発例)
クイックコネクトスタジオ利用手順(EK-RA2E1開発例)

クラウドMCU開発環境クイックコネクトスタジオの利用手順を、簡単にまとめます。

  1. クラウドクイックコネクトスタジオへログイン
  2. 画面右側のGETTING STARTに沿って操作
  3. 新規プロジェクト作成→RAボード選択→PMODモジュール選択→ビルド→開発Zipファイルをローカル環境へダウンロード
  4. クラウド開発Zipファイルをローカル環境e2 studioへインポート
  5. 手元に用意したRAボード+PMODモジュールで実動作確認

Zipファイルには、ハードウェア選択肢のRAボードとPMODモジュールのベアメタル開発サンプルコードが生成済みです。1~3で使うツールはブラウザのみ、新規プロジェクト作成からZipファイルダウンロードまで数分でできます。

クイックコネクトスタジオのクラウドハードウェア構成と同じものをローカル側に用意すれば、直に動作するサンプルコードが僅か数分で入手できる訳です。

クイックコネクトスタジオ利用により、プロトタイプ開発の早期立上げが実現可能です。

EK-RA2E1、EK-RA6M4評価ボード対応中

4月5日現在、クイックコネクトスタジオが対応しているのは、EK-RA2E1EK-RA6M4の2種RAファミリ評価ボードです。PMODモジュールは、通信関連がBluetoothとWi-Fi、センサ関連がフローセンサと湿度・温度センサです。

関連投稿:PMODモジュール

これらは、IoT製品向きの品揃えです。現在のハードウェア選択肢は少数ですが、今後、品揃えも豊富になるでしょう。

また、ベアメタル開発だけでなくRAファミリの得意分野FreeRTOSやAzure利用のRTOS開発や、セキュリティ強化TrustZoneへも、クイックコネクトスタジオが対応する可能性があります。

注)Cortex-Mxコアに比べTrustZoneなどのセキュリティ強化Cortex-M33/23コアがRAファミリ特徴。

サンプルコードの新しい入手方法

MCU利用の早期製品化には、プロトタイプ開発が必須です。

ベンダ各社は、多くのサンプルコードを提供しプロトタイプ開発支援を行っています。しかしながら、提供サンプルコード数が多いため、どのサンプルコードを利用すれば良いか開発者が迷う欠点もあります。

クイックコネクトスタジオは、評価ボードや使用センサ、通信方法をGUIで選択しながらMCUハードウェアが構築でき、構築ハードウェアの最新サンプルコードをクラウド上で簡単に作成できます。

つまり、プロトタイプ開発に適すサンプルコードを、間違わずに簡単入手が可能です。また、プロトタイプの仕様が変更になっても、クラウド上で「クイック」に対応できます。

さらに、RTOS開発では、AWSやAzureの接続先、TrustZone利用有無、OTA更新有無など製品化の選択肢がベアメタル開発に比べより多くなります。

注)AWS:Amazon Web ServicesはFreeRTOS、Azure:MicrosoftクラウドはAzure RTOS利用。OTA:Over The Airは、IoT製品ソフトウェア更新をクラウド経由で行うこと。

クラウド上で、これら接続先や利用有無に応じた必須ライブラリを自動的にZipパッケージ化してくれれば、ローカル開発環境の準備ミスも防げます。

クイックコネクトスタジオは、プロトタイプサンプルコードの新しい入手方法になると期待できそうです。

RAベアメタルテンプレート販売中

RAベアメタルテンプレートのP1
RAベアメタルテンプレートのP1

ローカル環境でのFSP利用RAファミリベアメタル開発は、弊社RAベアメタルテンプレート(税込1000円)をお勧めします。RAファミリの低価格で入手性も良いFPB-RA6E1FPB-RA4E1評価ボードと、Baseboardで動作確認済みです。

添付資料には、RAファミリ開発の鍵となるFSPの使い方やe2 studioのTipsも掲載済み、FSPサンプルコードを活用できる実務直結テンプレートです。

RAファミリ開発の早期習得ができ、添付資料P1~P3は、テンプレートサイトから無料ダウンロードも可能です。

ご購入、お待ちしております。



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開発環境へのステップアップ更新と考えます。


IOWN 1.0提供開始

IOWN展開(出展:NTTサイト)
IOWN展開(出展:NTTサイト)

ベストエフォートのインターネットに対し、NTT専用線による品質保証:ギャランティーサービスIOWN(Innovative Optical and Wireless Network:アイオン)1.0が2023年3月16日から開始されました。

個人利用には価格(100Gbps月額料金198万円、初期設備費3万円)が高すぎますが、2030年以降のIOWN4.0では、インターネット並みの料金で利用できるかもしれません。

IOWN対インターネット

インターネットは、多重共用ネットワークです。従って、多重されたトラフィックにより自分のデータ遅延揺らぎは不可避、さらに強固なセキュリティも必須です。

そのセキュリティ対策は、ユーザみずから行う必要があります。対して、専用線は、ネットワーク側が通信品質を保証するなどセキュリティレベルは高く、ユーザのセキュリティ対策は、インターネットに比べると楽になると思います。

問題は、利用価格です。

IOWN専用線では、共用インターネットでは困難な魅力的IOWNサービス(後述)が提供され、かつ、APNと光電融合デバイスにより価格を抑え、かつ、将来の限界を超える特徴、つまり、低遅延、大容量、低消費電力(後述)があります。

ユーザセキュリティ費用、万一のセキュリティリスクも含め、専用線IOWNと共用インターネット、どちらが安全、安心で利用価格が安いのか、費用対効果検討が必要だと思います。

IOWNサービス

IOWNで期待されるサービスの実証記事がコチラです。

ロボットや自動車の遠隔制御、遠隔医療、e-スポーツや遠隔地間を繋ぐ同時演奏会など、大容量で低遅延、揺らぎ無しのIOWNサービスが提供されます。

IOWN特徴=揺らぎ無し低遅延+大容量+低消費電力

NTT技術ジャーナル2023.1によると、IoTによるデータドリブン社会は、膨大なデータ量やデータ処理サーバの膨大な電力消費増大に対して、限界が来るそうです。

この課題にAPN(All Photonic Network)サービスと、光電融合デバイスをボード接続→チップ間→チップ内と融合度を上げ、さらに、このデバイスをサーバへも適用することで、大幅な使用電力削減が可能となります(本稿最初の図参)。

IOWN4.0の目標は、電力効率100倍、伝送容量125倍、エンドエンド遅延1/200です。

IOWN特徴(出展:NTTサイト)
IOWN特徴(出展:NTTサイト)

まとめ

2030年度以降のIOWN4.0とインターネットの利用価格がどの程度になるかは、今のところ不明です。

それでも、IOWN1.0の利用決定会社/組織の記事(2023年3月3日、EE Times)を見ると、既に多くの有力企業が参加しています。

揺らぎ無し低遅延大容量IOWNが、新しいIoTネットワークサービスを生み、メタバースを推進するのは確かだと思います。IoT MCU開発者も注目しておく必要があります。

関連投稿:世界規模の宇宙センシング次世代ネットワークIOWN

世界規模の宇宙センシング技術

次世代ネットワークIOWN(アイオン)で紹介した、低軌道人工衛星と無線免許不要IoTデバイス(LPWA:Low Power Wide Area端末)の宇宙センシング実証実験が2024年度に予定されています。

この宇宙センシング技術は、世界中で低コストIoTデータの衛星センシングを可能にします。

低コストIoTデータ衛星センシングプラットフォーム

衛星センシングプラットフォームとLPWA端末(出展:NTT技術ジャーナル2022.10)
衛星センシングプラットフォームとLPWA端末(出展:NTT技術ジャーナル2022.10)

従来の世界規模データセンシングは、専用衛星や免許が必要な専用無線周波数を使うため高価です。

NTTとJAXA(宇宙航空研究開発機構)が2024年度打ち上げ予定の革新的衛星技術実証4号機は、地上用のLPWA端末の免許不要無線周波数:920MHz帯、送信電力:0.1W程度を介して低軌道衛星と通信します。

この通信により、LPWA端末の小容量データを世界規模で収集できる低コストIoT衛星センシングプラットフォームの実証実験が可能です。

LPWA端末

LPWAは、低消費電力、低ビットレート、広域カバレッジが特徴で、その端末の多くは無線免許が不要です。

この地上用LPWA端末を、通信網が無い山間部や河川、海上など世界中のあらゆる場所へ設置しても、衛星を介したグローバルなIoTデータセンシングが可能になります。

気象データ収集や防災対策など多くの新しいIoTサービスへ発展する可能性は大きいでしょう。

技術実証イメージ(出展:NTT 2023年2月10日)
技術実証イメージ(出展:NTT 2023年2月10日)

地上のLPWA端末と低軌道衛星との通信は、シンプルです。LPWA端末の測定データは、衛星搭載メモリへ一時蓄積され、衛星の基地局上空の飛来タイミングで蓄積データが一括ダウンロードされます。

LPWA端末には、衛星からのコマンドによる再起動処理などが必要になるそうです。

宇宙ビジネス

多くのIoTセンサを組込んだスマートホームICTインフラへも応用できそうです。スマホ衛星通信も可能な時代です。ソニーは、2050年50兆円市場との試算もある地球みまもりプラットフォーム向けエッジAIカメラセンサを開発しました。

地球みまもりプラットフォームコンセプト(出展:ソニーR&Dセンタ)
地球みまもりプラットフォームコンセプト(出展:ソニーR&Dセンタ)

2030年実現を目指すIOWN(Innovative Optical and Wireless Network)により、従来通信網制約や国境の枠を超えた新しいIoTサービスや宇宙ビジネスが期待できそうです。

IoT MCU開発者は、革新的衛星技術実証4号機の打ち上げも注目しましょう。



8/16ビットMCU置換えを狙う32ビットMCU

半導体不足が続いています。対策として、8/16ビットMCU置換えを狙った、汎用低コストの新しい32ビットMCUを2種紹介します。

STマイクロ:STM32C0シリーズ

STマイクロ、2023年1月12日、低価格なSTM32C0シリーズ(Cortex-M0+:48MHz、Flash:16K/32K、RAM:6K/12K)を発表。

STM32C0とSTM32G0の位置づけ(出展:STMサイト)
STM32C0とSTM32G0の位置づけ(出展:STMサイト)

ルネサス:RA2グループ

ルネサス、2021年10月13日、省スペース低消費電力向けにRA2E2グループ(Cortex-M23:48MHz、Flash:64K、RAM:8K)を、RA2シリーズへ追加。

RA2E2評価ボードのMCU基板アートワーク
RA2E2評価ボードのMCU基板アートワーク

8/16ビットMCU置換え最新32ビットMCU特徴

  • 少数ピン/小型パッケージ
  • 小容量Flash/RAM
  • 低消費電力
  • 低価格(8/16ビットMCUと同等)

8/16ビットMCU置換えを狙う32ビットMCU特徴です。置換え32ビットMCUと言えば、古くからNXP:LPC800シリーズが有名なので、本稿は省略しました。

動作周波数が高くても、Sleepなどの超低消費電力動作時間も長く、実働消費電力は驚くほど小さくなります。また、古い8/16ビットMCUよりも入手性に優れます。

置換え32ビットMCUメリット

旧MCU開発は、周辺回路ドライバなども自主開発することが多く、ドライバとアプリケーションの境界も開発者毎にバラバラでした。最新MCU開発は、ドライバはベンダHAL API生成ツールが自動生成します。

その結果、開発者は、アプリケーション開発に集中でき、ソフトウェア開発費も安くなります。

※HAL API:MCUハードウェアに依存しない(Hardware Abstraction Layer)API。シリーズ/グループが異なっても開発アプリケーション流用が容易。

既に実装済みの旧8/16ビットMCU機能を最新32ビットMCUへ置換える時も、この最新MCU開発環境が使えるため、効率的なソフトウェア開発が可能です。更に、置換えだけでなく、新機能追加、IoTやセキュリティなど高機能アップグレートも容易です。

最新汎用32ビットMCUは、半導体不足にも有効です。紹介したSTマイクロ、ルネサスいずれも、上位MCUへの置換えが可能な基板アートワークができるピン配置を採用しています。

つまり、IoT時代に合わせた開発スキルやソフトウェア発展性があり、基板ハードウェア持続性も期待できるなど、8/16ビットMCU置換え汎用32ビットMCU採用には、多くのメリットがあります。

STM32G0テンプレート、RAベアメタルテンプレート

STM32C0シリーズ開発には、STM32G0Xテンプレート、RA2グループ開発には、RAベアメタルテンプレートがお役に立てます。



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利用RAファミリUARTの使い方

RAファミリ評価ボードFPB-RA6E1PFB-RA4E1FPB-RA2E1などは、MCUのUARTとPCの接続に古いハードウェア知識が必要です。そこで、FPB-RA6E1のUARTとPC接続(USB UART Bridge)を解説し、FSPサンプルコードで動作確認しました。

FSPサンプルコード:sci_uart_fpb_ra6e1_ep

sci_uart_fpb_ra6e1_epのFSP Configuration
sci_uart_fpb_ra6e1_epのFSP Configuration

FPB-RA6E1(Cortex-M33/200MHz、Flash/1MB、RAM/256KB)のUARTとPC接続の公式サンプルコードが、sci_uart_fpb_ra6e1_epです。このFSP (Flexible Software Package)スタックConfigurationが上図です。

簡単に説明すると、FSP UARTスタックを使ってPCとUART(115200bps、8-Non-1)で接続し、Timerスタックを使ってPWMでLED1輝度を変えます。UART受信した1-100値が、PWM設定値です。

つまり、Tera Term経由でPCから1-100を入力すると、評価ボードLED1の輝度がPWM 1-100%で変わります。

sci_uart_fpb_ra6e1_epのreadme.txt
sci_uart_fpb_ra6e1_epのreadme.txt(一部抜粋)

サンプルコード付属readme.txtの上記は、MCUのUARTピンを、どうやってPCのUSBへ接続するかが、開発経験者でも解りにくい箇所です。Windows 7より前の古いMCU開発者なら解るかもしれません。

USB UART Bridge

シリアルポート(出展:ウィキペディア)
シリアルポート(出展:ウィキペディア)

Windows 7以前の古いPCには、RS-232Cコネクタ:シリアルポートが実装済みでした。シリアルポートの用途は、MCUとの通信や、特定アプリのライセンスキーなど多数ありました。

しかし、Windows 7以降、RS-232Cコネクタは消えUSBへと変わりました。

消えたRS-232Cの代わりにUSB経由でMCUと通信を行うのが、USB UART Bridgeです。実績あるデバイスとして、FTDI社のFT232RLが有名でした。

つまり、MCU UART入出力ピンをPCへ接続するには、USB UART Bridge(=USBシリアル変換アダプタ)が必要なことを知っている古いMCU開発者のみreadme.txtが判る訳です。

最近のMCU評価ボードは、USBシリアル変換アダプタとMCUプログラム/デバッグを、1本のUSBで共用しているものが多く、USB UART Bridgeを別途追加し開発する例は稀です。PCのUSBポート数が少なくなってきたからでしょう。

お勧めUSBシリアル変換アダプタ

「FTDI USBシリアル変換」で検索すると、USB 2/3.1や5/3.3V対応など様々なアダプタが、様々な価格で現れます。

殆どの5Vデバイスは、3.3V入力を5V High入力と認識します。それでも、MCUと接続する電圧は、5Vと3.3Vを選択できる方が無難です。High誤認識を防ぐことや、5V耐性が無いMCUピンでも接続できるからです。

低価格で入手性も良く、5/3.3V選択ができるお勧めのUSB UART Bridgeが、FTDI FT232RL USB-TTLシリアル変換アダプタ3個セットです。基板上にスルーホールがあるため、MCU UARTピンとの直接接続も簡単です。

お勧めハードウェアループバックテスト

低価格で3個入り品質に不安な方は、購入後、ハードウェアループバックテストをお勧めします。

ハードウェアループバックテストとは、デバイスの送信:TXDと受信:RXDを結線し、送信データが受信データに現れるかをハードウェア的にテストすることです。このテストにより、購入アダプタが、正常動作することを確認します。

Tera Termを接続すれば、TXD LED、RXD LED動作も確認できます。また、Windows 11 22H2は、お勧めFTDI FT232RL USB-TTLを、追加ドライバなしでUSB Serial Portと認識することも分かります。

ハードウェアループバックテスト
ハードウェアループバックテスト

sci_uart_fpb_ra6e1_ep動作確認

前章までのハードウェア知識を使って、評価ボード:FPB-RA6E1(搭載RA6E1 MCUは、VCC:2.7~3.6 V動作)とシリアル変換アダプタ:FTDI FT232RL USB-TTL(3.3V選択)、PC USBを接続しました。

サンプルコード:sci_uart_fpb_ra6e1_epが示すMCU UART入出力ピンとUSB UART Bridge TXD/RXD接続、PC Tera Termの1-100入力による評価ボードLED1の輝度変化動作が確認できます。

sci_uart_fpb_ra6e1_epの動作確認
sci_uart_fpb_ra6e1_epの動作確認
sci_uart_fpb_ra6e1_epのTera Term入力(橙)と出力(白)
sci_uart_fpb_ra6e1_epのTera Term入力(橙)と出力(白)
sci_uart_fpb_ra6e1_epのFPB-RA6E1とシリアル変換アダプタの結線
sci_uart_fpb_ra6e1_epのFPB-RA6E1とシリアル変換アダプタの結線

Tips:上記ArduinoコネクタのD1 TX (P109)、D0 RX (P110)へMCU UART使用ピンを変えるには、FSP UARTスタックの利用Channel 0をChannel 9へ変更すればOK。

ルネサスRAファミリ評価ボードは、本稿で示したMCU UART用にUSB 1本、e2 studioプログラム/デバッグ用に別のUSB 1本、合計2本のUSBが必要です(PC側もUSB 2ポート必要)。

このe2 studio プログラム/デバッグ用USBの通信ツールが、J-Link RTT Viewerです。sci_uart_fpb_ra6e1_epでは、FSPバージョンやsci_uart_fpb_ra6e1_ep操作方法が示されます。

sci_uart_fpb_ra6e1_epのJ-Link RTT Viewer
sci_uart_fpb_ra6e1_epのJ-Link RTT Viewer

次投稿:ベアメタルサンプル → RTOSタスク化

サンプルコード:sci_uart_fpb_ra6e1_epは、FSP UARTスタックのベアメタル利用例で、良くできています。ベアメタルに限らず、RTOSへの応用範囲も広いです。

そこで次回は、ベアメタルサンプルコード:sci_uart_fpb_ra6e1_epを、RTOSのタスク化する方法を投稿する予定です。この方法により、多くの公式サンプルコードを活用し、効率的にRTOS開発が行えます。

FSP利用関連投稿:FSP利用FreeRTOSアプリの作り方FSP利用FreeRTOS/ベアメタルアプリ起動方法



持続可能MCU開発

半導体不足やサプライチェーン変化など様々な外部要因により、やむをえず開発中のMCUデバイスが変わる場合があります。MCU開発を持続可能にする1案を示します。

MCUと制御対象分離

MCUデバイスが例え変わっても、MCUと制御対象間のインタフェースが同じなら開発の持続は可能です。

もちろん開発ツールや制御APIは、MCUベンダやデバイスで異なります。しかしながら、開発した制御シーケンスや注意点などの取得済み開発ノウハウは、そのまま新しいMCUデバイスへも適用できます。

簡単に言うと、頭(MCU)と手足(制御対象)、目などのセンサ入力を分離し、万一の際に、頭(MCU)交換が可能な分離インタフェースを使ってMCU開発することです。

本稿はMCU互換性に主眼を置きますが、分離インタフェース採用で制御対象やセンサも交換可能です。

つまり、機能単位の高性能化、低価格化も分離インタフェース導入で容易になります。

分離インタフェース多数派

PMODインタフェースとPMODモジュール(出展:RS DesignSpark)
PMODインタフェースとPMODモジュール(出展:RS DesignSpark)

MCUと制御対象を分離するインタフェースも色々あります。例えば、PMODです。

センサやアクチュエータから成る既製PMODモジュールを、Lego™ブロックのように連結し制御対象の機能追加ができます。連結実現のため、I2CやSPI利用が基本です。

別例が、Arduinoです。

多くの主要ベンダMCU評価ボードにArduinoコネクタが採用中です。右下に示すように、デジタル入出力ピン、アナログ入力ピンなど、ピンが物理的に機能分離しています。

ArduinoコネクタコンパチブルMCU評価ボード例
ArduinoコネクタコンパチブルMCU評価ボード例

既製Arduinoモジュールも多く、しかも安価に入手できます。また、機能別ピンのため、手持ちセンサなどを接続し動作を試すのも簡単です。

元々はArduinoやRaspberryなどのMPU(Micro Processor Unit)向け分離インタフェースでしたが、シンプルで使い易いためMCU評価ボードにもArduinoコネクタ適用例が多く、分離インタフェースの多数派となりました。

Tips:MCU端子は、複数機能から選択が可能です。そこで、Arduinoピン機能を優先して選択し、この選択した端子から先に使用すると、MCU交換時の互換性が高まります。

Arduinoプロトタイプシールド

Arduinoモジュールは、別名シールドと呼ばれます。シールドを複数スタック接続し機能追加も可能です。

MCU評価ボードのArduinoコネクタにスタック接続し、付属する小型ブレッドボード上で簡単な回路も追加できるプロトタイプ向けのシールドが、Arduinoプロトタイプシールドです。

Arduinoプロトタイプ シールド
Arduinoプロトタイプ シールド

このシールドには、2個のLEDと1個のSWが実装済みです。MCU評価ボードへ、LEDやSWを簡単に追加でき、手持ち部品などを使ってプロトタイプ開発する場合に最適だと思います。

評価ボードへArduinoプロトタイプシールドを追加しスレッド毎にLED点滅中
評価ボードへArduinoプロトタイプシールドを追加しスレッド毎にLED点滅中

まとめ:持続可能MCU開発

世界平和やサプライチェーン変化などの外部要因により、開発中のターゲットMCUデバイスやベンダが変わる場合がありえます。

万一MCUデバイスが変わっても、MCU開発を持続可能にするため、各ベンダMCU評価ボードに多数採用のArduinoコネクタを使ったMCUと制御対象分離構成を示しました。

Arduinoプロトタイプシールドを、プロトタイプMCU開発に適す使用例として示しました。



技術者と世界平和

2022年最後の投稿、つまり、週番号が追加されたMint 21.1 MATE Week 52の金曜投稿です。

Mint 21.1 MATEはカレンダに週番号が追加
Mint 21.1 MATEはカレンダに週番号が追加

ロシアのウクライナ侵略から始まった2022年は、世界平和と技術者の関連性を強く感じました。Rapidusなどの半導体新会社設立や、クリエイタ的エンジニア米中対立も根底には平和への危機感があると思います。

技術者の役割も、セキュリティやフィッシング詐欺など攻撃対策の比重が増すかもしれません。インターネットでさえ、グローバルオープンからブロック化の兆しが見えます。IoT MCUやMPU/CPU、Windowsなどの技術者開発基盤もまた、セキュリティがトリガになり発展しそうです。

個人的には、ケアレスミスの多い年でした。何らかの追加対策(?!)が必要と感じています。

さて、本年も本ブログ、および、弊社テンプレートをご利用頂きありがとうございました。
また、各位から頂いた様々なアドバイス、この場を借りてお礼申し上げます。ありがとうございました。

皆様、よいお年をお迎えください。